@spacesync/client 0.1.10 → 0.1.11

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 (123) hide show
  1. package/dist/analog-clock-picker.js +3 -11
  2. package/dist/analog-clock-picker.js.map +1 -1
  3. package/dist/booking-schedule-calendars.js +5 -11
  4. package/dist/booking-schedule-calendars.js.map +1 -1
  5. package/dist/booking-space-layout-picker.js +8 -11
  6. package/dist/booking-space-layout-picker.js.map +1 -1
  7. package/dist/button-Iem7kbk0.d.ts +16 -0
  8. package/dist/chat-stick-to-bottom.js +0 -10
  9. package/dist/chat-stick-to-bottom.js.map +1 -1
  10. package/dist/chunk-2IZODKTR.js +116 -0
  11. package/dist/chunk-2IZODKTR.js.map +1 -0
  12. package/dist/chunk-2TT2ZGMT.js +21 -0
  13. package/dist/chunk-2TT2ZGMT.js.map +1 -0
  14. package/dist/chunk-3MAGTCCN.js +192 -0
  15. package/dist/chunk-3MAGTCCN.js.map +1 -0
  16. package/dist/chunk-56H7UFAW.js +237 -0
  17. package/dist/chunk-56H7UFAW.js.map +1 -0
  18. package/dist/chunk-5HOK5JHR.js +60 -0
  19. package/dist/chunk-5HOK5JHR.js.map +1 -0
  20. package/dist/{chunk-H7EX6B6N.js → chunk-5NOKULX2.js} +5 -4
  21. package/dist/chunk-5NOKULX2.js.map +1 -0
  22. package/dist/chunk-6VJQIBC3.js +715 -0
  23. package/dist/chunk-6VJQIBC3.js.map +1 -0
  24. package/dist/chunk-BQVMO33N.js +133 -0
  25. package/dist/chunk-BQVMO33N.js.map +1 -0
  26. package/dist/chunk-CXXOKCLJ.js +37 -0
  27. package/dist/chunk-CXXOKCLJ.js.map +1 -0
  28. package/dist/chunk-FN4BWFDX.js +43 -0
  29. package/dist/chunk-FN4BWFDX.js.map +1 -0
  30. package/dist/chunk-HRHDOLWU.js +62 -0
  31. package/dist/chunk-HRHDOLWU.js.map +1 -0
  32. package/dist/chunk-HZB2EHEH.js +216 -0
  33. package/dist/chunk-HZB2EHEH.js.map +1 -0
  34. package/dist/chunk-IBGGQXTH.js +21 -0
  35. package/dist/chunk-IBGGQXTH.js.map +1 -0
  36. package/dist/chunk-JCEOU7BU.js +128 -0
  37. package/dist/chunk-JCEOU7BU.js.map +1 -0
  38. package/dist/{chunk-RV5PMZYZ.js → chunk-MBZAYH5D.js} +4 -18
  39. package/dist/chunk-MBZAYH5D.js.map +1 -0
  40. package/dist/chunk-NWVNYKND.js +153 -0
  41. package/dist/chunk-NWVNYKND.js.map +1 -0
  42. package/dist/chunk-OV5ODANJ.js +224 -0
  43. package/dist/chunk-OV5ODANJ.js.map +1 -0
  44. package/dist/chunk-PPMJZVR4.js +37 -0
  45. package/dist/chunk-PPMJZVR4.js.map +1 -0
  46. package/dist/{chunk-CKCXQBHQ.js → chunk-RC5SWZPB.js} +5 -4
  47. package/dist/chunk-RC5SWZPB.js.map +1 -0
  48. package/dist/chunk-SHMKDGFF.js +75 -0
  49. package/dist/chunk-SHMKDGFF.js.map +1 -0
  50. package/dist/chunk-T3SOBIYA.js +61 -0
  51. package/dist/chunk-T3SOBIYA.js.map +1 -0
  52. package/dist/chunk-TH5RASJS.js +97 -0
  53. package/dist/chunk-TH5RASJS.js.map +1 -0
  54. package/dist/{chunk-LUB7QWGU.js → chunk-VIJ2HWPZ.js} +5 -159
  55. package/dist/chunk-VIJ2HWPZ.js.map +1 -0
  56. package/dist/chunk-VQ63T7CJ.js +22 -0
  57. package/dist/chunk-VQ63T7CJ.js.map +1 -0
  58. package/dist/chunk-XDVGFHK4.js +50 -0
  59. package/dist/chunk-XDVGFHK4.js.map +1 -0
  60. package/dist/chunk-XI4BQY5T.js +188 -0
  61. package/dist/chunk-XI4BQY5T.js.map +1 -0
  62. package/dist/detail-page-header.js +1 -1
  63. package/dist/file-viewer-dialog.js +3 -9
  64. package/dist/file-viewer-dialog.js.map +1 -1
  65. package/dist/floor-switcher.js +5 -9
  66. package/dist/floor-switcher.js.map +1 -1
  67. package/dist/layout-canvas-view.js +8 -11
  68. package/dist/page-list-chrome.js +5 -3
  69. package/dist/page-list-loading.js +5 -3
  70. package/dist/page-list-loading.js.map +1 -1
  71. package/dist/platform-support-message-composer.js +2 -10
  72. package/dist/platform-support-message-composer.js.map +1 -1
  73. package/dist/sidebar-Dzvrjr69.d.ts +85 -0
  74. package/dist/styles/theme.css +52 -2
  75. package/dist/styles/theme.css.map +1 -1
  76. package/dist/theme-appearance-control.js +2 -1
  77. package/dist/theme-appearance-control.js.map +1 -1
  78. package/dist/ui/accordion.d.ts +9 -0
  79. package/dist/ui/accordion.js +4 -0
  80. package/dist/ui/accordion.js.map +1 -0
  81. package/dist/ui/calendar.d.ts +6 -0
  82. package/dist/ui/calendar.js +4 -0
  83. package/dist/ui/calendar.js.map +1 -0
  84. package/dist/ui/carousel.d.ts +22 -0
  85. package/dist/ui/carousel.js +5 -0
  86. package/dist/ui/carousel.js.map +1 -0
  87. package/dist/ui/chart.d.ts +42 -0
  88. package/dist/ui/chart.js +229 -0
  89. package/dist/ui/chart.js.map +1 -0
  90. package/dist/ui/command.d.ts +19 -0
  91. package/dist/ui/command.js +5 -0
  92. package/dist/ui/command.js.map +1 -0
  93. package/dist/ui/context-menu.d.ts +27 -0
  94. package/dist/ui/context-menu.js +4 -0
  95. package/dist/ui/context-menu.js.map +1 -0
  96. package/dist/ui/form.d.ts +27 -0
  97. package/dist/ui/form.js +5 -0
  98. package/dist/ui/form.js.map +1 -0
  99. package/dist/ui/input-otp.d.ts +13 -0
  100. package/dist/ui/input-otp.js +4 -0
  101. package/dist/ui/input-otp.js.map +1 -0
  102. package/dist/ui/menubar.d.ts +28 -0
  103. package/dist/ui/menubar.js +4 -0
  104. package/dist/ui/menubar.js.map +1 -0
  105. package/dist/ui/navigation-menu.d.ts +17 -0
  106. package/dist/ui/navigation-menu.js +4 -0
  107. package/dist/ui/navigation-menu.js.map +1 -0
  108. package/dist/ui/resizable.d.ts +10 -0
  109. package/dist/ui/resizable.js +4 -0
  110. package/dist/ui/resizable.js.map +1 -0
  111. package/dist/ui/sidebar.d.ts +7 -0
  112. package/dist/ui/sidebar.js +9 -0
  113. package/dist/ui/sidebar.js.map +1 -0
  114. package/dist/ui.d.ts +28 -272
  115. package/dist/ui.js +2427 -6
  116. package/dist/ui.js.map +1 -1
  117. package/package.json +5 -1
  118. package/dist/chunk-CKCXQBHQ.js.map +0 -1
  119. package/dist/chunk-F7MU5T46.js +0 -5146
  120. package/dist/chunk-F7MU5T46.js.map +0 -1
  121. package/dist/chunk-H7EX6B6N.js.map +0 -1
  122. package/dist/chunk-LUB7QWGU.js.map +0 -1
  123. package/dist/chunk-RV5PMZYZ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/live-space/floor-switcher.tsx"],"names":[],"mappings":"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","file":"floor-switcher.js","sourcesContent":["import { Check, ChevronDown, Layers, Plus, Trash2 } from \"lucide-react\";\nimport { shellTopBarMutedIconClass, shellTopBarSecondaryButtonClass } from \"../shell/shell-top-bar-chrome\";\nimport {\n Button,\n cn,\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Input,\n Label,\n} from \"../ui\";\nimport { useEffect, useState } from \"react\";\n\nexport interface FloorSwitcherFloor {\n id: string;\n name: string;\n}\n\nexport function FloorSwitcher({\n floors,\n activeFloorId,\n onFloorChange,\n onAddFloor,\n onDeleteFloor,\n}: {\n floors: FloorSwitcherFloor[];\n activeFloorId: string;\n onFloorChange: (floorId: string) => void;\n onAddFloor?: (name: string) => void;\n onDeleteFloor?: (floorId: string) => void;\n}) {\n const activeFloor = floors.find((f) => f.id === activeFloorId) ?? floors[0];\n const [addOpen, setAddOpen] = useState(false);\n const [name, setName] = useState(\"\");\n const canDeleteFloor = Boolean(onDeleteFloor) && floors.length > 1;\n\n useEffect(() => {\n if (addOpen) {\n setName(`Floor ${floors.length + 1}`);\n }\n }, [addOpen, floors.length]);\n\n const handleAdd = () => {\n onAddFloor?.(name.trim() || `Floor ${floors.length + 1}`);\n setAddOpen(false);\n };\n\n return (\n <>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className={cn(\n shellTopBarSecondaryButtonClass,\n \"min-w-0 max-w-[10rem] outline-none focus-visible:ring-2 focus-visible:ring-blue-500/30\",\n )}\n aria-label=\"Switch floor\"\n >\n <Layers size={12} className={cn(\"shrink-0\", shellTopBarMutedIconClass)} aria-hidden />\n <span className=\"truncate\">{activeFloor?.name ?? \"Floor\"}</span>\n <ChevronDown size={12} className={cn(\"shrink-0\", shellTopBarMutedIconClass)} aria-hidden />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-48\">\n {floors.map((floor) => (\n <DropdownMenuItem\n key={floor.id}\n onClick={() => onFloorChange(floor.id)}\n className=\"flex items-center justify-between gap-2\"\n >\n <span className=\"truncate\">{floor.name}</span>\n {floor.id === activeFloorId ? (\n <Check size={14} className=\"shrink-0 text-blue-600\" aria-hidden />\n ) : (\n <span className=\"size-3.5 shrink-0\" aria-hidden />\n )}\n </DropdownMenuItem>\n ))}\n {onAddFloor || canDeleteFloor ? (\n <>\n <DropdownMenuSeparator />\n {onAddFloor ? (\n <DropdownMenuItem onClick={() => setAddOpen(true)}>\n <Plus size={14} className=\"mr-1.5\" />\n Add floor…\n </DropdownMenuItem>\n ) : null}\n {canDeleteFloor ? (\n <DropdownMenuItem\n variant=\"destructive\"\n onClick={() => onDeleteFloor?.(activeFloorId)}\n >\n <Trash2 size={14} className=\"mr-1.5\" />\n Delete floor…\n </DropdownMenuItem>\n ) : null}\n </>\n ) : null}\n </DropdownMenuContent>\n </DropdownMenu>\n\n {onAddFloor ? (\n <Dialog open={addOpen} onOpenChange={setAddOpen}>\n <DialogContent className=\"sm:max-w-md border-border\">\n <DialogHeader>\n <DialogTitle>Add floor</DialogTitle>\n <DialogDescription>\n Create a new floor with its own resources and 2D layout.\n </DialogDescription>\n </DialogHeader>\n <div className=\"py-1\">\n <Label htmlFor=\"new-floor-name\">Name</Label>\n <Input\n id=\"new-floor-name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"e.g. Floor 2\"\n className=\"mt-2 h-9\"\n autoFocus\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleAdd();\n }}\n />\n </div>\n <DialogFooter>\n <Button type=\"button\" variant=\"outline\" onClick={() => setAddOpen(false)}>\n Cancel\n </Button>\n <Button type=\"button\" onClick={handleAdd}>\n Add floor\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n ) : null}\n </>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/live-space/floor-switcher.tsx"],"names":[],"mappings":"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","file":"floor-switcher.js","sourcesContent":["import { Check, ChevronDown, Layers, Plus, Trash2 } from \"lucide-react\";\nimport { shellTopBarMutedIconClass, shellTopBarSecondaryButtonClass } from \"../shell/shell-top-bar-chrome\";\nimport { Button } from \"../ui/button\";\nimport { cn } from \"../ui/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"../ui/dialog\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport { Input } from \"../ui/input\";\nimport { Label } from \"../ui/label\";\nimport { useEffect, useState } from \"react\";\n\nexport interface FloorSwitcherFloor {\n id: string;\n name: string;\n}\n\nexport function FloorSwitcher({\n floors,\n activeFloorId,\n onFloorChange,\n onAddFloor,\n onDeleteFloor,\n}: {\n floors: FloorSwitcherFloor[];\n activeFloorId: string;\n onFloorChange: (floorId: string) => void;\n onAddFloor?: (name: string) => void;\n onDeleteFloor?: (floorId: string) => void;\n}) {\n const activeFloor = floors.find((f) => f.id === activeFloorId) ?? floors[0];\n const [addOpen, setAddOpen] = useState(false);\n const [name, setName] = useState(\"\");\n const canDeleteFloor = Boolean(onDeleteFloor) && floors.length > 1;\n\n useEffect(() => {\n if (addOpen) {\n setName(`Floor ${floors.length + 1}`);\n }\n }, [addOpen, floors.length]);\n\n const handleAdd = () => {\n onAddFloor?.(name.trim() || `Floor ${floors.length + 1}`);\n setAddOpen(false);\n };\n\n return (\n <>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className={cn(\n shellTopBarSecondaryButtonClass,\n \"min-w-0 max-w-[10rem] outline-none focus-visible:ring-2 focus-visible:ring-blue-500/30\",\n )}\n aria-label=\"Switch floor\"\n >\n <Layers size={12} className={cn(\"shrink-0\", shellTopBarMutedIconClass)} aria-hidden />\n <span className=\"truncate\">{activeFloor?.name ?? \"Floor\"}</span>\n <ChevronDown size={12} className={cn(\"shrink-0\", shellTopBarMutedIconClass)} aria-hidden />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"w-48\">\n {floors.map((floor) => (\n <DropdownMenuItem\n key={floor.id}\n onClick={() => onFloorChange(floor.id)}\n className=\"flex items-center justify-between gap-2\"\n >\n <span className=\"truncate\">{floor.name}</span>\n {floor.id === activeFloorId ? (\n <Check size={14} className=\"shrink-0 text-blue-600\" aria-hidden />\n ) : (\n <span className=\"size-3.5 shrink-0\" aria-hidden />\n )}\n </DropdownMenuItem>\n ))}\n {onAddFloor || canDeleteFloor ? (\n <>\n <DropdownMenuSeparator />\n {onAddFloor ? (\n <DropdownMenuItem onClick={() => setAddOpen(true)}>\n <Plus size={14} className=\"mr-1.5\" />\n Add floor…\n </DropdownMenuItem>\n ) : null}\n {canDeleteFloor ? (\n <DropdownMenuItem\n variant=\"destructive\"\n onClick={() => onDeleteFloor?.(activeFloorId)}\n >\n <Trash2 size={14} className=\"mr-1.5\" />\n Delete floor…\n </DropdownMenuItem>\n ) : null}\n </>\n ) : null}\n </DropdownMenuContent>\n </DropdownMenu>\n\n {onAddFloor ? (\n <Dialog open={addOpen} onOpenChange={setAddOpen}>\n <DialogContent className=\"sm:max-w-md border-border\">\n <DialogHeader>\n <DialogTitle>Add floor</DialogTitle>\n <DialogDescription>\n Create a new floor with its own resources and 2D layout.\n </DialogDescription>\n </DialogHeader>\n <div className=\"py-1\">\n <Label htmlFor=\"new-floor-name\">Name</Label>\n <Input\n id=\"new-floor-name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"e.g. Floor 2\"\n className=\"mt-2 h-9\"\n autoFocus\n onKeyDown={(e) => {\n if (e.key === \"Enter\") handleAdd();\n }}\n />\n </div>\n <DialogFooter>\n <Button type=\"button\" variant=\"outline\" onClick={() => setAddOpen(false)}>\n Cancel\n </Button>\n <Button type=\"button\" onClick={handleAdd}>\n Add floor\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n ) : null}\n </>\n );\n}\n"]}
@@ -1,18 +1,15 @@
1
- export { LayoutCanvasView, matchesCanvasResourceSearch } from './chunk-CKCXQBHQ.js';
1
+ export { LayoutCanvasView, matchesCanvasResourceSearch } from './chunk-RC5SWZPB.js';
2
2
  import './chunk-XU3EFSQX.js';
3
3
  import './chunk-4Y5DBM6Z.js';
4
4
  import './chunk-ZIJQ7BXU.js';
5
- import './chunk-F7MU5T46.js';
6
- import './chunk-RV5PMZYZ.js';
7
- import './chunk-L65F4EMK.js';
8
- import './chunk-PBNBLCC2.js';
9
- import './chunk-VVXGQKN7.js';
10
- import './chunk-7YCAAP43.js';
11
- import './chunk-DC4QH6W2.js';
12
- import './chunk-H7EX6B6N.js';
13
- import './chunk-LUB7QWGU.js';
14
- import './chunk-VHINHHZQ.js';
5
+ import './chunk-5NOKULX2.js';
6
+ import './chunk-CXXOKCLJ.js';
7
+ import './chunk-BQVMO33N.js';
8
+ import './chunk-VIJ2HWPZ.js';
15
9
  import './chunk-FCY5FYJB.js';
10
+ import './chunk-XDVGFHK4.js';
11
+ import './chunk-PPMJZVR4.js';
12
+ import './chunk-VHINHHZQ.js';
16
13
  import './chunk-OWNUMPUC.js';
17
14
  import './chunk-DMPSQ22Q.js';
18
15
  //# sourceMappingURL=layout-canvas-view.js.map
@@ -1,7 +1,9 @@
1
- export { DetailSection, DetailTableFrame, PageListEmptyState, PageListHeader, PageListHeaderRow, PageListPagination, PageListPrimaryActionButton, PageListRoot, PageListSearchField, PageListSecondaryActionButton, PageListSortableTh, PageListStatCard, PageListStatGrid, PageListStickyThead, PageListTable, PageListTableArea, PageListTd, PageListTh, PageListThead, PageListTitleRow, PageListToolbar, PageListTr, ShellTopBarPrimaryActionButton, ShellTopBarSecondaryActionButton, pageListStickyColumnClass, pageListTableWithFixedColumnsClass, pageListTdClass, pageListThClass } from './chunk-H7EX6B6N.js';
2
- import './chunk-LUB7QWGU.js';
3
- import './chunk-VHINHHZQ.js';
1
+ export { DetailSection, DetailTableFrame, PageListEmptyState, PageListHeader, PageListHeaderRow, PageListPagination, PageListPrimaryActionButton, PageListRoot, PageListSearchField, PageListSecondaryActionButton, PageListSortableTh, PageListStatCard, PageListStatGrid, PageListStickyThead, PageListTable, PageListTableArea, PageListTd, PageListTh, PageListThead, PageListTitleRow, PageListToolbar, PageListTr, ShellTopBarPrimaryActionButton, ShellTopBarSecondaryActionButton, pageListStickyColumnClass, pageListTableWithFixedColumnsClass, pageListTdClass, pageListThClass } from './chunk-5NOKULX2.js';
2
+ import './chunk-BQVMO33N.js';
3
+ import './chunk-VIJ2HWPZ.js';
4
4
  export { shellTopBarNeutralActionDataAttr } from './chunk-FCY5FYJB.js';
5
+ import './chunk-PPMJZVR4.js';
6
+ import './chunk-VHINHHZQ.js';
5
7
  import './chunk-OWNUMPUC.js';
6
8
  import './chunk-DMPSQ22Q.js';
7
9
  //# sourceMappingURL=page-list-chrome.js.map
@@ -1,8 +1,10 @@
1
+ import { PageListTable, PageListStickyThead, PageListHeaderRow, PageListTh, PageListTr, PageListTd } from './chunk-5NOKULX2.js';
2
+ import './chunk-BQVMO33N.js';
3
+ import './chunk-VIJ2HWPZ.js';
4
+ import './chunk-FCY5FYJB.js';
1
5
  import { Skeleton } from './chunk-DC4QH6W2.js';
2
- import { PageListTable, PageListStickyThead, PageListHeaderRow, PageListTh, PageListTr, PageListTd } from './chunk-H7EX6B6N.js';
3
- import './chunk-LUB7QWGU.js';
6
+ import './chunk-PPMJZVR4.js';
4
7
  import './chunk-VHINHHZQ.js';
5
- import './chunk-FCY5FYJB.js';
6
8
  import './chunk-OWNUMPUC.js';
7
9
  import './chunk-DMPSQ22Q.js';
8
10
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/shell/page-list-loading.tsx"],"names":[],"mappings":";;;;;;;;;AA4BA,IAAM,cAAc,CAAC,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,QAAQ,MAAM,CAAA;AAEpD,SAAS,iBAAA,GAAoB;AAClC,EAAA,uBACE,IAAA,CAAC,UAAK,SAAA,EAAU,8BAAA,EAA+B,MAAK,QAAA,EAAS,WAAA,EAAU,MAAA,EAAO,YAAA,EAAW,SAAA,EACvF,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,UAAA,EAAW,CAAA;AAAA,oBAC/B,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,QAAA,EAAA,SAAA,EAAO;AAAA,GAAA,EACnC,CAAA;AAEJ;AAEA,SAAS,YAAA,CAAa,EAAE,IAAA,EAAM,GAAA,EAAK,OAAM,EAA0E;AACjH,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,UAAA;AACH,MAAA,uBAAO,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,gBAAA,EAAiB,CAAA;AAAA,IAC9C,KAAK,QAAA;AACH,MAAA,uBACE,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kCAAA,EACd,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,8BAAA,EAA+B,CAAA;AAAA,wBACnD,GAAA,CAAC,YAAS,SAAA,EAAW,CAAA,MAAA,EAAS,YAAY,GAAA,GAAM,WAAA,CAAY,MAAM,CAAC,CAAA,CAAA,EAAI;AAAA,OAAA,EACzE,CAAA;AAAA,IAEJ,KAAK,MAAA;AACH,MAAA,uBAAO,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,uBAAA,EAAwB,CAAA;AAAA,IACrD,KAAK,SAAA;AACH,MAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,CAAA,kBAAA,EAAqB,UAAU,OAAA,GAAU,aAAA,GAAgB,EAAE,CAAA,CAAA,EACzE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,qBAAA,EAAsB,CAAA;AAAA,QACzC,MAAM,CAAA,KAAM,CAAA,uBAAK,QAAA,EAAA,EAAS,SAAA,EAAU,uBAAsB,CAAA,GAAK;AAAA,OAAA,EAClE,CAAA;AAAA,IAEJ,KAAK,WAAA;AACH,MAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAU,sCAAA,EAAuC,CAAA;AAAA,wBAC3D,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAW,CAAA,MAAA,EAAS,GAAA,GAAM,MAAM,CAAA,GAAI,MAAA,GAAS,MAAM,CAAA,CAAA,EAAI,CAAA;AAAA,0BACjE,GAAA,CAAC,YAAS,SAAA,EAAW,CAAA,IAAA,EAAO,MAAM,CAAA,KAAM,CAAA,GAAI,MAAA,GAAS,MAAM,CAAA,CAAA,EAAI;AAAA,SAAA,EACjE;AAAA,OAAA,EACF,CAAA;AAAA,IAEJ,KAAK,OAAA;AACH,MAAA,OAAO,IAAA;AAAA,IACT;AACE,MAAA,uBACE,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,CAAA,MAAA,EAAS,WAAA,CAAY,GAAA,GAAM,WAAA,CAAY,MAAM,CAAC,CAAA,CAAA,EAAI,KAAA,KAAU,OAAA,GAAU,SAAA,GAAY,EAAE,CAAA;AAAA;AAAA,OACjG;AAAA;AAGR;AAEO,SAAS,qBAAA,CAAsB;AAAA,EACpC,OAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,SAAA;AAAA,EACR;AACF,CAAA,EAKG;AACD,EAAA,MAAM,UAAU,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAW,CAAC,OAAO,MAAM,CAAA;AAEzD,EAAA,4BACG,KAAA,EAAA,EAAI,IAAA,EAAK,UAAS,WAAA,EAAU,MAAA,EAAO,cAAY,KAAA,EAC9C,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,iBAAc,QAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,uBACC,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EACE,kBAAQ,GAAA,CAAI,CAAC,QAAQ,CAAA,qBACpB,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UAEC,OAAO,MAAA,CAAO,KAAA;AAAA,UACd,WAAW,MAAA,CAAO,SAAA;AAAA,UAClB,aAAA,EAAa,MAAA,CAAO,KAAA,IAAS,IAAA,GAAO,IAAA,GAAO,MAAA;AAAA,UAE1C,QAAA,EAAA,MAAA,CAAO;AAAA,SAAA;AAAA,QALH;AAAA,OAOR,GACH,CAAA,EACF,CAAA;AAAA,0BACC,OAAA,EAAA,EACE,QAAA,EAAA,KAAA,CAAM,KAAK,EAAE,MAAA,EAAQ,MAAK,EAAG,CAAC,CAAA,EAAG,GAAA,yBAC/B,UAAA,EAAA,EACE,QAAA,EAAA,OAAA,CAAQ,IAAI,CAAC,MAAA,EAAQ,sBACpB,GAAA,CAAC,UAAA,EAAA,EAAmB,KAAA,EAAO,MAAA,CAAO,OAAO,SAAA,EAAW,MAAA,CAAO,WACzD,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,MAAM,MAAA,CAAO,IAAA,EAAM,KAAU,KAAA,EAAO,MAAA,CAAO,OAAO,CAAA,EAAA,EADjD,CAEjB,CACD,CAAA,EAAA,EALc,GAMjB,CACD,CAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EACnC,CAAA;AAEJ","file":"page-list-loading.js","sourcesContent":["import type { ReactNode } from \"react\";\nimport { Skeleton } from \"../ui/skeleton\";\nimport {\n PageListHeaderRow,\n PageListStickyThead,\n PageListTable,\n PageListTd,\n PageListTh,\n PageListTr,\n} from \"./page-list-chrome\";\n\nexport type PageListSkeletonCell =\n | \"text\"\n | \"pill\"\n | \"avatar\"\n | \"actions\"\n | \"empty\"\n | \"checkbox\"\n | \"titleBody\";\n\nexport type PageListSkeletonColumn = {\n label?: ReactNode;\n align?: \"left\" | \"right\";\n cell: PageListSkeletonCell;\n className?: string;\n hidden?: boolean;\n};\n\nconst TEXT_WIDTHS = [\"w-28\", \"w-20\", \"w-24\", \"w-32\", \"w-16\"] as const;\n\nexport function StatValueSkeleton() {\n return (\n <span className=\"inline-flex h-5 items-center\" role=\"status\" aria-busy=\"true\" aria-label=\"Loading\">\n <Skeleton className=\"h-4 w-10\" />\n <span className=\"sr-only\">Loading</span>\n </span>\n );\n}\n\nfunction SkeletonCell({ cell, row, align }: { cell: PageListSkeletonCell; row: number; align?: \"left\" | \"right\" }) {\n switch (cell) {\n case \"checkbox\":\n return <Skeleton className=\"size-4 rounded\" />;\n case \"avatar\":\n return (\n <span className=\"inline-flex items-center gap-2.5\">\n <Skeleton className=\"size-7 shrink-0 rounded-full\" />\n <Skeleton className={`h-3.5 ${TEXT_WIDTHS[row % TEXT_WIDTHS.length]}`} />\n </span>\n );\n case \"pill\":\n return <Skeleton className=\"h-5 w-16 rounded-full\" />;\n case \"actions\":\n return (\n <div className={`inline-flex gap-2 ${align === \"right\" ? \"justify-end\" : \"\"}`}>\n <Skeleton className=\"h-7 w-16 rounded-lg\" />\n {row % 3 !== 0 ? <Skeleton className=\"h-7 w-14 rounded-lg\" /> : null}\n </div>\n );\n case \"titleBody\":\n return (\n <div className=\"flex items-start gap-3 min-w-0\">\n <Skeleton className=\"mt-1.5 h-2 w-2 shrink-0 rounded-full\" />\n <div className=\"min-w-0 space-y-1.5\">\n <Skeleton className={`h-3.5 ${row % 2 === 0 ? \"w-40\" : \"w-32\"}`} />\n <Skeleton className={`h-3 ${row % 3 === 0 ? \"w-56\" : \"w-44\"}`} />\n </div>\n </div>\n );\n case \"empty\":\n return null;\n default:\n return (\n <Skeleton\n className={`h-3.5 ${TEXT_WIDTHS[row % TEXT_WIDTHS.length]} ${align === \"right\" ? \"ml-auto\" : \"\"}`}\n />\n );\n }\n}\n\nexport function PageListTableSkeleton({\n columns,\n rows = 8,\n label = \"Loading\",\n minWidth,\n}: {\n columns: PageListSkeletonColumn[];\n rows?: number;\n label?: string;\n minWidth?: number;\n}) {\n const visible = columns.filter((column) => !column.hidden);\n\n return (\n <div role=\"status\" aria-busy=\"true\" aria-label={label}>\n <PageListTable minWidth={minWidth}>\n <PageListStickyThead>\n <PageListHeaderRow>\n {visible.map((column, i) => (\n <PageListTh\n key={i}\n align={column.align}\n className={column.className}\n aria-hidden={column.label == null ? true : undefined}\n >\n {column.label}\n </PageListTh>\n ))}\n </PageListHeaderRow>\n </PageListStickyThead>\n <tbody>\n {Array.from({ length: rows }, (_, row) => (\n <PageListTr key={row}>\n {visible.map((column, i) => (\n <PageListTd key={i} align={column.align} className={column.className}>\n <SkeletonCell cell={column.cell} row={row} align={column.align} />\n </PageListTd>\n ))}\n </PageListTr>\n ))}\n </tbody>\n </PageListTable>\n <span className=\"sr-only\">{label}</span>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/shell/page-list-loading.tsx"],"names":[],"mappings":"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","file":"page-list-loading.js","sourcesContent":["import type { ReactNode } from \"react\";\nimport { Skeleton } from \"../ui/skeleton\";\nimport {\n PageListHeaderRow,\n PageListStickyThead,\n PageListTable,\n PageListTd,\n PageListTh,\n PageListTr,\n} from \"./page-list-chrome\";\n\nexport type PageListSkeletonCell =\n | \"text\"\n | \"pill\"\n | \"avatar\"\n | \"actions\"\n | \"empty\"\n | \"checkbox\"\n | \"titleBody\";\n\nexport type PageListSkeletonColumn = {\n label?: ReactNode;\n align?: \"left\" | \"right\";\n cell: PageListSkeletonCell;\n className?: string;\n hidden?: boolean;\n};\n\nconst TEXT_WIDTHS = [\"w-28\", \"w-20\", \"w-24\", \"w-32\", \"w-16\"] as const;\n\nexport function StatValueSkeleton() {\n return (\n <span className=\"inline-flex h-5 items-center\" role=\"status\" aria-busy=\"true\" aria-label=\"Loading\">\n <Skeleton className=\"h-4 w-10\" />\n <span className=\"sr-only\">Loading</span>\n </span>\n );\n}\n\nfunction SkeletonCell({ cell, row, align }: { cell: PageListSkeletonCell; row: number; align?: \"left\" | \"right\" }) {\n switch (cell) {\n case \"checkbox\":\n return <Skeleton className=\"size-4 rounded\" />;\n case \"avatar\":\n return (\n <span className=\"inline-flex items-center gap-2.5\">\n <Skeleton className=\"size-7 shrink-0 rounded-full\" />\n <Skeleton className={`h-3.5 ${TEXT_WIDTHS[row % TEXT_WIDTHS.length]}`} />\n </span>\n );\n case \"pill\":\n return <Skeleton className=\"h-5 w-16 rounded-full\" />;\n case \"actions\":\n return (\n <div className={`inline-flex gap-2 ${align === \"right\" ? \"justify-end\" : \"\"}`}>\n <Skeleton className=\"h-7 w-16 rounded-lg\" />\n {row % 3 !== 0 ? <Skeleton className=\"h-7 w-14 rounded-lg\" /> : null}\n </div>\n );\n case \"titleBody\":\n return (\n <div className=\"flex items-start gap-3 min-w-0\">\n <Skeleton className=\"mt-1.5 h-2 w-2 shrink-0 rounded-full\" />\n <div className=\"min-w-0 space-y-1.5\">\n <Skeleton className={`h-3.5 ${row % 2 === 0 ? \"w-40\" : \"w-32\"}`} />\n <Skeleton className={`h-3 ${row % 3 === 0 ? \"w-56\" : \"w-44\"}`} />\n </div>\n </div>\n );\n case \"empty\":\n return null;\n default:\n return (\n <Skeleton\n className={`h-3.5 ${TEXT_WIDTHS[row % TEXT_WIDTHS.length]} ${align === \"right\" ? \"ml-auto\" : \"\"}`}\n />\n );\n }\n}\n\nexport function PageListTableSkeleton({\n columns,\n rows = 8,\n label = \"Loading\",\n minWidth,\n}: {\n columns: PageListSkeletonColumn[];\n rows?: number;\n label?: string;\n minWidth?: number;\n}) {\n const visible = columns.filter((column) => !column.hidden);\n\n return (\n <div role=\"status\" aria-busy=\"true\" aria-label={label}>\n <PageListTable minWidth={minWidth}>\n <PageListStickyThead>\n <PageListHeaderRow>\n {visible.map((column, i) => (\n <PageListTh\n key={i}\n align={column.align}\n className={column.className}\n aria-hidden={column.label == null ? true : undefined}\n >\n {column.label}\n </PageListTh>\n ))}\n </PageListHeaderRow>\n </PageListStickyThead>\n <tbody>\n {Array.from({ length: rows }, (_, row) => (\n <PageListTr key={row}>\n {visible.map((column, i) => (\n <PageListTd key={i} align={column.align} className={column.className}>\n <SkeletonCell cell={column.cell} row={row} align={column.align} />\n </PageListTd>\n ))}\n </PageListTr>\n ))}\n </tbody>\n </PageListTable>\n <span className=\"sr-only\">{label}</span>\n </div>\n );\n}\n"]}
@@ -1,15 +1,7 @@
1
1
  import { FilePickerField } from './chunk-OMSJWTSZ.js';
2
- import { Tooltip, TooltipTrigger, TooltipContent, Textarea } from './chunk-F7MU5T46.js';
3
- import './chunk-RV5PMZYZ.js';
4
- import './chunk-L65F4EMK.js';
5
- import './chunk-PBNBLCC2.js';
6
- import './chunk-VVXGQKN7.js';
7
- import './chunk-7YCAAP43.js';
8
- import './chunk-DC4QH6W2.js';
9
- import './chunk-LUB7QWGU.js';
2
+ import { Textarea } from './chunk-VQ63T7CJ.js';
3
+ import { Tooltip, TooltipTrigger, TooltipContent } from './chunk-XDVGFHK4.js';
10
4
  import { Button } from './chunk-VHINHHZQ.js';
11
- import './chunk-FCY5FYJB.js';
12
- import './chunk-OWNUMPUC.js';
13
5
  import { cn } from './chunk-DMPSQ22Q.js';
14
6
  import { useState, useCallback } from 'react';
15
7
  import { Paperclip, X, Image, FileText, Plus, Send } from 'lucide-react';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/support-attachments.ts","../src/support/platform-support-message-composer.tsx"],"names":["ImageIcon"],"mappings":"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","file":"platform-support-message-composer.js","sourcesContent":["/**\n * Support attachment helpers for the shared message composer.\n * Copied from `@spacesync/client/domain` so the client has no package dependency.\n */\n\nexport const MAX_ATTACHMENTS_PER_MESSAGE = 5;\n\nexport const MAX_SUPPORT_ATTACHMENT_BYTES = 5 * 1024 * 1024;\n\nconst ALLOWED_MIME_PREFIXES = [\"image/\", \"application/pdf\", \"text/\"];\nconst ALLOWED_MIME_EXACT = new Set([\n \"application/zip\",\n \"application/json\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n]);\n\nexport type SupportAttachmentValidationError =\n | { kind: \"too_big\"; max: number }\n | { kind: \"unsupported_type\" };\n\n/** Same shape as platform support attachments from the API. */\nexport interface SupportAttachment {\n id: string;\n name: string;\n mimeType: string;\n sizeBytes: number;\n storageKey: string;\n uploadedAt: string;\n /** Short-lived signed URL, populated by the API on read — not stored in Mongo. */\n readUrl?: string;\n}\n\nexport function validateSupportAttachmentFile(file: {\n size: number;\n type: string;\n}): SupportAttachmentValidationError | null {\n if (file.size > MAX_SUPPORT_ATTACHMENT_BYTES) {\n return { kind: \"too_big\", max: MAX_SUPPORT_ATTACHMENT_BYTES };\n }\n const mime = file.type || \"application/octet-stream\";\n const allowed =\n ALLOWED_MIME_EXACT.has(mime) || ALLOWED_MIME_PREFIXES.some((prefix) => mime.startsWith(prefix));\n if (!allowed) {\n return { kind: \"unsupported_type\" };\n }\n return null;\n}\n\nexport function describeSupportAttachmentError(err: SupportAttachmentValidationError): string {\n if (err.kind === \"too_big\") {\n const mb = (err.max / (1024 * 1024)).toFixed(1);\n return `File too large (max ${mb} MB).`;\n }\n return \"Unsupported file type.\";\n}\n","import { useCallback, useState } from \"react\";\nimport { FileText, Image as ImageIcon, Paperclip, Plus, Send, X } from \"lucide-react\";\nimport { toast } from \"sonner\";\nimport {\n MAX_ATTACHMENTS_PER_MESSAGE,\n describeSupportAttachmentError,\n validateSupportAttachmentFile,\n type SupportAttachment,\n} from \"../lib/support-attachments\";\nimport { FilePickerField } from \"../files/file-picker-field\";\nimport { Button, Textarea, Tooltip, TooltipContent, TooltipTrigger, cn } from \"../ui\";\n\nexport type { SupportAttachment };\n\nexport function PlatformSupportAttachmentChip({\n attachment,\n onRemove,\n}: {\n attachment: SupportAttachment;\n onRemove?: () => void;\n}) {\n return (\n <li className=\"inline-flex items-center gap-1.5 rounded-lg border border-border bg-card px-2.5 py-1 text-xs text-muted-foreground\">\n <Paperclip size={11} className=\"shrink-0 text-muted-foreground\" />\n <span className=\"max-w-[140px] truncate\">{attachment.name}</span>\n {onRemove ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={onRemove}\n className=\"size-5 text-muted-foreground hover:text-red-500\"\n aria-label={`Remove ${attachment.name}`}\n >\n <X size={11} />\n </Button>\n ) : null}\n </li>\n );\n}\n\nexport function PlatformSupportAttachmentPreview({\n attachment,\n className,\n}: {\n attachment: SupportAttachment;\n className?: string;\n}) {\n const href = attachment.readUrl;\n const isImage = attachment.mimeType.startsWith(\"image/\");\n const inner = (\n <>\n {isImage ? (\n <ImageIcon size={12} className=\"shrink-0 text-muted-foreground\" />\n ) : (\n <FileText size={12} className=\"shrink-0 text-muted-foreground\" />\n )}\n <span className=\"min-w-0 flex-1 truncate font-medium\">{attachment.name}</span>\n <span className=\"shrink-0 text-[10px] text-muted-foreground\">\n {Math.round(attachment.sizeBytes / 1024)} KB\n </span>\n </>\n );\n if (!href) {\n return (\n <span\n className={cn(\n \"flex max-w-[220px] items-center gap-2 rounded-lg border border-border bg-card px-2.5 py-1.5 text-xs text-muted-foreground\",\n className,\n )}\n title={attachment.name}\n >\n {inner}\n </span>\n );\n }\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noreferrer\"\n download={attachment.name}\n className={cn(\n \"flex max-w-[220px] items-center gap-2 rounded-lg border border-border bg-card px-2.5 py-1.5 text-xs text-muted-foreground hover:bg-accent\",\n className,\n )}\n title={attachment.name}\n >\n {inner}\n </a>\n );\n}\n\nexport type PlatformSupportMessageComposerProps = {\n value: string;\n onChange: (value: string) => void;\n attachments: SupportAttachment[];\n onAttachmentsChange: (attachments: SupportAttachment[]) => void;\n onSend: () => void;\n onUploadFile: (file: File) => Promise<SupportAttachment>;\n onTyping?: () => void;\n placeholder?: string;\n disabled?: boolean;\n compact?: boolean;\n className?: string;\n};\n\nexport function PlatformSupportMessageComposer({\n value,\n onChange,\n attachments,\n onAttachmentsChange,\n onSend,\n onUploadFile,\n onTyping,\n placeholder = \"Write a message…\",\n disabled = false,\n compact = false,\n className,\n}: PlatformSupportMessageComposerProps) {\n const [busy, setBusy] = useState(false);\n\n const canSend = !disabled && (value.trim().length > 0 || attachments.length > 0);\n\n const handleFiles = useCallback(\n async (files: FileList | null) => {\n if (!files || files.length === 0) return;\n const remaining = MAX_ATTACHMENTS_PER_MESSAGE - attachments.length;\n if (remaining <= 0) {\n toast.error(`Maximum ${MAX_ATTACHMENTS_PER_MESSAGE} attachments per message`);\n return;\n }\n setBusy(true);\n try {\n const next = [...attachments];\n for (const file of Array.from(files).slice(0, remaining)) {\n const err = validateSupportAttachmentFile(file);\n if (err) {\n toast.error(describeSupportAttachmentError(err));\n continue;\n }\n next.push(await onUploadFile(file));\n }\n onAttachmentsChange(next);\n } catch {\n toast.error(\"Could not upload file\");\n } finally {\n setBusy(false);\n }\n },\n [attachments, onAttachmentsChange, onUploadFile],\n );\n\n const removeAttachment = (id: string) => {\n onAttachmentsChange(attachments.filter((a) => a.id !== id));\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n if (canSend) onSend();\n }\n };\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {attachments.length > 0 ? (\n <ul className=\"flex flex-wrap gap-1.5\">\n {attachments.map((attachment) => (\n <PlatformSupportAttachmentChip\n key={attachment.id}\n attachment={attachment}\n onRemove={() => removeAttachment(attachment.id)}\n />\n ))}\n </ul>\n ) : null}\n\n <div\n className={cn(\n \"rounded-xl border border-border bg-card px-2.5 py-2 shadow-sm\",\n disabled && \"opacity-60\",\n )}\n >\n <div className=\"flex items-end gap-2\">\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"inline-flex shrink-0\">\n <FilePickerField\n variant=\"inline\"\n multiple\n disabled={disabled || busy || attachments.length >= MAX_ATTACHMENTS_PER_MESSAGE}\n actionLabel=\"\"\n icon={<Plus size={compact ? 16 : 18} strokeWidth={1.75} />}\n triggerClassName={cn(\n \"inline-flex items-center justify-center rounded-lg border border-transparent text-muted-foreground transition-colors hover:border-border hover:bg-muted hover:text-foreground\",\n compact ? \"size-8\" : \"size-9\",\n )}\n title=\"Attach files\"\n onFilesSelected={(files) => void handleFiles(files)}\n />\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"top\">Attach</TooltipContent>\n </Tooltip>\n <Textarea\n value={value}\n onChange={(e) => {\n onChange(e.target.value);\n onTyping?.();\n }}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled || busy}\n rows={1}\n className={cn(\n \"max-h-28 min-h-[36px] flex-1 resize-none border-0 bg-transparent px-0.5 py-1.5 text-sm shadow-none focus-visible:ring-0 focus-visible:ring-offset-0\",\n compact && \"min-h-[32px] text-xs\",\n )}\n />\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n size=\"icon\"\n onClick={onSend}\n disabled={!canSend || busy}\n aria-label=\"Send message\"\n className={cn(\n \"shrink-0 rounded-lg bg-blue-500 text-white hover:bg-blue-600 disabled:bg-muted disabled:text-muted-foreground\",\n compact ? \"size-8\" : \"size-9\",\n )}\n >\n <Send size={compact ? 14 : 16} strokeWidth={2} />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"top\">Send</TooltipContent>\n </Tooltip>\n </div>\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/support-attachments.ts","../src/support/platform-support-message-composer.tsx"],"names":["ImageIcon"],"mappings":"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","file":"platform-support-message-composer.js","sourcesContent":["/**\n * Support attachment helpers for the shared message composer.\n * Copied from `@spacesync/client/domain` so the client has no package dependency.\n */\n\nexport const MAX_ATTACHMENTS_PER_MESSAGE = 5;\n\nexport const MAX_SUPPORT_ATTACHMENT_BYTES = 5 * 1024 * 1024;\n\nconst ALLOWED_MIME_PREFIXES = [\"image/\", \"application/pdf\", \"text/\"];\nconst ALLOWED_MIME_EXACT = new Set([\n \"application/zip\",\n \"application/json\",\n \"application/msword\",\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n]);\n\nexport type SupportAttachmentValidationError =\n | { kind: \"too_big\"; max: number }\n | { kind: \"unsupported_type\" };\n\n/** Same shape as platform support attachments from the API. */\nexport interface SupportAttachment {\n id: string;\n name: string;\n mimeType: string;\n sizeBytes: number;\n storageKey: string;\n uploadedAt: string;\n /** Short-lived signed URL, populated by the API on read — not stored in Mongo. */\n readUrl?: string;\n}\n\nexport function validateSupportAttachmentFile(file: {\n size: number;\n type: string;\n}): SupportAttachmentValidationError | null {\n if (file.size > MAX_SUPPORT_ATTACHMENT_BYTES) {\n return { kind: \"too_big\", max: MAX_SUPPORT_ATTACHMENT_BYTES };\n }\n const mime = file.type || \"application/octet-stream\";\n const allowed =\n ALLOWED_MIME_EXACT.has(mime) || ALLOWED_MIME_PREFIXES.some((prefix) => mime.startsWith(prefix));\n if (!allowed) {\n return { kind: \"unsupported_type\" };\n }\n return null;\n}\n\nexport function describeSupportAttachmentError(err: SupportAttachmentValidationError): string {\n if (err.kind === \"too_big\") {\n const mb = (err.max / (1024 * 1024)).toFixed(1);\n return `File too large (max ${mb} MB).`;\n }\n return \"Unsupported file type.\";\n}\n","import { useCallback, useState } from \"react\";\nimport { FileText, Image as ImageIcon, Paperclip, Plus, Send, X } from \"lucide-react\";\nimport { toast } from \"sonner\";\nimport {\n MAX_ATTACHMENTS_PER_MESSAGE,\n describeSupportAttachmentError,\n validateSupportAttachmentFile,\n type SupportAttachment,\n} from \"../lib/support-attachments\";\nimport { FilePickerField } from \"../files/file-picker-field\";\nimport { Button } from \"../ui/button\";\nimport { Textarea } from \"../ui/textarea\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../ui/tooltip\";\nimport { cn } from \"../ui/utils\";\n\nexport type { SupportAttachment };\n\nexport function PlatformSupportAttachmentChip({\n attachment,\n onRemove,\n}: {\n attachment: SupportAttachment;\n onRemove?: () => void;\n}) {\n return (\n <li className=\"inline-flex items-center gap-1.5 rounded-lg border border-border bg-card px-2.5 py-1 text-xs text-muted-foreground\">\n <Paperclip size={11} className=\"shrink-0 text-muted-foreground\" />\n <span className=\"max-w-[140px] truncate\">{attachment.name}</span>\n {onRemove ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={onRemove}\n className=\"size-5 text-muted-foreground hover:text-red-500\"\n aria-label={`Remove ${attachment.name}`}\n >\n <X size={11} />\n </Button>\n ) : null}\n </li>\n );\n}\n\nexport function PlatformSupportAttachmentPreview({\n attachment,\n className,\n}: {\n attachment: SupportAttachment;\n className?: string;\n}) {\n const href = attachment.readUrl;\n const isImage = attachment.mimeType.startsWith(\"image/\");\n const inner = (\n <>\n {isImage ? (\n <ImageIcon size={12} className=\"shrink-0 text-muted-foreground\" />\n ) : (\n <FileText size={12} className=\"shrink-0 text-muted-foreground\" />\n )}\n <span className=\"min-w-0 flex-1 truncate font-medium\">{attachment.name}</span>\n <span className=\"shrink-0 text-[10px] text-muted-foreground\">\n {Math.round(attachment.sizeBytes / 1024)} KB\n </span>\n </>\n );\n if (!href) {\n return (\n <span\n className={cn(\n \"flex max-w-[220px] items-center gap-2 rounded-lg border border-border bg-card px-2.5 py-1.5 text-xs text-muted-foreground\",\n className,\n )}\n title={attachment.name}\n >\n {inner}\n </span>\n );\n }\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noreferrer\"\n download={attachment.name}\n className={cn(\n \"flex max-w-[220px] items-center gap-2 rounded-lg border border-border bg-card px-2.5 py-1.5 text-xs text-muted-foreground hover:bg-accent\",\n className,\n )}\n title={attachment.name}\n >\n {inner}\n </a>\n );\n}\n\nexport type PlatformSupportMessageComposerProps = {\n value: string;\n onChange: (value: string) => void;\n attachments: SupportAttachment[];\n onAttachmentsChange: (attachments: SupportAttachment[]) => void;\n onSend: () => void;\n onUploadFile: (file: File) => Promise<SupportAttachment>;\n onTyping?: () => void;\n placeholder?: string;\n disabled?: boolean;\n compact?: boolean;\n className?: string;\n};\n\nexport function PlatformSupportMessageComposer({\n value,\n onChange,\n attachments,\n onAttachmentsChange,\n onSend,\n onUploadFile,\n onTyping,\n placeholder = \"Write a message…\",\n disabled = false,\n compact = false,\n className,\n}: PlatformSupportMessageComposerProps) {\n const [busy, setBusy] = useState(false);\n\n const canSend = !disabled && (value.trim().length > 0 || attachments.length > 0);\n\n const handleFiles = useCallback(\n async (files: FileList | null) => {\n if (!files || files.length === 0) return;\n const remaining = MAX_ATTACHMENTS_PER_MESSAGE - attachments.length;\n if (remaining <= 0) {\n toast.error(`Maximum ${MAX_ATTACHMENTS_PER_MESSAGE} attachments per message`);\n return;\n }\n setBusy(true);\n try {\n const next = [...attachments];\n for (const file of Array.from(files).slice(0, remaining)) {\n const err = validateSupportAttachmentFile(file);\n if (err) {\n toast.error(describeSupportAttachmentError(err));\n continue;\n }\n next.push(await onUploadFile(file));\n }\n onAttachmentsChange(next);\n } catch {\n toast.error(\"Could not upload file\");\n } finally {\n setBusy(false);\n }\n },\n [attachments, onAttachmentsChange, onUploadFile],\n );\n\n const removeAttachment = (id: string) => {\n onAttachmentsChange(attachments.filter((a) => a.id !== id));\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n if (canSend) onSend();\n }\n };\n\n return (\n <div className={cn(\"space-y-2\", className)}>\n {attachments.length > 0 ? (\n <ul className=\"flex flex-wrap gap-1.5\">\n {attachments.map((attachment) => (\n <PlatformSupportAttachmentChip\n key={attachment.id}\n attachment={attachment}\n onRemove={() => removeAttachment(attachment.id)}\n />\n ))}\n </ul>\n ) : null}\n\n <div\n className={cn(\n \"rounded-xl border border-border bg-card px-2.5 py-2 shadow-sm\",\n disabled && \"opacity-60\",\n )}\n >\n <div className=\"flex items-end gap-2\">\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"inline-flex shrink-0\">\n <FilePickerField\n variant=\"inline\"\n multiple\n disabled={disabled || busy || attachments.length >= MAX_ATTACHMENTS_PER_MESSAGE}\n actionLabel=\"\"\n icon={<Plus size={compact ? 16 : 18} strokeWidth={1.75} />}\n triggerClassName={cn(\n \"inline-flex items-center justify-center rounded-lg border border-transparent text-muted-foreground transition-colors hover:border-border hover:bg-muted hover:text-foreground\",\n compact ? \"size-8\" : \"size-9\",\n )}\n title=\"Attach files\"\n onFilesSelected={(files) => void handleFiles(files)}\n />\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"top\">Attach</TooltipContent>\n </Tooltip>\n <Textarea\n value={value}\n onChange={(e) => {\n onChange(e.target.value);\n onTyping?.();\n }}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled || busy}\n rows={1}\n className={cn(\n \"max-h-28 min-h-[36px] flex-1 resize-none border-0 bg-transparent px-0.5 py-1.5 text-sm shadow-none focus-visible:ring-0 focus-visible:ring-offset-0\",\n compact && \"min-h-[32px] text-xs\",\n )}\n />\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n type=\"button\"\n size=\"icon\"\n onClick={onSend}\n disabled={!canSend || busy}\n aria-label=\"Send message\"\n className={cn(\n \"shrink-0 rounded-lg bg-blue-500 text-white hover:bg-blue-600 disabled:bg-muted disabled:text-muted-foreground\",\n compact ? \"size-8\" : \"size-9\",\n )}\n >\n <Send size={compact ? 14 : 16} strokeWidth={2} />\n </Button>\n </TooltipTrigger>\n <TooltipContent side=\"top\">Send</TooltipContent>\n </Tooltip>\n </div>\n </div>\n </div>\n );\n}\n"]}
@@ -0,0 +1,85 @@
1
+ import * as class_variance_authority_types from 'class-variance-authority/types';
2
+ import * as React from 'react';
3
+ import { VariantProps } from 'class-variance-authority';
4
+ import { B as Button } from './button-Iem7kbk0.js';
5
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
6
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
7
+
8
+ declare const inputVariants: (props?: ({
9
+ size?: "default" | "sm" | "lg" | "xl" | null | undefined;
10
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
11
+ declare const Input: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "size"> & VariantProps<(props?: ({
12
+ size?: "default" | "sm" | "lg" | "xl" | null | undefined;
13
+ } & class_variance_authority_types.ClassProp) | undefined) => string>, "ref"> & React.RefAttributes<HTMLInputElement>>;
14
+
15
+ declare function Separator({ className, orientation, decorative, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>): React.JSX.Element;
16
+
17
+ declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>): React.JSX.Element;
18
+ declare function Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>): React.JSX.Element;
19
+ declare function TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>): React.JSX.Element;
20
+ declare function TooltipContent({ className, sideOffset, children, ...props }: React.ComponentProps<typeof TooltipPrimitive.Content>): React.JSX.Element;
21
+
22
+ type SidebarContextProps = {
23
+ state: "expanded" | "collapsed";
24
+ open: boolean;
25
+ setOpen: (open: boolean) => void;
26
+ openMobile: boolean;
27
+ setOpenMobile: (open: boolean) => void;
28
+ isMobile: boolean;
29
+ toggleSidebar: () => void;
30
+ };
31
+ declare function useSidebar(): SidebarContextProps;
32
+ declare function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React.ComponentProps<"div"> & {
33
+ defaultOpen?: boolean;
34
+ open?: boolean;
35
+ onOpenChange?: (open: boolean) => void;
36
+ }): React.JSX.Element;
37
+ declare function Sidebar({ side, variant, collapsible, className, children, ...props }: React.ComponentProps<"div"> & {
38
+ side?: "left" | "right";
39
+ variant?: "sidebar" | "floating" | "inset";
40
+ collapsible?: "offcanvas" | "icon" | "none";
41
+ }): React.JSX.Element;
42
+ declare function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
43
+ declare function SidebarRail({ className, ...props }: React.ComponentProps<"button">): React.JSX.Element;
44
+ declare function SidebarInset({ className, ...props }: React.ComponentProps<"main">): React.JSX.Element;
45
+ declare function SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>): React.JSX.Element;
46
+ declare function SidebarHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
47
+ declare function SidebarFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
48
+ declare function SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>): React.JSX.Element;
49
+ declare function SidebarContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
50
+ declare function SidebarGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
51
+ declare function SidebarGroupLabel({ className, asChild, ...props }: React.ComponentProps<"div"> & {
52
+ asChild?: boolean;
53
+ }): React.JSX.Element;
54
+ declare function SidebarGroupAction({ className, asChild, ...props }: React.ComponentProps<"button"> & {
55
+ asChild?: boolean;
56
+ }): React.JSX.Element;
57
+ declare function SidebarGroupContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
58
+ declare function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">): React.JSX.Element;
59
+ declare function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
60
+ declare const sidebarMenuButtonVariants: (props?: ({
61
+ variant?: "default" | "outline" | null | undefined;
62
+ size?: "default" | "sm" | "lg" | null | undefined;
63
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
64
+ declare function SidebarMenuButton({ asChild, isActive, variant, size, tooltip, className, ...props }: React.ComponentProps<"button"> & {
65
+ asChild?: boolean;
66
+ isActive?: boolean;
67
+ tooltip?: string | React.ComponentProps<typeof TooltipContent>;
68
+ } & VariantProps<typeof sidebarMenuButtonVariants>): React.JSX.Element;
69
+ declare function SidebarMenuAction({ className, asChild, showOnHover, ...props }: React.ComponentProps<"button"> & {
70
+ asChild?: boolean;
71
+ showOnHover?: boolean;
72
+ }): React.JSX.Element;
73
+ declare function SidebarMenuBadge({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
74
+ declare function SidebarMenuSkeleton({ className, showIcon, ...props }: React.ComponentProps<"div"> & {
75
+ showIcon?: boolean;
76
+ }): React.JSX.Element;
77
+ declare function SidebarMenuSub({ className, ...props }: React.ComponentProps<"ul">): React.JSX.Element;
78
+ declare function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
79
+ declare function SidebarMenuSubButton({ asChild, size, isActive, className, ...props }: React.ComponentProps<"a"> & {
80
+ asChild?: boolean;
81
+ size?: "sm" | "md";
82
+ isActive?: boolean;
83
+ }): React.JSX.Element;
84
+
85
+ export { TooltipTrigger as A, useSidebar as B, Input as I, Separator as S, TooltipContent as T, Sidebar as a, SidebarContent as b, SidebarFooter as c, SidebarGroup as d, SidebarGroupAction as e, SidebarGroupContent as f, SidebarGroupLabel as g, SidebarHeader as h, inputVariants as i, SidebarInput as j, SidebarInset as k, SidebarMenu as l, SidebarMenuAction as m, SidebarMenuBadge as n, SidebarMenuButton as o, SidebarMenuItem as p, SidebarMenuSkeleton as q, SidebarMenuSub as r, SidebarMenuSubButton as s, SidebarMenuSubItem as t, SidebarProvider as u, SidebarRail as v, SidebarSeparator as w, SidebarTrigger as x, Tooltip as y, TooltipProvider as z };
@@ -1,6 +1,56 @@
1
- @import "@fontsource-variable/inter";
2
-
3
1
  /* src/styles/theme.css */
2
+ @font-face {
3
+ font-family: "Inter Variable";
4
+ font-style: normal;
5
+ font-display: swap;
6
+ font-weight: 100 900;
7
+ src: url(@fontsource-variable/inter/files/inter-latin-wght-normal.woff2) format("woff2-variations");
8
+ unicode-range:
9
+ U+0000-00FF,
10
+ U+0131,
11
+ U+0152-0153,
12
+ U+02BB-02BC,
13
+ U+02C6,
14
+ U+02DA,
15
+ U+02DC,
16
+ U+0304,
17
+ U+0308,
18
+ U+0329,
19
+ U+2000-206F,
20
+ U+20AC,
21
+ U+2122,
22
+ U+2191,
23
+ U+2193,
24
+ U+2212,
25
+ U+2215,
26
+ U+FEFF,
27
+ U+FFFD;
28
+ }
29
+ @font-face {
30
+ font-family: "Inter Variable";
31
+ font-style: normal;
32
+ font-display: swap;
33
+ font-weight: 100 900;
34
+ src: url(@fontsource-variable/inter/files/inter-latin-ext-wght-normal.woff2) format("woff2-variations");
35
+ unicode-range:
36
+ U+0100-02BA,
37
+ U+02BD-02C5,
38
+ U+02C7-02CC,
39
+ U+02CE-02D7,
40
+ U+02DD-02FF,
41
+ U+0304,
42
+ U+0308,
43
+ U+0329,
44
+ U+1D00-1DBF,
45
+ U+1E00-1E9F,
46
+ U+1EF2-1EFF,
47
+ U+2020,
48
+ U+20A0-20AB,
49
+ U+20AD-20C0,
50
+ U+2113,
51
+ U+2C60-2C7F,
52
+ U+A720-A7FF;
53
+ }
4
54
  @custom-variant dark (&:is(.dark *));
5
55
  :root {
6
56
  --font-size: 16px;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/styles/theme.css"],"sourcesContent":["@import \"@fontsource-variable/inter\";\n\n@custom-variant dark (&:is(.dark *));\n\n:root {\n --font-size: 16px;\n --background: #ffffff;\n --foreground: oklch(0.145 0 0);\n --card: #ffffff;\n --card-foreground: oklch(0.145 0 0);\n --popover: #030213;\n --popover-foreground: oklch(0.985 0 0);\n --primary: #030213;\n --primary-foreground: oklch(1 0 0);\n --secondary: oklch(0.95 0.0058 264.53);\n --secondary-foreground: #030213;\n --muted: #f5f5f7;\n --muted-foreground: #8a8a9a;\n --accent: #f1f2f4;\n --accent-foreground: #030213;\n --destructive: #d4183d;\n --destructive-foreground: #ffffff;\n --border: #eceef2;\n --input: #eceef2;\n --input-background: #f7f7f8;\n --switch-background: #cbced4;\n --font-weight-medium: 500;\n --font-weight-normal: 400;\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.646 0.222 41.116);\n --chart-2: oklch(0.6 0.118 184.704);\n --chart-3: oklch(0.398 0.07 227.392);\n --chart-4: oklch(0.828 0.189 84.429);\n --chart-5: oklch(0.769 0.188 70.08);\n --radius: 0.625rem;\n --sidebar: #f5f5f7;\n --sidebar-foreground: #13131a;\n --sidebar-primary: #13131a;\n --sidebar-primary-foreground: #f5f5f7;\n --sidebar-accent: #eceef2;\n --sidebar-accent-foreground: #13131a;\n --sidebar-border: #e0e0e5;\n --sidebar-ring: oklch(0.708 0 0);\n --scrollbar-thumb: oklch(0.55 0 0 / 0.28);\n --scrollbar-thumb-hover: oklch(0.45 0 0 / 0.4);\n}\n\n:root[data-shell-theme=\"light\"],\n:root:not([data-shell-theme]) {\n --sidebar: #f5f5f7;\n --sidebar-foreground: #13131a;\n --sidebar-primary: #13131a;\n --sidebar-primary-foreground: #f5f5f7;\n --sidebar-accent: #eceef2;\n --sidebar-accent-foreground: #13131a;\n --sidebar-border: #e0e0e5;\n --sidebar-ring: oklch(0.708 0 0);\n}\n\n:root[data-shell-theme=\"dark\"] {\n --sidebar: #13131a;\n --sidebar-foreground: oklch(0.93 0 0);\n --sidebar-primary: oklch(0.93 0 0);\n --sidebar-primary-foreground: #13131a;\n --sidebar-accent: oklch(0.24 0.01 264);\n --sidebar-accent-foreground: oklch(0.95 0 0);\n --sidebar-border: oklch(0.3 0.01 264);\n --sidebar-ring: oklch(0.55 0 0);\n}\n\n.dark {\n --background: oklch(0.145 0 0);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.145 0 0);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.145 0 0);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.985 0 0);\n --primary-foreground: oklch(0.205 0 0);\n --secondary: oklch(0.269 0 0);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0 0);\n --muted-foreground: oklch(0.708 0 0);\n --accent: oklch(0.269 0 0);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.396 0.141 25.723);\n --destructive-foreground: oklch(0.637 0.237 25.331);\n --border: oklch(0.269 0 0);\n --input: oklch(0.269 0 0);\n --ring: oklch(0.439 0 0);\n --font-weight-medium: 500;\n --font-weight-normal: 400;\n --chart-1: oklch(0.488 0.243 264.376);\n --chart-2: oklch(0.696 0.17 162.48);\n --chart-3: oklch(0.769 0.188 70.08);\n --chart-4: oklch(0.627 0.265 303.9);\n --chart-5: oklch(0.645 0.246 16.439);\n --scrollbar-thumb: oklch(0.985 0 0 / 0.22);\n --scrollbar-thumb-hover: oklch(0.985 0 0 / 0.35);\n}\n\n.dark[data-shell-theme=\"light\"] {\n --sidebar: #f5f5f7;\n --sidebar-foreground: #13131a;\n --sidebar-primary: #13131a;\n --sidebar-primary-foreground: #f5f5f7;\n --sidebar-accent: #eceef2;\n --sidebar-accent-foreground: #13131a;\n --sidebar-border: #e0e0e5;\n --sidebar-ring: oklch(0.708 0 0);\n}\n\n.dark[data-shell-theme=\"dark\"] {\n --sidebar: oklch(0.205 0 0);\n --sidebar-foreground: oklch(0.985 0 0);\n --sidebar-primary: oklch(0.488 0.243 264.376);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.269 0 0);\n --sidebar-accent-foreground: oklch(0.985 0 0);\n --sidebar-border: oklch(0.269 0 0);\n --sidebar-ring: oklch(0.439 0 0);\n}\n\n@theme inline {\n --font-sans:\n \"Inter Variable\", \"Inter\", ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-input-background: var(--input-background);\n --color-switch-background: var(--switch-background);\n --color-ring: var(--ring);\n --color-chart-1: var(--chart-1);\n --color-chart-2: var(--chart-2);\n --color-chart-3: var(--chart-3);\n --color-chart-4: var(--chart-4);\n --color-chart-5: var(--chart-5);\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n}\n\n@layer base {\n * {\n @apply border-border outline-ring/50;\n }\n\n body {\n @apply bg-background text-foreground font-sans;\n }\n\n /**\n * Default typography styles for HTML elements (h1-h4, p, label, button, input).\n * These are in @layer base, so Tailwind utility classes (like text-sm, text-lg) automatically override them.\n */\n\n html {\n font-size: var(--font-size);\n }\n\n h1 {\n font-size: var(--text-2xl);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n }\n\n h2 {\n font-size: var(--text-xl);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n }\n\n h3 {\n font-size: var(--text-lg);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n }\n\n h4 {\n font-size: var(--text-base);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n }\n\n label {\n font-size: var(--text-base);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n }\n\n button {\n font-size: var(--text-base);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n cursor: pointer;\n }\n\n button:disabled {\n cursor: not-allowed;\n }\n\n input {\n font-size: var(--text-base);\n font-weight: var(--font-weight-normal);\n line-height: 1.5;\n }\n}\n\n@layer components {\n /* Dark shell top bar — remap light page chrome utilities inside title/actions */\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-title\"] .text-foreground,\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-actions\"] .text-foreground {\n color: var(--sidebar-foreground) !important;\n }\n\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-title\"] .text-muted-foreground,\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-actions\"] .text-muted-foreground {\n color: color-mix(in oklch, var(--sidebar-foreground) 62%, transparent) !important;\n }\n\n /* shadcn Button outline/ghost hover utilities use accent tokens (light on dark shell) */\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-actions\"]\n :is([data-slot=\"button\"], [data-shell-top-bar-action]):hover,\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-actions\"]\n :is([data-slot=\"button\"], [data-shell-top-bar-action]):active {\n color: var(--sidebar-foreground) !important;\n }\n\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-actions\"]\n :is([data-slot=\"button\"], [data-shell-top-bar-action]).border-sidebar-border:hover,\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-actions\"]\n :is([data-slot=\"button\"], [data-shell-top-bar-action]).border-sidebar-border:active {\n background-color: color-mix(\n in oklch,\n var(--sidebar-foreground) 12%,\n var(--sidebar-accent)\n ) !important;\n border-color: color-mix(\n in oklch,\n var(--sidebar-foreground) 25%,\n var(--sidebar-border)\n ) !important;\n }\n\n /* Light shell top bar — keep shadcn outline buttons from using page accent hover on shell */\n :root[data-shell-theme=\"light\"] [data-slot=\"shell-top-bar-actions\"]\n :is([data-slot=\"button\"], [data-shell-top-bar-action]).border-sidebar-border:hover,\n :root[data-shell-theme=\"light\"] [data-slot=\"shell-top-bar-actions\"]\n :is([data-slot=\"button\"], [data-shell-top-bar-action]).border-sidebar-border:active {\n background-color: color-mix(\n in oklch,\n var(--sidebar-foreground) 6%,\n var(--sidebar-accent)\n ) !important;\n border-color: color-mix(\n in oklch,\n var(--sidebar-foreground) 14%,\n var(--sidebar-border)\n ) !important;\n color: var(--sidebar-foreground) !important;\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n ),\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n :is(.overflow-y-auto, .overflow-x-auto, .overflow-auto) {\n scrollbar-width: thin;\n scrollbar-color: var(--scrollbar-thumb) transparent;\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )::-webkit-scrollbar,\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n :is(.overflow-y-auto, .overflow-x-auto, .overflow-auto)::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )::-webkit-scrollbar-track,\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n :is(.overflow-y-auto, .overflow-x-auto, .overflow-auto)::-webkit-scrollbar-track {\n background: transparent;\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )::-webkit-scrollbar-thumb,\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n :is(.overflow-y-auto, .overflow-x-auto, .overflow-auto)::-webkit-scrollbar-thumb {\n background-color: var(--scrollbar-thumb);\n border-radius: 9999px;\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )::-webkit-scrollbar-thumb:hover,\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n :is(.overflow-y-auto, .overflow-x-auto, .overflow-auto)::-webkit-scrollbar-thumb:hover {\n background-color: var(--scrollbar-thumb-hover);\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n [data-slot=\"scroll-area-thumb\"] {\n background-color: var(--scrollbar-thumb);\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n [data-slot=\"scroll-area-thumb\"]:hover {\n background-color: var(--scrollbar-thumb-hover);\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/styles/theme.css"],"sourcesContent":["@font-face {\n font-family: \"Inter Variable\";\n font-style: normal;\n font-display: swap;\n font-weight: 100 900;\n src: url(\"@fontsource-variable/inter/files/inter-latin-wght-normal.woff2\") format(\"woff2-variations\");\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304,\n U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n\n@font-face {\n font-family: \"Inter Variable\";\n font-style: normal;\n font-display: swap;\n font-weight: 100 900;\n src: url(\"@fontsource-variable/inter/files/inter-latin-ext-wght-normal.woff2\") format(\"woff2-variations\");\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308,\n U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113,\n U+2C60-2C7F, U+A720-A7FF;\n}\n\n@custom-variant dark (&:is(.dark *));\n\n:root {\n --font-size: 16px;\n --background: #ffffff;\n --foreground: oklch(0.145 0 0);\n --card: #ffffff;\n --card-foreground: oklch(0.145 0 0);\n --popover: #030213;\n --popover-foreground: oklch(0.985 0 0);\n --primary: #030213;\n --primary-foreground: oklch(1 0 0);\n --secondary: oklch(0.95 0.0058 264.53);\n --secondary-foreground: #030213;\n --muted: #f5f5f7;\n --muted-foreground: #8a8a9a;\n --accent: #f1f2f4;\n --accent-foreground: #030213;\n --destructive: #d4183d;\n --destructive-foreground: #ffffff;\n --border: #eceef2;\n --input: #eceef2;\n --input-background: #f7f7f8;\n --switch-background: #cbced4;\n --font-weight-medium: 500;\n --font-weight-normal: 400;\n --ring: oklch(0.708 0 0);\n --chart-1: oklch(0.646 0.222 41.116);\n --chart-2: oklch(0.6 0.118 184.704);\n --chart-3: oklch(0.398 0.07 227.392);\n --chart-4: oklch(0.828 0.189 84.429);\n --chart-5: oklch(0.769 0.188 70.08);\n --radius: 0.625rem;\n --sidebar: #f5f5f7;\n --sidebar-foreground: #13131a;\n --sidebar-primary: #13131a;\n --sidebar-primary-foreground: #f5f5f7;\n --sidebar-accent: #eceef2;\n --sidebar-accent-foreground: #13131a;\n --sidebar-border: #e0e0e5;\n --sidebar-ring: oklch(0.708 0 0);\n --scrollbar-thumb: oklch(0.55 0 0 / 0.28);\n --scrollbar-thumb-hover: oklch(0.45 0 0 / 0.4);\n}\n\n:root[data-shell-theme=\"light\"],\n:root:not([data-shell-theme]) {\n --sidebar: #f5f5f7;\n --sidebar-foreground: #13131a;\n --sidebar-primary: #13131a;\n --sidebar-primary-foreground: #f5f5f7;\n --sidebar-accent: #eceef2;\n --sidebar-accent-foreground: #13131a;\n --sidebar-border: #e0e0e5;\n --sidebar-ring: oklch(0.708 0 0);\n}\n\n:root[data-shell-theme=\"dark\"] {\n --sidebar: #13131a;\n --sidebar-foreground: oklch(0.93 0 0);\n --sidebar-primary: oklch(0.93 0 0);\n --sidebar-primary-foreground: #13131a;\n --sidebar-accent: oklch(0.24 0.01 264);\n --sidebar-accent-foreground: oklch(0.95 0 0);\n --sidebar-border: oklch(0.3 0.01 264);\n --sidebar-ring: oklch(0.55 0 0);\n}\n\n.dark {\n --background: oklch(0.145 0 0);\n --foreground: oklch(0.985 0 0);\n --card: oklch(0.145 0 0);\n --card-foreground: oklch(0.985 0 0);\n --popover: oklch(0.145 0 0);\n --popover-foreground: oklch(0.985 0 0);\n --primary: oklch(0.985 0 0);\n --primary-foreground: oklch(0.205 0 0);\n --secondary: oklch(0.269 0 0);\n --secondary-foreground: oklch(0.985 0 0);\n --muted: oklch(0.269 0 0);\n --muted-foreground: oklch(0.708 0 0);\n --accent: oklch(0.269 0 0);\n --accent-foreground: oklch(0.985 0 0);\n --destructive: oklch(0.396 0.141 25.723);\n --destructive-foreground: oklch(0.637 0.237 25.331);\n --border: oklch(0.269 0 0);\n --input: oklch(0.269 0 0);\n --ring: oklch(0.439 0 0);\n --font-weight-medium: 500;\n --font-weight-normal: 400;\n --chart-1: oklch(0.488 0.243 264.376);\n --chart-2: oklch(0.696 0.17 162.48);\n --chart-3: oklch(0.769 0.188 70.08);\n --chart-4: oklch(0.627 0.265 303.9);\n --chart-5: oklch(0.645 0.246 16.439);\n --scrollbar-thumb: oklch(0.985 0 0 / 0.22);\n --scrollbar-thumb-hover: oklch(0.985 0 0 / 0.35);\n}\n\n.dark[data-shell-theme=\"light\"] {\n --sidebar: #f5f5f7;\n --sidebar-foreground: #13131a;\n --sidebar-primary: #13131a;\n --sidebar-primary-foreground: #f5f5f7;\n --sidebar-accent: #eceef2;\n --sidebar-accent-foreground: #13131a;\n --sidebar-border: #e0e0e5;\n --sidebar-ring: oklch(0.708 0 0);\n}\n\n.dark[data-shell-theme=\"dark\"] {\n --sidebar: oklch(0.205 0 0);\n --sidebar-foreground: oklch(0.985 0 0);\n --sidebar-primary: oklch(0.488 0.243 264.376);\n --sidebar-primary-foreground: oklch(0.985 0 0);\n --sidebar-accent: oklch(0.269 0 0);\n --sidebar-accent-foreground: oklch(0.985 0 0);\n --sidebar-border: oklch(0.269 0 0);\n --sidebar-ring: oklch(0.439 0 0);\n}\n\n@theme inline {\n --font-sans:\n \"Inter Variable\", \"Inter\", ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\",\n \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-input-background: var(--input-background);\n --color-switch-background: var(--switch-background);\n --color-ring: var(--ring);\n --color-chart-1: var(--chart-1);\n --color-chart-2: var(--chart-2);\n --color-chart-3: var(--chart-3);\n --color-chart-4: var(--chart-4);\n --color-chart-5: var(--chart-5);\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n}\n\n@layer base {\n * {\n @apply border-border outline-ring/50;\n }\n\n body {\n @apply bg-background text-foreground font-sans;\n }\n\n /**\n * Default typography styles for HTML elements (h1-h4, p, label, button, input).\n * These are in @layer base, so Tailwind utility classes (like text-sm, text-lg) automatically override them.\n */\n\n html {\n font-size: var(--font-size);\n }\n\n h1 {\n font-size: var(--text-2xl);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n }\n\n h2 {\n font-size: var(--text-xl);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n }\n\n h3 {\n font-size: var(--text-lg);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n }\n\n h4 {\n font-size: var(--text-base);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n }\n\n label {\n font-size: var(--text-base);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n }\n\n button {\n font-size: var(--text-base);\n font-weight: var(--font-weight-medium);\n line-height: 1.5;\n cursor: pointer;\n }\n\n button:disabled {\n cursor: not-allowed;\n }\n\n input {\n font-size: var(--text-base);\n font-weight: var(--font-weight-normal);\n line-height: 1.5;\n }\n}\n\n@layer components {\n /* Dark shell top bar — remap light page chrome utilities inside title/actions */\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-title\"] .text-foreground,\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-actions\"] .text-foreground {\n color: var(--sidebar-foreground) !important;\n }\n\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-title\"] .text-muted-foreground,\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-actions\"] .text-muted-foreground {\n color: color-mix(in oklch, var(--sidebar-foreground) 62%, transparent) !important;\n }\n\n /* shadcn Button outline/ghost hover utilities use accent tokens (light on dark shell) */\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-actions\"]\n :is([data-slot=\"button\"], [data-shell-top-bar-action]):hover,\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-actions\"]\n :is([data-slot=\"button\"], [data-shell-top-bar-action]):active {\n color: var(--sidebar-foreground) !important;\n }\n\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-actions\"]\n :is([data-slot=\"button\"], [data-shell-top-bar-action]).border-sidebar-border:hover,\n :root[data-shell-theme=\"dark\"] [data-slot=\"shell-top-bar-actions\"]\n :is([data-slot=\"button\"], [data-shell-top-bar-action]).border-sidebar-border:active {\n background-color: color-mix(\n in oklch,\n var(--sidebar-foreground) 12%,\n var(--sidebar-accent)\n ) !important;\n border-color: color-mix(\n in oklch,\n var(--sidebar-foreground) 25%,\n var(--sidebar-border)\n ) !important;\n }\n\n /* Light shell top bar — keep shadcn outline buttons from using page accent hover on shell */\n :root[data-shell-theme=\"light\"] [data-slot=\"shell-top-bar-actions\"]\n :is([data-slot=\"button\"], [data-shell-top-bar-action]).border-sidebar-border:hover,\n :root[data-shell-theme=\"light\"] [data-slot=\"shell-top-bar-actions\"]\n :is([data-slot=\"button\"], [data-shell-top-bar-action]).border-sidebar-border:active {\n background-color: color-mix(\n in oklch,\n var(--sidebar-foreground) 6%,\n var(--sidebar-accent)\n ) !important;\n border-color: color-mix(\n in oklch,\n var(--sidebar-foreground) 14%,\n var(--sidebar-border)\n ) !important;\n color: var(--sidebar-foreground) !important;\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n ),\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n :is(.overflow-y-auto, .overflow-x-auto, .overflow-auto) {\n scrollbar-width: thin;\n scrollbar-color: var(--scrollbar-thumb) transparent;\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )::-webkit-scrollbar,\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n :is(.overflow-y-auto, .overflow-x-auto, .overflow-auto)::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )::-webkit-scrollbar-track,\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n :is(.overflow-y-auto, .overflow-x-auto, .overflow-auto)::-webkit-scrollbar-track {\n background: transparent;\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )::-webkit-scrollbar-thumb,\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n :is(.overflow-y-auto, .overflow-x-auto, .overflow-auto)::-webkit-scrollbar-thumb {\n background-color: var(--scrollbar-thumb);\n border-radius: 9999px;\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )::-webkit-scrollbar-thumb:hover,\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n :is(.overflow-y-auto, .overflow-x-auto, .overflow-auto)::-webkit-scrollbar-thumb:hover {\n background-color: var(--scrollbar-thumb-hover);\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n [data-slot=\"scroll-area-thumb\"] {\n background-color: var(--scrollbar-thumb);\n }\n\n :is(\n [data-slot=\"popover-content\"],\n [data-slot=\"hover-card-content\"],\n [data-slot=\"dropdown-menu-content\"],\n [data-slot=\"dropdown-menu-sub-content\"],\n [data-slot=\"select-content\"],\n [data-slot=\"context-menu-content\"],\n [data-slot=\"context-menu-sub-content\"],\n [data-slot=\"menubar-content\"],\n [data-slot=\"menubar-sub-content\"]\n )\n [data-slot=\"scroll-area-thumb\"]:hover {\n background-color: var(--scrollbar-thumb-hover);\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,7 @@
1
1
  import { useTheme } from './chunk-XU3EFSQX.js';
2
2
  import './chunk-4Y5DBM6Z.js';
3
- import { Label, RadioGroup, RadioGroupItem } from './chunk-RV5PMZYZ.js';
3
+ import { RadioGroup, RadioGroupItem } from './chunk-MBZAYH5D.js';
4
+ import { Label } from './chunk-IBGGQXTH.js';
4
5
  import './chunk-DMPSQ22Q.js';
5
6
  import { Monitor, Sun, Moon } from 'lucide-react';
6
7
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/theme-appearance-control.tsx"],"names":[],"mappings":";;;;;;;AAMA,IAAM,OAAA,GAKD;AAAA,EACH;AAAA,IACE,KAAA,EAAO,QAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa,+BAAA;AAAA,IACb,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,OAAO,OAAA,EAAS,KAAA,EAAO,mBAAmB,WAAA,EAAa,uBAAA,EAAyB,MAAM,GAAA,EAAI;AAAA,EAC5F,EAAE,OAAO,MAAA,EAAQ,KAAA,EAAO,QAAQ,WAAA,EAAa,sBAAA,EAAwB,MAAM,IAAA;AAC7E,CAAA;AAEO,SAAS,sBAAA,GAAyB;AACvC,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,QAAA,EAAS;AACrC,EAAA,MAAM,QAAS,KAAA,IAAS,OAAA;AAExB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,qCAAA,EAAsC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,oBACjE,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,aAAA,EAAe,CAAC,IAAA,KAAS,QAAA,CAAS,IAAoB,CAAA;AAAA,QACtD,SAAA,EAAU,qBAAA;AAAA,QAET,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,KAAQ;AACpB,UAAA,MAAM,OAAO,GAAA,CAAI,IAAA;AACjB,UAAA,uBACE,IAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cAEC,OAAA,EAAS,CAAA,MAAA,EAAS,GAAA,CAAI,KAAK,CAAA,CAAA;AAAA,cAC3B,SAAA,EAAU,8LAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,cAAA,EAAA,EAAe,EAAA,EAAI,CAAA,MAAA,EAAS,GAAA,CAAI,KAAK,IAAI,KAAA,EAAO,GAAA,CAAI,KAAA,EAAO,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,oCAC9E,IAAA,EAAA,EAAK,IAAA,EAAM,IAAI,SAAA,EAAU,uCAAA,EAAwC,aAAa,IAAA,EAAM,CAAA;AAAA,gCACrF,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EACd,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2CAAA,EAA6C,QAAA,EAAA,GAAA,CAAI,KAAA,EAAM,CAAA;AAAA,kCACvE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qCAAA,EAAuC,cAAI,WAAA,EAAY;AAAA,iBAAA,EACzE;AAAA;AAAA,aAAA;AAAA,YATK,GAAA,CAAI;AAAA,WAUX;AAAA,QAEJ,CAAC;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ","file":"theme-appearance-control.js","sourcesContent":["import { Monitor, Moon, Sun } from \"lucide-react\";\nimport { Label } from \"../ui/label\";\nimport { RadioGroup, RadioGroupItem } from \"../ui/radio-group\";\nimport { useTheme } from \"./theme-provider\";\nimport type { WebThemeMode } from \"./constants\";\n\nconst OPTIONS: ReadonlyArray<{\n value: WebThemeMode;\n label: string;\n description: string;\n icon: typeof Sun;\n}> = [\n {\n value: \"system\",\n label: \"System\",\n description: \"Follow your device appearance\",\n icon: Monitor,\n },\n { value: \"light\", label: \"Light (default)\", description: \"Always use light mode\", icon: Sun },\n { value: \"dark\", label: \"Dark\", description: \"Always use dark mode\", icon: Moon },\n];\n\nexport function ThemeAppearanceControl() {\n const { theme, setTheme } = useTheme();\n const value = (theme ?? \"light\") as WebThemeMode;\n\n return (\n <div className=\"space-y-3\">\n <Label className=\"text-sm font-medium text-foreground\">Appearance</Label>\n <RadioGroup\n value={value}\n onValueChange={(next) => setTheme(next as WebThemeMode)}\n className=\"flex flex-col gap-2\"\n >\n {OPTIONS.map((opt) => {\n const Icon = opt.icon;\n return (\n <label\n key={opt.value}\n htmlFor={`theme-${opt.value}`}\n className=\"flex cursor-pointer items-start gap-3 rounded-lg border border-border bg-card px-3 py-2.5 transition-colors has-[:focus-visible]:ring-2 has-[:focus-visible]:ring-ring/50 hover:bg-accent/50\"\n >\n <RadioGroupItem id={`theme-${opt.value}`} value={opt.value} className=\"mt-0.5\" />\n <Icon size={16} className=\"mt-0.5 shrink-0 text-muted-foreground\" strokeWidth={1.75} />\n <span className=\"min-w-0 flex-1\">\n <span className=\"block text-sm font-medium text-foreground\">{opt.label}</span>\n <span className=\"block text-xs text-muted-foreground\">{opt.description}</span>\n </span>\n </label>\n );\n })}\n </RadioGroup>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/theme/theme-appearance-control.tsx"],"names":[],"mappings":";;;;;;;;AAMA,IAAM,OAAA,GAKD;AAAA,EACH;AAAA,IACE,KAAA,EAAO,QAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa,+BAAA;AAAA,IACb,IAAA,EAAM;AAAA,GACR;AAAA,EACA,EAAE,OAAO,OAAA,EAAS,KAAA,EAAO,mBAAmB,WAAA,EAAa,uBAAA,EAAyB,MAAM,GAAA,EAAI;AAAA,EAC5F,EAAE,OAAO,MAAA,EAAQ,KAAA,EAAO,QAAQ,WAAA,EAAa,sBAAA,EAAwB,MAAM,IAAA;AAC7E,CAAA;AAEO,SAAS,sBAAA,GAAyB;AACvC,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAS,GAAI,QAAA,EAAS;AACrC,EAAA,MAAM,QAAS,KAAA,IAAS,OAAA;AAExB,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,qCAAA,EAAsC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,oBACjE,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,aAAA,EAAe,CAAC,IAAA,KAAS,QAAA,CAAS,IAAoB,CAAA;AAAA,QACtD,SAAA,EAAU,qBAAA;AAAA,QAET,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,KAAQ;AACpB,UAAA,MAAM,OAAO,GAAA,CAAI,IAAA;AACjB,UAAA,uBACE,IAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cAEC,OAAA,EAAS,CAAA,MAAA,EAAS,GAAA,CAAI,KAAK,CAAA,CAAA;AAAA,cAC3B,SAAA,EAAU,8LAAA;AAAA,cAEV,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,cAAA,EAAA,EAAe,EAAA,EAAI,CAAA,MAAA,EAAS,GAAA,CAAI,KAAK,IAAI,KAAA,EAAO,GAAA,CAAI,KAAA,EAAO,SAAA,EAAU,QAAA,EAAS,CAAA;AAAA,oCAC9E,IAAA,EAAA,EAAK,IAAA,EAAM,IAAI,SAAA,EAAU,uCAAA,EAAwC,aAAa,IAAA,EAAM,CAAA;AAAA,gCACrF,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EACd,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2CAAA,EAA6C,QAAA,EAAA,GAAA,CAAI,KAAA,EAAM,CAAA;AAAA,kCACvE,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qCAAA,EAAuC,cAAI,WAAA,EAAY;AAAA,iBAAA,EACzE;AAAA;AAAA,aAAA;AAAA,YATK,GAAA,CAAI;AAAA,WAUX;AAAA,QAEJ,CAAC;AAAA;AAAA;AACH,GAAA,EACF,CAAA;AAEJ","file":"theme-appearance-control.js","sourcesContent":["import { Monitor, Moon, Sun } from \"lucide-react\";\nimport { Label } from \"../ui/label\";\nimport { RadioGroup, RadioGroupItem } from \"../ui/radio-group\";\nimport { useTheme } from \"./theme-provider\";\nimport type { WebThemeMode } from \"./constants\";\n\nconst OPTIONS: ReadonlyArray<{\n value: WebThemeMode;\n label: string;\n description: string;\n icon: typeof Sun;\n}> = [\n {\n value: \"system\",\n label: \"System\",\n description: \"Follow your device appearance\",\n icon: Monitor,\n },\n { value: \"light\", label: \"Light (default)\", description: \"Always use light mode\", icon: Sun },\n { value: \"dark\", label: \"Dark\", description: \"Always use dark mode\", icon: Moon },\n];\n\nexport function ThemeAppearanceControl() {\n const { theme, setTheme } = useTheme();\n const value = (theme ?? \"light\") as WebThemeMode;\n\n return (\n <div className=\"space-y-3\">\n <Label className=\"text-sm font-medium text-foreground\">Appearance</Label>\n <RadioGroup\n value={value}\n onValueChange={(next) => setTheme(next as WebThemeMode)}\n className=\"flex flex-col gap-2\"\n >\n {OPTIONS.map((opt) => {\n const Icon = opt.icon;\n return (\n <label\n key={opt.value}\n htmlFor={`theme-${opt.value}`}\n className=\"flex cursor-pointer items-start gap-3 rounded-lg border border-border bg-card px-3 py-2.5 transition-colors has-[:focus-visible]:ring-2 has-[:focus-visible]:ring-ring/50 hover:bg-accent/50\"\n >\n <RadioGroupItem id={`theme-${opt.value}`} value={opt.value} className=\"mt-0.5\" />\n <Icon size={16} className=\"mt-0.5 shrink-0 text-muted-foreground\" strokeWidth={1.75} />\n <span className=\"min-w-0 flex-1\">\n <span className=\"block text-sm font-medium text-foreground\">{opt.label}</span>\n <span className=\"block text-xs text-muted-foreground\">{opt.description}</span>\n </span>\n </label>\n );\n })}\n </RadioGroup>\n </div>\n );\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
3
+
4
+ declare function Accordion({ ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>): React.JSX.Element;
5
+ declare function AccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>): React.JSX.Element;
6
+ declare function AccordionTrigger({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Trigger>): React.JSX.Element;
7
+ declare function AccordionContent({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Content>): React.JSX.Element;
8
+
9
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
@@ -0,0 +1,4 @@
1
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '../chunk-T3SOBIYA.js';
2
+ import '../chunk-DMPSQ22Q.js';
3
+ //# sourceMappingURL=accordion.js.map
4
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"accordion.js"}
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ import { DayPicker } from 'react-day-picker';
3
+
4
+ declare function Calendar({ className, classNames, showOutsideDays, ...props }: React.ComponentProps<typeof DayPicker>): React.JSX.Element;
5
+
6
+ export { Calendar };
@@ -0,0 +1,4 @@
1
+ export { Calendar } from '../chunk-5HOK5JHR.js';
2
+ import '../chunk-DMPSQ22Q.js';
3
+ //# sourceMappingURL=calendar.js.map
4
+ //# sourceMappingURL=calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"calendar.js"}
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import { B as Button } from '../button-Iem7kbk0.js';
3
+ import 'class-variance-authority/types';
4
+ import 'class-variance-authority';
5
+
6
+ type CarouselApi = {
7
+ scrollPrev: () => void;
8
+ scrollNext: () => void;
9
+ canScrollPrev: boolean;
10
+ canScrollNext: boolean;
11
+ };
12
+ type CarouselProps = {
13
+ orientation?: "horizontal" | "vertical";
14
+ setApi?: (api: CarouselApi) => void;
15
+ };
16
+ declare function Carousel({ orientation, setApi, className, children, ...props }: React.ComponentProps<"div"> & CarouselProps): React.JSX.Element;
17
+ declare function CarouselContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
18
+ declare function CarouselItem({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
19
+ declare function CarouselPrevious({ className, variant, size, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
20
+ declare function CarouselNext({ className, variant, size, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
21
+
22
+ export { Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious };