@mieweb/ui 0.10.0-dev.16 → 0.10.0-dev.18
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.
- package/dist/CsvBlock-FX5YNGNE.cjs +17 -0
- package/dist/{CsvBlock-FVOKKWIY.cjs.map → CsvBlock-FX5YNGNE.cjs.map} +1 -1
- package/dist/CsvBlock-VLMG7GUO.js +8 -0
- package/dist/{CsvBlock-MXZO4W3N.js.map → CsvBlock-VLMG7GUO.js.map} +1 -1
- package/dist/HtmlPreviewBlock-5JE7L3GR.js +8 -0
- package/dist/{HtmlPreviewBlock-2UGW33SQ.js.map → HtmlPreviewBlock-5JE7L3GR.js.map} +1 -1
- package/dist/HtmlPreviewBlock-UO37JQ3K.cjs +17 -0
- package/dist/{HtmlPreviewBlock-CZKTQUCL.cjs.map → HtmlPreviewBlock-UO37JQ3K.cjs.map} +1 -1
- package/dist/MermaidBlock-3XHFBAMV.js +8 -0
- package/dist/{MermaidBlock-QXAEMOAA.js.map → MermaidBlock-3XHFBAMV.js.map} +1 -1
- package/dist/MermaidBlock-RZ75RPZA.cjs +17 -0
- package/dist/{MermaidBlock-NLDOJZUJ.cjs.map → MermaidBlock-RZ75RPZA.cjs.map} +1 -1
- package/dist/SurveyBlock-MUVJ3JUI.js +8 -0
- package/dist/{SurveyBlock-M5BEFZGT.js.map → SurveyBlock-MUVJ3JUI.js.map} +1 -1
- package/dist/SurveyBlock-VH47YXZC.cjs +17 -0
- package/dist/{SurveyBlock-GSHYZMTW.cjs.map → SurveyBlock-VH47YXZC.cjs.map} +1 -1
- package/dist/{chunk-77PNQILS.js → chunk-2BARVD4C.js} +3 -3
- package/dist/{chunk-77PNQILS.js.map → chunk-2BARVD4C.js.map} +1 -1
- package/dist/{chunk-IUQMOBFB.cjs → chunk-3KPDQG5O.cjs} +5 -5
- package/dist/{chunk-IUQMOBFB.cjs.map → chunk-3KPDQG5O.cjs.map} +1 -1
- package/dist/{chunk-OWLWABAS.js → chunk-4HC2IBOX.js} +3 -3
- package/dist/{chunk-OWLWABAS.js.map → chunk-4HC2IBOX.js.map} +1 -1
- package/dist/{chunk-R5AFQWR5.js → chunk-673GMFA6.js} +3 -3
- package/dist/{chunk-R5AFQWR5.js.map → chunk-673GMFA6.js.map} +1 -1
- package/dist/{chunk-UV4IJNSN.js → chunk-7YO7DNUV.js} +3 -3
- package/dist/{chunk-UV4IJNSN.js.map → chunk-7YO7DNUV.js.map} +1 -1
- package/dist/{chunk-XU2E7MTG.js → chunk-DSB4DKWG.js} +7 -7
- package/dist/{chunk-XU2E7MTG.js.map → chunk-DSB4DKWG.js.map} +1 -1
- package/dist/{chunk-XFLEW7AT.cjs → chunk-DXEPYK3I.cjs} +8 -4
- package/dist/chunk-DXEPYK3I.cjs.map +1 -0
- package/dist/{chunk-IBCCFWD4.js → chunk-EK3BCET6.js} +7 -2
- package/dist/chunk-EK3BCET6.js.map +1 -0
- package/dist/{chunk-WN6A4QOF.js → chunk-FBLVPM2K.js} +3 -3
- package/dist/{chunk-WN6A4QOF.js.map → chunk-FBLVPM2K.js.map} +1 -1
- package/dist/{chunk-CATY3P2U.js → chunk-FIKO4WR6.js} +3 -3
- package/dist/{chunk-CATY3P2U.js.map → chunk-FIKO4WR6.js.map} +1 -1
- package/dist/{chunk-FDP6VS5G.js → chunk-FZURBQJ2.js} +3 -3
- package/dist/{chunk-FDP6VS5G.js.map → chunk-FZURBQJ2.js.map} +1 -1
- package/dist/{chunk-LENW5YOC.js → chunk-GBUVIGD5.js} +46 -17
- package/dist/chunk-GBUVIGD5.js.map +1 -0
- package/dist/{chunk-O5A4GTTG.cjs → chunk-GU5OS7JJ.cjs} +4 -4
- package/dist/{chunk-O5A4GTTG.cjs.map → chunk-GU5OS7JJ.cjs.map} +1 -1
- package/dist/{chunk-YEQLSYJO.cjs → chunk-GVBHDRC7.cjs} +5 -5
- package/dist/{chunk-YEQLSYJO.cjs.map → chunk-GVBHDRC7.cjs.map} +1 -1
- package/dist/{chunk-W5TPBCBM.js → chunk-GVLNXPJX.js} +4 -4
- package/dist/{chunk-W5TPBCBM.js.map → chunk-GVLNXPJX.js.map} +1 -1
- package/dist/{chunk-AXRRBEER.js → chunk-GVM6DTR5.js} +8 -4
- package/dist/chunk-GVM6DTR5.js.map +1 -0
- package/dist/{chunk-UKUKBUME.cjs → chunk-GYXUS65N.cjs} +5 -5
- package/dist/{chunk-UKUKBUME.cjs.map → chunk-GYXUS65N.cjs.map} +1 -1
- package/dist/{chunk-R47H3Y7J.js → chunk-H2IAMSHK.js} +3 -3
- package/dist/{chunk-R47H3Y7J.js.map → chunk-H2IAMSHK.js.map} +1 -1
- package/dist/{chunk-KM5OQQL5.cjs → chunk-HIZWOAWY.cjs} +8 -8
- package/dist/{chunk-KM5OQQL5.cjs.map → chunk-HIZWOAWY.cjs.map} +1 -1
- package/dist/{chunk-6GZKQR7P.cjs → chunk-I4LXSHKO.cjs} +4 -4
- package/dist/{chunk-6GZKQR7P.cjs.map → chunk-I4LXSHKO.cjs.map} +1 -1
- package/dist/{chunk-4LPGJ3ZO.js → chunk-IYWG72DM.js} +4 -4
- package/dist/{chunk-4LPGJ3ZO.js.map → chunk-IYWG72DM.js.map} +1 -1
- package/dist/{chunk-OZ2LP2VQ.cjs → chunk-JELTRRR5.cjs} +9 -9
- package/dist/{chunk-OZ2LP2VQ.cjs.map → chunk-JELTRRR5.cjs.map} +1 -1
- package/dist/{chunk-DXCATYEO.js → chunk-K2K2HP35.js} +3 -3
- package/dist/{chunk-DXCATYEO.js.map → chunk-K2K2HP35.js.map} +1 -1
- package/dist/{chunk-M5NYHH3Z.cjs → chunk-KDW6BD4O.cjs} +4 -4
- package/dist/{chunk-M5NYHH3Z.cjs.map → chunk-KDW6BD4O.cjs.map} +1 -1
- package/dist/{chunk-VNCIIXGO.js → chunk-KHSFJTEX.js} +3 -3
- package/dist/{chunk-VNCIIXGO.js.map → chunk-KHSFJTEX.js.map} +1 -1
- package/dist/{chunk-DF7K6DOJ.cjs → chunk-LFPJ3OUM.cjs} +5 -5
- package/dist/{chunk-DF7K6DOJ.cjs.map → chunk-LFPJ3OUM.cjs.map} +1 -1
- package/dist/{chunk-X2PPZJSL.cjs → chunk-LHBWRMNC.cjs} +46 -16
- package/dist/chunk-LHBWRMNC.cjs.map +1 -0
- package/dist/{chunk-JX4UZEBZ.cjs → chunk-MQPG3KVK.cjs} +8 -8
- package/dist/{chunk-JX4UZEBZ.cjs.map → chunk-MQPG3KVK.cjs.map} +1 -1
- package/dist/{chunk-VLBUT2QM.cjs → chunk-N2CJJHHB.cjs} +4 -4
- package/dist/{chunk-VLBUT2QM.cjs.map → chunk-N2CJJHHB.cjs.map} +1 -1
- package/dist/{chunk-MB5KIIT4.cjs → chunk-N7C4OEP7.cjs} +6 -6
- package/dist/{chunk-MB5KIIT4.cjs.map → chunk-N7C4OEP7.cjs.map} +1 -1
- package/dist/{chunk-LGIQVSAE.cjs → chunk-NUQSQRG3.cjs} +16 -16
- package/dist/{chunk-LGIQVSAE.cjs.map → chunk-NUQSQRG3.cjs.map} +1 -1
- package/dist/{chunk-ETCHEURD.js → chunk-OYBJQBLO.js} +4 -4
- package/dist/{chunk-ETCHEURD.js.map → chunk-OYBJQBLO.js.map} +1 -1
- package/dist/{chunk-VPRKE2YU.cjs → chunk-P5CMZZRZ.cjs} +5 -5
- package/dist/{chunk-VPRKE2YU.cjs.map → chunk-P5CMZZRZ.cjs.map} +1 -1
- package/dist/{chunk-NEFBVO5W.cjs → chunk-QNDP6PE5.cjs} +7 -2
- package/dist/chunk-QNDP6PE5.cjs.map +1 -0
- package/dist/{chunk-WBBOH5QF.js → chunk-QOVJ6Z6R.js} +3 -3
- package/dist/{chunk-WBBOH5QF.js.map → chunk-QOVJ6Z6R.js.map} +1 -1
- package/dist/{chunk-4IETGCMD.js → chunk-R6KPWIGO.js} +4 -4
- package/dist/{chunk-4IETGCMD.js.map → chunk-R6KPWIGO.js.map} +1 -1
- package/dist/{chunk-GRV4MOEO.cjs → chunk-SVXWO37F.cjs} +26 -26
- package/dist/{chunk-GRV4MOEO.cjs.map → chunk-SVXWO37F.cjs.map} +1 -1
- package/dist/{chunk-T7U5HHGK.js → chunk-THLIL6PY.js} +3 -3
- package/dist/{chunk-T7U5HHGK.js.map → chunk-THLIL6PY.js.map} +1 -1
- package/dist/{chunk-PLDJU623.cjs → chunk-TTSSUOEV.cjs} +8 -8
- package/dist/{chunk-PLDJU623.cjs.map → chunk-TTSSUOEV.cjs.map} +1 -1
- package/dist/{chunk-E2B5BLAF.cjs → chunk-TYE5K5WV.cjs} +4 -4
- package/dist/{chunk-E2B5BLAF.cjs.map → chunk-TYE5K5WV.cjs.map} +1 -1
- package/dist/{chunk-YIWJTNR5.cjs → chunk-WCDJFMZO.cjs} +7 -7
- package/dist/{chunk-YIWJTNR5.cjs.map → chunk-WCDJFMZO.cjs.map} +1 -1
- package/dist/{chunk-EQXFDPXV.cjs → chunk-X5KAO35W.cjs} +14 -14
- package/dist/{chunk-EQXFDPXV.cjs.map → chunk-X5KAO35W.cjs.map} +1 -1
- package/dist/{chunk-2BGS7RFM.cjs → chunk-X6A27RGO.cjs} +4 -4
- package/dist/{chunk-2BGS7RFM.cjs.map → chunk-X6A27RGO.cjs.map} +1 -1
- package/dist/{chunk-7U5QYH54.js → chunk-XBTKZCZF.js} +3 -3
- package/dist/{chunk-7U5QYH54.js.map → chunk-XBTKZCZF.js.map} +1 -1
- package/dist/{chunk-TVSGJT6G.cjs → chunk-Y4E2WRUR.cjs} +6 -6
- package/dist/{chunk-TVSGJT6G.cjs.map → chunk-Y4E2WRUR.cjs.map} +1 -1
- package/dist/{chunk-UXI33QGR.js → chunk-YIV4Y4SK.js} +3 -3
- package/dist/{chunk-UXI33QGR.js.map → chunk-YIV4Y4SK.js.map} +1 -1
- package/dist/{chunk-VVZALGPI.js → chunk-YU55JD35.js} +3 -3
- package/dist/{chunk-VVZALGPI.js.map → chunk-YU55JD35.js.map} +1 -1
- package/dist/{chunk-WC25GQZD.js → chunk-ZYL4SNOR.js} +3 -3
- package/dist/{chunk-WC25GQZD.js.map → chunk-ZYL4SNOR.js.map} +1 -1
- package/dist/components/AlertDialog/index.cjs +4 -4
- package/dist/components/AlertDialog/index.js +3 -3
- package/dist/components/Button/index.cjs +4 -4
- package/dist/components/Button/index.js +2 -2
- package/dist/components/CalendarView/index.cjs +5 -5
- package/dist/components/CalendarView/index.js +3 -3
- package/dist/components/CustomizableDashboard/index.cjs +10 -10
- package/dist/components/CustomizableDashboard/index.js +3 -3
- package/dist/components/FloatingWindow/index.cjs +5 -5
- package/dist/components/FloatingWindow/index.js +3 -3
- package/dist/components/ListView/index.cjs +5 -5
- package/dist/components/ListView/index.js +3 -3
- package/dist/components/Markdown/index.cjs +17 -17
- package/dist/components/Markdown/index.js +8 -8
- package/dist/components/MediaEditor/index.cjs +9 -9
- package/dist/components/MediaEditor/index.js +4 -4
- package/dist/components/MediaPlayer/index.cjs +6 -6
- package/dist/components/MediaPlayer/index.js +3 -3
- package/dist/components/MegaMenu/index.cjs +6 -6
- package/dist/components/MegaMenu/index.js +3 -3
- package/dist/components/RadialExplorer/index.cjs +4 -4
- package/dist/components/RadialExplorer/index.js +3 -3
- package/dist/components/RichTextEditor/index.cjs +6 -6
- package/dist/components/RichTextEditor/index.js +3 -3
- package/dist/components/SectionSpyNav/index.cjs +4 -4
- package/dist/components/SectionSpyNav/index.js +3 -3
- package/dist/components/ViewSet/index.cjs +6 -6
- package/dist/components/ViewSet/index.js +5 -5
- package/dist/datavis.cjs +3 -3
- package/dist/datavis.js +2 -2
- package/dist/esheet.cjs +6 -6
- package/dist/esheet.js +3 -3
- package/dist/hooks/index.cjs +22 -18
- package/dist/hooks/index.d.cts +53 -2
- package/dist/hooks/index.d.ts +53 -2
- package/dist/hooks/index.js +1 -1
- package/dist/index.cjs +360 -356
- package/dist/index.d.cts +53 -2
- package/dist/index.d.ts +53 -2
- package/dist/index.js +30 -30
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/dist/templates.cjs +24 -24
- package/dist/templates.js +2 -2
- package/package.json +1 -1
- package/dist/CsvBlock-FVOKKWIY.cjs +0 -17
- package/dist/CsvBlock-MXZO4W3N.js +0 -8
- package/dist/HtmlPreviewBlock-2UGW33SQ.js +0 -8
- package/dist/HtmlPreviewBlock-CZKTQUCL.cjs +0 -17
- package/dist/MermaidBlock-NLDOJZUJ.cjs +0 -17
- package/dist/MermaidBlock-QXAEMOAA.js +0 -8
- package/dist/SurveyBlock-GSHYZMTW.cjs +0 -17
- package/dist/SurveyBlock-M5BEFZGT.js +0 -8
- package/dist/chunk-AXRRBEER.js.map +0 -1
- package/dist/chunk-IBCCFWD4.js.map +0 -1
- package/dist/chunk-LENW5YOC.js.map +0 -1
- package/dist/chunk-NEFBVO5W.cjs.map +0 -1
- package/dist/chunk-X2PPZJSL.cjs.map +0 -1
- package/dist/chunk-XFLEW7AT.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ViewSet/ViewSet.tsx"],"names":["React","jsx","BoardView","CalendarView","GanttView","ListView","jsxs","cn","ViewSwitcher"],"mappings":"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","file":"chunk-TVSGJT6G.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { ViewSwitcher, type ViewOption } from '../ViewSwitcher';\nimport { ListView, type ListViewProps } from '../ListView';\nimport { BoardView, type BoardLabels, type BoardViewProps } from '../BoardView';\nimport {\n CalendarView,\n type CalendarLabels,\n type CalendarViewProps,\n} from '../CalendarView';\nimport { GanttView, type GanttLabels, type GanttViewProps } from '../GanttView';\nimport type { Stage, ViewBaseProps, ViewId } from '../../views/types';\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Every string any layout in the set can render.\n *\n * Each view extends `ViewLabels` with its own — the calendar's month arrows and\n * \"+n more\", the board's move announcements, the Gantt's undated footnote. They\n * are all shared props, so the per-view escape hatches below exclude `labels`;\n * without widening here a non-English host could translate the common strings\n * and nothing else, which would break the contract that every user-facing\n * string is overridable. A view ignores the keys it does not know.\n */\nexport type ViewSetLabels = Partial<CalendarLabels & BoardLabels & GanttLabels>;\n\n/**\n * Props `ViewSet` passes to every layout itself, beyond `ViewBaseProps`. Named\n * here so the per-view escape hatches below can exclude them by key rather than\n * by a hand-kept list that would drift the moment a shared prop is added.\n */\ntype ViewSetOwned = 'stages' | 'onMove' | 'timeZone' | 'locale';\n\ntype ViewOverrides<P, T> = Omit<\n Partial<P>,\n keyof ViewBaseProps<T> | ViewSetOwned\n>;\n\nexport interface ViewSetProps<T> extends ViewBaseProps<T> {\n /** Every string any offered layout can render, not just the shared ones. */\n labels?: ViewSetLabels;\n /** Views to offer, in order. The first is the default when uncontrolled. */\n views: readonly (ViewId | ViewOption)[];\n view?: ViewId;\n defaultView?: ViewId;\n onViewChange?: (view: ViewId) => void;\n /**\n * Remembers the chosen view under this key. Ignored when `view` is\n * controlled — a page with its own URL state should own it there instead.\n */\n storageKey?: string;\n /** Stages for the board and for list grouping. */\n stages?: readonly Stage[];\n onMove?: BoardViewProps<T>['onMove'];\n /**\n * IANA zone the date views read day boundaries in. Shared, because a page\n * showing one collection as a calendar and as a Gantt must place it on the\n * same days in both.\n */\n timeZone?: string;\n /** Locale for date formatting in the calendar and Gantt. */\n locale?: string;\n\n /** Rendered above the switcher row. */\n toolbar?: React.ReactNode;\n /** Rendered under the switcher row, above the view. */\n filters?: React.ReactNode;\n /** The `overview` view. Domain content — the library has no opinion on it. */\n overview?: React.ReactNode;\n /** The `table` view. A tabular collection is a grid, not a view component. */\n table?: React.ReactNode;\n /** Rendered beside the view, for a list-plus-detail layout. */\n detail?: React.ReactNode;\n\n /**\n * Per-view escape hatches for props this shell does not surface. Shared props\n * are excluded: one collection rendered several ways means switching view can\n * never change the records, the selection or the load state.\n *\n * `ViewSetOwned` covers the props the shell passes itself but that are not on\n * `ViewBaseProps`. They are spread after the shared ones, so leaving them open\n * would let one layout carry different stages, a different mutation callback\n * or a different time zone from its neighbours — the same collection quietly\n * disagreeing with itself as you switch tabs.\n */\n listProps?: ViewOverrides<ListViewProps<T>, T>;\n boardProps?: ViewOverrides<BoardViewProps<T>, T>;\n calendarProps?: ViewOverrides<CalendarViewProps<T>, T>;\n ganttProps?: ViewOverrides<GanttViewProps<T>, T>;\n\n classNames?: Partial<\n Record<'toolbar' | 'switcher' | 'body' | 'detail', string>\n >;\n}\n\nconst FIRST_ID = (views: ViewSetProps<unknown>['views']) => {\n const first = views[0];\n return (typeof first === 'string' ? first : first?.id) ?? 'list';\n};\n\n// Remembering the view is an enhancement, never a requirement. `localStorage`\n// can exist and still throw — Safari private browsing and a blocked third-party\n// storage policy both raise on access — so optional chaining is not enough; an\n// unguarded read would take the whole page down to save a preference.\nconst readStored = (key: string): ViewId | null => {\n try {\n return (globalThis.localStorage?.getItem(key) as ViewId | null) ?? null;\n } catch {\n return null;\n }\n};\n\nconst writeStored = (key: string, value: ViewId) => {\n try {\n globalThis.localStorage?.setItem(key, value);\n } catch {\n // Fall back to in-memory state for the session.\n }\n};\n\n// =============================================================================\n// Component\n// =============================================================================\n\n/**\n * The page-level composition: switcher, the enabled views, and the slots a page\n * needs around them. It owns which view is showing and nothing else — items,\n * selection and every mutation stay with the caller.\n */\nexport function ViewSet<T>({\n views,\n view,\n defaultView,\n onViewChange,\n storageKey,\n stages,\n onMove,\n toolbar,\n filters,\n overview,\n table,\n detail,\n listProps,\n boardProps,\n calendarProps,\n ganttProps,\n className,\n classNames,\n ...shared\n}: ViewSetProps<T>) {\n const [internalView, setInternalView] = React.useState<ViewId>(\n () => defaultView ?? FIRST_ID(views)\n );\n\n // `overview` and `table` are the caller's content. Offering either without\n // its slot would put a dead option in the switcher that renders a blank page.\n const offered = React.useMemo(\n () =>\n views.filter((v) => {\n const id = typeof v === 'string' ? v : v.id;\n if (id === 'overview') return overview != null;\n if (id === 'table') return table != null;\n return true;\n }),\n [views, overview, table]\n );\n\n // Read storage after mount: a server render and the first client render must\n // agree, and localStorage is not available to the former.\n React.useEffect(() => {\n if (!storageKey || view) return;\n const stored = readStored(storageKey);\n if (\n stored &&\n offered.some((v) => (typeof v === 'string' ? v : v.id) === stored)\n )\n setInternalView(stored);\n }, [storageKey, view, offered]);\n\n const requested = view ?? internalView;\n const active = offered.some(\n (v) => (typeof v === 'string' ? v : v.id) === requested\n )\n ? requested\n : FIRST_ID(offered);\n\n const changeView = (next: ViewId) => {\n if (!view) setInternalView(next);\n if (storageKey && !view) writeStored(storageKey, next);\n onViewChange?.(next);\n };\n\n const body = (() => {\n switch (active) {\n case 'overview':\n return overview ?? null;\n case 'table':\n return table ?? null;\n case 'board':\n return (\n <BoardView\n {...shared}\n stages={stages ?? []}\n onMove={onMove}\n {...boardProps}\n />\n );\n case 'calendar':\n return <CalendarView {...shared} {...calendarProps} />;\n case 'gantt':\n return <GanttView {...shared} {...ganttProps} />;\n case 'roadmap':\n // A roadmap is the Gantt at a coarse cadence; see Views.mdx. The two\n // props that make it one come last: `ganttProps` is shared with the\n // plain `gantt` case, so a `cadence: 'day'` meant for that view must\n // not quietly turn the Roadmap option into a daily chart.\n return (\n <GanttView\n {...shared}\n {...ganttProps}\n cadence=\"quarter\"\n groupByLane\n />\n );\n case 'list':\n default:\n return <ListView {...shared} stages={stages} {...listProps} />;\n }\n })();\n\n return (\n <div data-slot=\"view-set\" className={cn('flex flex-col gap-3', className)}>\n <div\n data-slot=\"view-set-toolbar\"\n className={cn('flex flex-wrap items-center gap-2', classNames?.toolbar)}\n >\n {toolbar}\n <div\n data-slot=\"view-set-switcher\"\n className={cn('ms-auto', classNames?.switcher)}\n >\n <ViewSwitcher\n views={offered}\n value={active}\n onValueChange={changeView}\n label={shared.labels?.viewSwitcher}\n />\n </div>\n </div>\n {filters}\n <div\n data-slot=\"view-set-body\"\n className={cn(\n // Plain column spans rather than an arbitrary grid template, so a\n // Tailwind 3 consumer needs no extra safelist entry.\n detail && 'gap-3 lg:grid lg:grid-cols-3',\n classNames?.body\n )}\n >\n <div className={cn('min-w-0', detail && 'lg:col-span-2')}>{body}</div>\n {detail && (\n <aside\n data-slot=\"view-set-detail\"\n className={cn('min-w-0', classNames?.detail)}\n >\n {detail}\n </aside>\n )}\n </div>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/ViewSet/ViewSet.tsx"],"names":["React","jsx","BoardView","CalendarView","GanttView","ListView","jsxs","cn","ViewSwitcher"],"mappings":"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","file":"chunk-Y4E2WRUR.cjs","sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { ViewSwitcher, type ViewOption } from '../ViewSwitcher';\nimport { ListView, type ListViewProps } from '../ListView';\nimport { BoardView, type BoardLabels, type BoardViewProps } from '../BoardView';\nimport {\n CalendarView,\n type CalendarLabels,\n type CalendarViewProps,\n} from '../CalendarView';\nimport { GanttView, type GanttLabels, type GanttViewProps } from '../GanttView';\nimport type { Stage, ViewBaseProps, ViewId } from '../../views/types';\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Every string any layout in the set can render.\n *\n * Each view extends `ViewLabels` with its own — the calendar's month arrows and\n * \"+n more\", the board's move announcements, the Gantt's undated footnote. They\n * are all shared props, so the per-view escape hatches below exclude `labels`;\n * without widening here a non-English host could translate the common strings\n * and nothing else, which would break the contract that every user-facing\n * string is overridable. A view ignores the keys it does not know.\n */\nexport type ViewSetLabels = Partial<CalendarLabels & BoardLabels & GanttLabels>;\n\n/**\n * Props `ViewSet` passes to every layout itself, beyond `ViewBaseProps`. Named\n * here so the per-view escape hatches below can exclude them by key rather than\n * by a hand-kept list that would drift the moment a shared prop is added.\n */\ntype ViewSetOwned = 'stages' | 'onMove' | 'timeZone' | 'locale';\n\ntype ViewOverrides<P, T> = Omit<\n Partial<P>,\n keyof ViewBaseProps<T> | ViewSetOwned\n>;\n\nexport interface ViewSetProps<T> extends ViewBaseProps<T> {\n /** Every string any offered layout can render, not just the shared ones. */\n labels?: ViewSetLabels;\n /** Views to offer, in order. The first is the default when uncontrolled. */\n views: readonly (ViewId | ViewOption)[];\n view?: ViewId;\n defaultView?: ViewId;\n onViewChange?: (view: ViewId) => void;\n /**\n * Remembers the chosen view under this key. Ignored when `view` is\n * controlled — a page with its own URL state should own it there instead.\n */\n storageKey?: string;\n /** Stages for the board and for list grouping. */\n stages?: readonly Stage[];\n onMove?: BoardViewProps<T>['onMove'];\n /**\n * IANA zone the date views read day boundaries in. Shared, because a page\n * showing one collection as a calendar and as a Gantt must place it on the\n * same days in both.\n */\n timeZone?: string;\n /** Locale for date formatting in the calendar and Gantt. */\n locale?: string;\n\n /** Rendered above the switcher row. */\n toolbar?: React.ReactNode;\n /** Rendered under the switcher row, above the view. */\n filters?: React.ReactNode;\n /** The `overview` view. Domain content — the library has no opinion on it. */\n overview?: React.ReactNode;\n /** The `table` view. A tabular collection is a grid, not a view component. */\n table?: React.ReactNode;\n /** Rendered beside the view, for a list-plus-detail layout. */\n detail?: React.ReactNode;\n\n /**\n * Per-view escape hatches for props this shell does not surface. Shared props\n * are excluded: one collection rendered several ways means switching view can\n * never change the records, the selection or the load state.\n *\n * `ViewSetOwned` covers the props the shell passes itself but that are not on\n * `ViewBaseProps`. They are spread after the shared ones, so leaving them open\n * would let one layout carry different stages, a different mutation callback\n * or a different time zone from its neighbours — the same collection quietly\n * disagreeing with itself as you switch tabs.\n */\n listProps?: ViewOverrides<ListViewProps<T>, T>;\n boardProps?: ViewOverrides<BoardViewProps<T>, T>;\n calendarProps?: ViewOverrides<CalendarViewProps<T>, T>;\n ganttProps?: ViewOverrides<GanttViewProps<T>, T>;\n\n classNames?: Partial<\n Record<'toolbar' | 'switcher' | 'body' | 'detail', string>\n >;\n}\n\nconst FIRST_ID = (views: ViewSetProps<unknown>['views']) => {\n const first = views[0];\n return (typeof first === 'string' ? first : first?.id) ?? 'list';\n};\n\n// Remembering the view is an enhancement, never a requirement. `localStorage`\n// can exist and still throw — Safari private browsing and a blocked third-party\n// storage policy both raise on access — so optional chaining is not enough; an\n// unguarded read would take the whole page down to save a preference.\nconst readStored = (key: string): ViewId | null => {\n try {\n return (globalThis.localStorage?.getItem(key) as ViewId | null) ?? null;\n } catch {\n return null;\n }\n};\n\nconst writeStored = (key: string, value: ViewId) => {\n try {\n globalThis.localStorage?.setItem(key, value);\n } catch {\n // Fall back to in-memory state for the session.\n }\n};\n\n// =============================================================================\n// Component\n// =============================================================================\n\n/**\n * The page-level composition: switcher, the enabled views, and the slots a page\n * needs around them. It owns which view is showing and nothing else — items,\n * selection and every mutation stay with the caller.\n */\nexport function ViewSet<T>({\n views,\n view,\n defaultView,\n onViewChange,\n storageKey,\n stages,\n onMove,\n toolbar,\n filters,\n overview,\n table,\n detail,\n listProps,\n boardProps,\n calendarProps,\n ganttProps,\n className,\n classNames,\n ...shared\n}: ViewSetProps<T>) {\n const [internalView, setInternalView] = React.useState<ViewId>(\n () => defaultView ?? FIRST_ID(views)\n );\n\n // `overview` and `table` are the caller's content. Offering either without\n // its slot would put a dead option in the switcher that renders a blank page.\n const offered = React.useMemo(\n () =>\n views.filter((v) => {\n const id = typeof v === 'string' ? v : v.id;\n if (id === 'overview') return overview != null;\n if (id === 'table') return table != null;\n return true;\n }),\n [views, overview, table]\n );\n\n // Read storage after mount: a server render and the first client render must\n // agree, and localStorage is not available to the former.\n React.useEffect(() => {\n if (!storageKey || view) return;\n const stored = readStored(storageKey);\n if (\n stored &&\n offered.some((v) => (typeof v === 'string' ? v : v.id) === stored)\n )\n setInternalView(stored);\n }, [storageKey, view, offered]);\n\n const requested = view ?? internalView;\n const active = offered.some(\n (v) => (typeof v === 'string' ? v : v.id) === requested\n )\n ? requested\n : FIRST_ID(offered);\n\n const changeView = (next: ViewId) => {\n if (!view) setInternalView(next);\n if (storageKey && !view) writeStored(storageKey, next);\n onViewChange?.(next);\n };\n\n const body = (() => {\n switch (active) {\n case 'overview':\n return overview ?? null;\n case 'table':\n return table ?? null;\n case 'board':\n return (\n <BoardView\n {...shared}\n stages={stages ?? []}\n onMove={onMove}\n {...boardProps}\n />\n );\n case 'calendar':\n return <CalendarView {...shared} {...calendarProps} />;\n case 'gantt':\n return <GanttView {...shared} {...ganttProps} />;\n case 'roadmap':\n // A roadmap is the Gantt at a coarse cadence; see Views.mdx. The two\n // props that make it one come last: `ganttProps` is shared with the\n // plain `gantt` case, so a `cadence: 'day'` meant for that view must\n // not quietly turn the Roadmap option into a daily chart.\n return (\n <GanttView\n {...shared}\n {...ganttProps}\n cadence=\"quarter\"\n groupByLane\n />\n );\n case 'list':\n default:\n return <ListView {...shared} stages={stages} {...listProps} />;\n }\n })();\n\n return (\n <div data-slot=\"view-set\" className={cn('flex flex-col gap-3', className)}>\n <div\n data-slot=\"view-set-toolbar\"\n className={cn('flex flex-wrap items-center gap-2', classNames?.toolbar)}\n >\n {toolbar}\n <div\n data-slot=\"view-set-switcher\"\n className={cn('ms-auto', classNames?.switcher)}\n >\n <ViewSwitcher\n views={offered}\n value={active}\n onValueChange={changeView}\n label={shared.labels?.viewSwitcher}\n />\n </div>\n </div>\n {filters}\n <div\n data-slot=\"view-set-body\"\n className={cn(\n // Plain column spans rather than an arbitrary grid template, so a\n // Tailwind 3 consumer needs no extra safelist entry.\n detail && 'gap-3 lg:grid lg:grid-cols-3',\n classNames?.body\n )}\n >\n <div className={cn('min-w-0', detail && 'lg:col-span-2')}>{body}</div>\n {detail && (\n <aside\n data-slot=\"view-set-detail\"\n className={cn('min-w-0', classNames?.detail)}\n >\n {detail}\n </aside>\n )}\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Modal, ModalBody, ModalFooter } from './chunk-5JJ2DAE4.js';
|
|
2
|
-
import { Button } from './chunk-
|
|
2
|
+
import { Button } from './chunk-7YO7DNUV.js';
|
|
3
3
|
import { cn } from './chunk-TQONQSJO.js';
|
|
4
4
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
5
5
|
|
|
@@ -74,5 +74,5 @@ function AlertDialog({
|
|
|
74
74
|
AlertDialog.displayName = "AlertDialog";
|
|
75
75
|
|
|
76
76
|
export { AlertDialog };
|
|
77
|
-
//# sourceMappingURL=chunk-
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
77
|
+
//# sourceMappingURL=chunk-YIV4Y4SK.js.map
|
|
78
|
+
//# sourceMappingURL=chunk-YIV4Y4SK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/AlertDialog/AlertDialog.tsx"],"names":[],"mappings":";;;;;AAqDA,SAAS,WAAA,CAAY;AAAA,EACnB,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,WAAA,GAAc,UAAA;AAAA,EACd,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,cAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,QAAA,IAAW;AACX,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,QAAA,IAAW;AAAA,EACb,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA,EAAK,IAAA;AAAA,MACL,mBAAA,EAAqB,KAAA;AAAA,MACrB,aAAA,EAAe,KAAA;AAAA,MACf,SAAA;AAAA,MACA,YAAA,EAAY,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,MAAA;AAAA,MAEhD,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,SAAA,EAAA,EAAU,WAAU,WAAA,EACnB,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,oBAAA;AAAA,cACV,SAAA,EAAU,sCAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UACC,WAAA,oBACC,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,0BAAA;AAAA,cACV,SAAA,EAAW,GAAG,oCAAoC,CAAA;AAAA,cAEjD,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAED;AAAA,SAAA,EACH,CAAA;AAAA,6BACC,WAAA,EAAA,EACE,QAAA,EAAA;AAAA,UAAA,CAAC,8BACA,GAAA,CAAC,MAAA,EAAA,EAAO,SAAQ,WAAA,EAAY,OAAA,EAAS,cAClC,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,0BAEF,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,OAAA,KAAY,aAAA,GAAgB,QAAA,GAAW,SAAA;AAAA,cAChD,OAAA,EAAS,YAAA;AAAA,cACT,QAAA,EAAU,cAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/AlertDialog/AlertDialog.tsx"],"names":[],"mappings":";;;;;AAqDA,SAAS,WAAA,CAAY;AAAA,EACnB,IAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,WAAA,GAAc,UAAA;AAAA,EACd,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA,GAAU,SAAA;AAAA,EACV,cAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,QAAA,IAAW;AACX,IAAA,YAAA,CAAa,KAAK,CAAA;AAAA,EACpB,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,QAAA,IAAW;AAAA,EACb,CAAA;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA,EAAK,IAAA;AAAA,MACL,mBAAA,EAAqB,KAAA;AAAA,MACrB,aAAA,EAAe,KAAA;AAAA,MACf,SAAA;AAAA,MACA,YAAA,EAAY,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,MAAA;AAAA,MAEhD,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,SAAA,EAAA,EAAU,WAAU,WAAA,EACnB,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,oBAAA;AAAA,cACV,SAAA,EAAU,sCAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UACC,WAAA,oBACC,GAAA;AAAA,YAAC,GAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,0BAAA;AAAA,cACV,SAAA,EAAW,GAAG,oCAAoC,CAAA;AAAA,cAEjD,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAED;AAAA,SAAA,EACH,CAAA;AAAA,6BACC,WAAA,EAAA,EACE,QAAA,EAAA;AAAA,UAAA,CAAC,8BACA,GAAA,CAAC,MAAA,EAAA,EAAO,SAAQ,WAAA,EAAY,OAAA,EAAS,cAClC,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,0BAEF,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,OAAA,KAAY,aAAA,GAAgB,QAAA,GAAW,SAAA;AAAA,cAChD,OAAA,EAAS,YAAA;AAAA,cACT,QAAA,EAAU,cAAA;AAAA,cAET,QAAA,EAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-YIV4Y4SK.js","sourcesContent":["import * as React from 'react';\nimport { cn } from '../../utils/cn';\nimport { Modal, ModalBody, ModalFooter, type ModalProps } from '../Modal';\nimport { Button } from '../Button';\n\nexport interface AlertDialogProps extends Pick<\n ModalProps,\n 'open' | 'onOpenChange'\n> {\n /** Dialog title */\n title: React.ReactNode;\n /** Optional descriptive body text */\n description?: React.ReactNode;\n /** Custom body content (rendered below the description) */\n children?: React.ReactNode;\n /** Label for the cancel button (default \"Cancel\") */\n cancelLabel?: React.ReactNode;\n /** Label for the confirm/action button (default \"Continue\") */\n actionLabel?: React.ReactNode;\n /** Called when the action button is clicked */\n onAction?: () => void;\n /** Called when the cancel button is clicked */\n onCancel?: () => void;\n /** Visual emphasis for the action button */\n variant?: 'default' | 'destructive';\n /** Disables the action button */\n actionDisabled?: boolean;\n /** Hides the cancel button */\n hideCancel?: boolean;\n /** Additional class name for the dialog content */\n className?: string;\n}\n\n/**\n * A modal dialog that interrupts the user with important content and expects\n * a response. Built on top of {@link Modal}.\n *\n * Unlike a regular Modal, it does not close on overlay click or Escape by\n * default — the user must explicitly choose an action.\n *\n * @example\n * ```tsx\n * <AlertDialog\n * open={open}\n * onOpenChange={setOpen}\n * title=\"Delete case?\"\n * description=\"This action cannot be undone.\"\n * variant=\"destructive\"\n * actionLabel=\"Delete\"\n * onAction={handleDelete}\n * />\n * ```\n */\nfunction AlertDialog({\n open,\n onOpenChange,\n title,\n description,\n children,\n cancelLabel = 'Cancel',\n actionLabel = 'Continue',\n onAction,\n onCancel,\n variant = 'default',\n actionDisabled,\n hideCancel,\n className,\n}: AlertDialogProps) {\n const handleCancel = () => {\n onCancel?.();\n onOpenChange(false);\n };\n\n const handleAction = () => {\n onAction?.();\n };\n\n return (\n <Modal\n open={open}\n onOpenChange={onOpenChange}\n size=\"sm\"\n closeOnOverlayClick={false}\n closeOnEscape={false}\n className={className}\n aria-label={typeof title === 'string' ? title : undefined}\n >\n <ModalBody className=\"px-6 py-5\">\n <h2\n data-slot=\"alert-dialog-title\"\n className=\"text-lg font-semibold tracking-tight\"\n >\n {title}\n </h2>\n {description && (\n <p\n data-slot=\"alert-dialog-description\"\n className={cn('text-muted-foreground mt-2 text-sm')}\n >\n {description}\n </p>\n )}\n {children}\n </ModalBody>\n <ModalFooter>\n {!hideCancel && (\n <Button variant=\"secondary\" onClick={handleCancel}>\n {cancelLabel}\n </Button>\n )}\n <Button\n variant={variant === 'destructive' ? 'danger' : 'primary'}\n onClick={handleAction}\n disabled={actionDisabled}\n >\n {actionLabel}\n </Button>\n </ModalFooter>\n </Modal>\n );\n}\n\nAlertDialog.displayName = 'AlertDialog';\n\nexport { AlertDialog };\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FenceBlock } from './chunk-
|
|
1
|
+
import { FenceBlock } from './chunk-QOVJ6Z6R.js';
|
|
2
2
|
import DOMPurify from 'dompurify';
|
|
3
3
|
import { useState, useMemo, useCallback, useEffect } from 'react';
|
|
4
4
|
import { jsx } from 'react/jsx-runtime';
|
|
@@ -144,5 +144,5 @@ var MermaidBlock = ({ code, id }) => {
|
|
|
144
144
|
};
|
|
145
145
|
|
|
146
146
|
export { MermaidBlock };
|
|
147
|
-
//# sourceMappingURL=chunk-
|
|
148
|
-
//# sourceMappingURL=chunk-
|
|
147
|
+
//# sourceMappingURL=chunk-YU55JD35.js.map
|
|
148
|
+
//# sourceMappingURL=chunk-YU55JD35.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Markdown/MermaidBlock.tsx"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/Markdown/MermaidBlock.tsx"],"names":[],"mappings":"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","file":"chunk-YU55JD35.js","sourcesContent":["/**\n * MermaidBlock — Renders Mermaid diagrams.\n * Requires `mermaid` to be installed by the consumer (optional peer dependency).\n */\nimport DOMPurify from 'dompurify';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { FenceBlock } from './FenceBlock';\n\ninterface MermaidBlockProps {\n code: string;\n id: string;\n}\n\ntype MermaidApi = {\n initialize: (config: Record<string, unknown>) => void;\n parse: (text: string) => Promise<unknown>;\n render: (id: string, text: string) => Promise<{ svg: string }>;\n};\n\nlet mermaidInstance: MermaidApi | null = null;\nlet mermaidReady: Promise<MermaidApi> | null = null;\nlet mermaidTheme: 'dark' | 'default' = 'default';\n\nfunction currentTheme(): 'dark' | 'default' {\n return document.documentElement.classList.contains('dark') ||\n document.documentElement.getAttribute('data-theme') === 'dark'\n ? 'dark'\n : 'default';\n}\n\nfunction buildConfig(theme: 'dark' | 'default'): Record<string, unknown> {\n const base: Record<string, unknown> = {\n startOnLoad: false,\n theme,\n securityLevel: 'strict',\n };\n if (theme === 'dark') {\n base.themeVariables = {\n nodeBorder: '#6b7280',\n mainBkg: '#4a4a4a',\n nodeTextColor: '#ffffff',\n clusterBkg: '#374151',\n titleColor: '#ffffff',\n edgeLabelBackground: '#374151',\n lineColor: '#9ca3af',\n };\n }\n return base;\n}\n\nasync function getMermaid(): Promise<MermaidApi> {\n const theme = currentTheme();\n if (mermaidInstance) {\n if (theme !== mermaidTheme) {\n mermaidTheme = theme;\n mermaidInstance.initialize(buildConfig(theme));\n }\n return mermaidInstance;\n }\n if (!mermaidReady) {\n mermaidReady = import(/* @vite-ignore */ 'mermaid').then((mod) => {\n const m = (mod as { default: MermaidApi }).default;\n mermaidTheme = currentTheme();\n m.initialize(buildConfig(mermaidTheme));\n mermaidInstance = m;\n return m;\n });\n }\n return mermaidReady;\n}\n\nfunction sanitiseSvg(svg: string): string {\n return DOMPurify.sanitize(svg, {\n USE_PROFILES: { svg: true, svgFilters: true },\n // Allow <style> so mermaid's embedded CSS applies, and <foreignObject>\n // so node label text renders (mermaid escapes its content in strict mode).\n ADD_TAGS: ['style', 'foreignObject'],\n ADD_ATTR: [\n 'style',\n 'class',\n 'dominant-baseline',\n 'text-anchor',\n 'font-size',\n 'font-family',\n 'marker-end',\n 'marker-start',\n 'marker-mid',\n 'stroke-dasharray',\n 'stroke-width',\n ],\n FORBID_TAGS: ['script'],\n FORBID_ATTR: ['onload', 'onerror', 'onclick', 'onmouseover'],\n }) as string;\n}\n\nexport const MermaidBlock: React.FC<MermaidBlockProps> = ({ code, id }) => {\n const [svg, setSvg] = useState<string>('');\n const [error, setError] = useState<string>('');\n const [loading, setLoading] = useState(true);\n\n // Derive an accessible label from the diagram's declared type (first keyword).\n const diagramLabel = useMemo(() => {\n const firstWord =\n code\n .trim()\n .split(/[\\s\\n]/)[0]\n ?.toLowerCase() ?? '';\n const typeMap: Record<string, string> = {\n graph: 'Flowchart',\n flowchart: 'Flowchart',\n sequencediagram: 'Sequence diagram',\n classdiagram: 'Class diagram',\n statediagram: 'State diagram',\n 'statediagram-v2': 'State diagram',\n erdiagram: 'Entity relationship diagram',\n gantt: 'Gantt chart',\n pie: 'Pie chart',\n journey: 'User journey diagram',\n gitgraph: 'Git graph',\n mindmap: 'Mind map',\n timeline: 'Timeline',\n quadrantchart: 'Quadrant chart',\n };\n return `${typeMap[firstWord] ?? 'Mermaid'} diagram`;\n }, [code]);\n\n const render = useCallback(async () => {\n setLoading(true);\n setError('');\n try {\n const mermaid = await getMermaid();\n await mermaid.parse(code);\n const { svg: rendered } = await mermaid.render(`mermaid-${id}`, code);\n setSvg(sanitiseSvg(rendered));\n } catch (err) {\n setError((err as Error).message ?? 'Failed to render diagram');\n } finally {\n setLoading(false);\n }\n }, [code, id]);\n\n useEffect(() => {\n void render();\n }, [render]);\n\n // Re-render when the page theme changes (dark ↔ light)\n useEffect(() => {\n const observer = new MutationObserver(() => void render());\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class', 'data-theme'],\n });\n return () => observer.disconnect();\n }, [render]);\n\n return (\n <FenceBlock\n code={code}\n language=\"mermaid\"\n supportsRawView\n error={error || undefined}\n >\n {loading ? (\n <div className=\"flex items-center justify-center p-8\">\n <div className=\"border-primary-500 h-6 w-6 animate-spin rounded-full border-2 border-t-transparent\" />\n </div>\n ) : (\n <div\n className=\"mermaid-svg flex justify-center p-4\"\n role=\"img\"\n aria-label={diagramLabel}\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n )}\n </FenceBlock>\n );\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Button } from './chunk-
|
|
1
|
+
import { Button } from './chunk-7YO7DNUV.js';
|
|
2
2
|
import { cn } from './chunk-TQONQSJO.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Minus, ExternalLink, X, Square } from 'lucide-react';
|
|
@@ -316,5 +316,5 @@ var MinimizedWindow = React.forwardRef(
|
|
|
316
316
|
MinimizedWindow.displayName = "MinimizedWindow";
|
|
317
317
|
|
|
318
318
|
export { FloatingWindow, MinimizedWindow };
|
|
319
|
-
//# sourceMappingURL=chunk-
|
|
320
|
-
//# sourceMappingURL=chunk-
|
|
319
|
+
//# sourceMappingURL=chunk-ZYL4SNOR.js.map
|
|
320
|
+
//# sourceMappingURL=chunk-ZYL4SNOR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/FloatingWindow/FloatingWindow.tsx"],"names":[],"mappings":"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","file":"chunk-WC25GQZD.js","sourcesContent":["import * as React from 'react';\nimport { Minus, Square, ExternalLink, X } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Button } from '../Button';\n\ntype ResizeDirection = 'n' | 's' | 'e' | 'w' | 'ne' | 'nw' | 'se' | 'sw';\n\nexport interface FloatingWindowProps {\n /** Whether the window is rendered. */\n open: boolean;\n /** Whether the window is collapsed to a minimized bar (renders nothing). */\n minimized?: boolean;\n /** Window title shown in the header. */\n title: React.ReactNode;\n /** Window body content. */\n children: React.ReactNode;\n /** Footer content, typically action buttons. */\n footer?: React.ReactNode;\n /** Called when the close control is activated. */\n onClose: () => void;\n /** Called when the minimize control is activated. Hidden when omitted. */\n onMinimize?: () => void;\n /** Called when the pop-out control is activated. Hidden when omitted. */\n onPopOut?: () => void;\n /**\n * When `true` the window floats at a draggable position. When `false`\n * (default) it is centered over a dimmed overlay like a modal.\n */\n draggable?: boolean;\n /** Whether the window can be resized from its edges/corners. Default true. */\n resizable?: boolean;\n /** Initial width in pixels. Default 1024. */\n defaultWidth?: number;\n /** Initial height in pixels. Default 600. */\n defaultHeight?: number;\n /** Minimum width in pixels. Default 600. */\n minWidth?: number;\n /** Minimum height in pixels. Default 400. */\n minHeight?: number;\n /** Class applied to the window container. */\n className?: string;\n /** Accessible label for the dialog when the title is not text. */\n 'aria-label'?: string;\n}\n\n// Resize handles are genuinely physical: their geometry is tied to mouse\n// clientX/clientY drag math, and every edge/corner has a handle, so RTL users\n// lose nothing. Exempt from the RTL guard.\nconst RESIZE_HANDLES: { dir: ResizeDirection; className: string }[] = [\n { dir: 'nw', className: 'top-0 left-0 h-2 w-2 cursor-nw-resize' }, // rtl-ignore\n { dir: 'ne', className: 'top-0 right-0 h-2 w-2 cursor-ne-resize' }, // rtl-ignore\n { dir: 'sw', className: 'bottom-0 left-0 h-2 w-2 cursor-sw-resize' }, // rtl-ignore\n { dir: 'n', className: 'top-0 left-2 right-2 h-1 cursor-n-resize' }, // rtl-ignore\n { dir: 's', className: 'bottom-0 left-2 right-2 h-1 cursor-s-resize' }, // rtl-ignore\n { dir: 'w', className: 'left-0 top-2 bottom-2 w-1 cursor-w-resize' }, // rtl-ignore\n { dir: 'e', className: 'right-0 top-2 bottom-2 w-1 cursor-e-resize' }, // rtl-ignore\n];\n\n/**\n * A presentational floating window shell used for pop-out editors (notes,\n * letters, etc.). It can render as a centered modal-style window or as a\n * draggable, freely-positioned window, and supports edge/corner resizing.\n * Open/minimize/close state and footer actions are controlled via props so it\n * can be wired to any store.\n */\nconst FloatingWindow = React.forwardRef<HTMLDivElement, FloatingWindowProps>(\n (\n {\n open,\n minimized = false,\n title,\n children,\n footer,\n onClose,\n onMinimize,\n onPopOut,\n draggable = false,\n resizable = true,\n defaultWidth = 1024,\n defaultHeight = 600,\n minWidth = 600,\n minHeight = 400,\n className,\n 'aria-label': ariaLabel,\n },\n ref\n ) => {\n const [size, setSize] = React.useState({\n width: defaultWidth,\n height: defaultHeight,\n });\n const [position, setPosition] = React.useState({ x: 50, y: 50 });\n\n const dragRef = React.useRef<{ x: number; y: number } | null>(null);\n const resizeRef = React.useRef<{\n dir: ResizeDirection;\n startX: number;\n startY: number;\n startW: number;\n startH: number;\n startPosX: number;\n startPosY: number;\n } | null>(null);\n\n const titleId = React.useId();\n\n const handleResizeStart = (e: React.MouseEvent, dir: ResizeDirection) => {\n e.preventDefault();\n e.stopPropagation();\n resizeRef.current = {\n dir,\n startX: e.clientX,\n startY: e.clientY,\n startW: size.width,\n startH: size.height,\n startPosX: position.x,\n startPosY: position.y,\n };\n };\n\n const handleDragStart = (e: React.MouseEvent) => {\n if (!draggable) return;\n if ((e.target as HTMLElement).closest('[data-window-controls]')) return;\n const rect = (e.currentTarget as HTMLElement)\n .closest('[data-slot=\"floating-window\"]')!\n .getBoundingClientRect();\n dragRef.current = { x: e.clientX - rect.left, y: e.clientY - rect.top };\n };\n\n React.useEffect(() => {\n if (!open || minimized) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n if (dragRef.current) {\n setPosition({\n x: e.clientX - dragRef.current.x,\n y: e.clientY - dragRef.current.y,\n });\n return;\n }\n const r = resizeRef.current;\n if (!r) return;\n const deltaX = e.clientX - r.startX;\n const deltaY = e.clientY - r.startY;\n let newWidth = r.startW;\n let newHeight = r.startH;\n let newX = r.startPosX;\n let newY = r.startPosY;\n\n if (r.dir.includes('e')) {\n newWidth = Math.max(\n minWidth,\n Math.min(window.innerWidth - 40, r.startW + deltaX)\n );\n }\n if (r.dir.includes('w')) {\n newWidth = Math.max(minWidth, r.startW - deltaX);\n if (draggable) newX = r.startPosX + (r.startW - newWidth);\n }\n if (r.dir.includes('s')) {\n newHeight = Math.max(\n minHeight,\n Math.min(window.innerHeight - 40, r.startH + deltaY)\n );\n }\n if (r.dir.includes('n')) {\n newHeight = Math.max(minHeight, r.startH - deltaY);\n if (draggable) newY = r.startPosY + (r.startH - newHeight);\n }\n\n setSize({ width: newWidth, height: newHeight });\n if (draggable && (r.dir.includes('w') || r.dir.includes('n'))) {\n setPosition({ x: newX, y: newY });\n }\n };\n\n const handleMouseUp = () => {\n dragRef.current = null;\n resizeRef.current = null;\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [open, minimized, draggable, minWidth, minHeight]);\n\n if (!open || minimized) return null;\n\n const windowEl = (\n <div\n ref={ref}\n data-slot=\"floating-window\"\n role=\"dialog\"\n aria-modal={draggable ? undefined : true}\n aria-labelledby={typeof title === 'string' ? titleId : undefined}\n aria-label={typeof title === 'string' ? undefined : ariaLabel}\n className={cn(\n 'bg-card text-card-foreground relative flex flex-col overflow-hidden rounded-lg shadow-2xl',\n draggable && 'border-primary-800 fixed border-2',\n className\n )}\n style={\n draggable\n ? {\n left: position.x,\n top: position.y,\n width: size.width,\n height: size.height,\n maxWidth: 'calc(100vw - 40px)',\n maxHeight: 'calc(100vh - 40px)',\n zIndex: 50,\n }\n : {\n width: size.width,\n height: size.height,\n maxWidth: 'calc(100vw - 40px)',\n maxHeight: 'calc(100vh - 40px)',\n }\n }\n >\n {resizable &&\n RESIZE_HANDLES.map((handle) => (\n <div\n key={handle.dir}\n aria-hidden=\"true\"\n className={cn('absolute z-10', handle.className)}\n onMouseDown={(e) => handleResizeStart(e, handle.dir)}\n />\n ))}\n {resizable && (\n <div\n aria-hidden=\"true\"\n // rtl-ignore -- physical se-corner grip, paired with clientX resize math\n className=\"hover:bg-muted/50 absolute right-0 bottom-0 z-10 h-4 w-4 cursor-se-resize rounded-tl\"\n onMouseDown={(e) => handleResizeStart(e, 'se')}\n >\n <svg\n className=\"text-muted-foreground/50 h-4 w-4\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path d=\"M22 22H20V20H22V22ZM22 18H20V16H22V18ZM18 22H16V20H18V22ZM22 14H20V12H22V14ZM18 18H16V16H18V18ZM14 22H12V20H14V22Z\" />\n </svg>\n </div>\n )}\n\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions -- header acts as an optional drag handle; the controls inside remain keyboard accessible */}\n <div\n data-slot=\"floating-window-header\"\n className={cn(\n 'bg-primary-800 text-primary-foreground flex items-center justify-between rounded-t-lg px-4 py-3',\n draggable && 'cursor-move'\n )}\n onMouseDown={handleDragStart}\n >\n <h2\n id={typeof title === 'string' ? titleId : undefined}\n className=\"text-lg font-semibold\"\n >\n {title}\n </h2>\n <div data-window-controls className=\"flex items-center gap-1\">\n {onMinimize && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-primary-foreground hover:bg-primary-foreground/20 h-8 w-8 p-0\"\n onClick={onMinimize}\n aria-label=\"Minimize\"\n title=\"Minimize\"\n >\n <Minus className=\"h-4 w-4\" />\n </Button>\n )}\n {onPopOut && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-primary-foreground hover:bg-primary-foreground/20 h-8 w-8 p-0\"\n onClick={onPopOut}\n aria-label=\"Open in new window\"\n title=\"Open in new window\"\n >\n <ExternalLink className=\"h-4 w-4\" />\n </Button>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-primary-foreground hover:bg-primary-foreground/20 h-8 w-8 p-0\"\n onClick={onClose}\n aria-label=\"Close\"\n title=\"Close\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n {/* eslint-disable jsx-a11y/no-noninteractive-tabindex */}\n <div\n data-slot=\"floating-window-content\"\n role=\"region\"\n className=\"flex-1 overflow-y-auto\"\n tabIndex={0}\n >\n {children}\n </div>\n {/* eslint-enable jsx-a11y/no-noninteractive-tabindex */}\n\n {footer && (\n <div\n data-slot=\"floating-window-footer\"\n className=\"border-border bg-card flex items-center justify-end gap-3 rounded-b-lg border-t px-6 py-4\"\n >\n {footer}\n </div>\n )}\n </div>\n );\n\n if (draggable) return windowEl;\n\n return (\n <div\n data-slot=\"floating-window-overlay\"\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n >\n {windowEl}\n </div>\n );\n }\n);\n\nFloatingWindow.displayName = 'FloatingWindow';\n\nexport interface MinimizedWindowProps {\n /** Title shown on the minimized bar. */\n title: React.ReactNode;\n /** Called when the bar is activated to restore the window. */\n onRestore: () => void;\n /** Called when the close control is activated. */\n onClose: () => void;\n /** Additional class for the minimized bar. */\n className?: string;\n}\n\n/**\n * A compact bar representing a minimized {@link FloatingWindow}. Render this\n * (typically in a docked tray) while the corresponding window is minimized.\n */\nconst MinimizedWindow = React.forwardRef<HTMLDivElement, MinimizedWindowProps>(\n ({ title, onRestore, onClose, className }, ref) => (\n <div\n ref={ref}\n data-slot=\"minimized-window\"\n className={cn(\n 'border-border bg-card flex min-w-[200px] items-center gap-2 rounded-lg border px-3 py-2 shadow-md',\n className\n )}\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 px-2\"\n onClick={onRestore}\n >\n <Square className=\"me-1 h-3 w-3\" />\n <span className=\"truncate text-sm\">{title}</span>\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"ms-auto h-6 w-6 p-0\"\n onClick={onClose}\n aria-label=\"Close\"\n title=\"Close\"\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </div>\n )\n);\n\nMinimizedWindow.displayName = 'MinimizedWindow';\n\nexport { FloatingWindow, MinimizedWindow };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/FloatingWindow/FloatingWindow.tsx"],"names":[],"mappings":"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","file":"chunk-ZYL4SNOR.js","sourcesContent":["import * as React from 'react';\nimport { Minus, Square, ExternalLink, X } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Button } from '../Button';\n\ntype ResizeDirection = 'n' | 's' | 'e' | 'w' | 'ne' | 'nw' | 'se' | 'sw';\n\nexport interface FloatingWindowProps {\n /** Whether the window is rendered. */\n open: boolean;\n /** Whether the window is collapsed to a minimized bar (renders nothing). */\n minimized?: boolean;\n /** Window title shown in the header. */\n title: React.ReactNode;\n /** Window body content. */\n children: React.ReactNode;\n /** Footer content, typically action buttons. */\n footer?: React.ReactNode;\n /** Called when the close control is activated. */\n onClose: () => void;\n /** Called when the minimize control is activated. Hidden when omitted. */\n onMinimize?: () => void;\n /** Called when the pop-out control is activated. Hidden when omitted. */\n onPopOut?: () => void;\n /**\n * When `true` the window floats at a draggable position. When `false`\n * (default) it is centered over a dimmed overlay like a modal.\n */\n draggable?: boolean;\n /** Whether the window can be resized from its edges/corners. Default true. */\n resizable?: boolean;\n /** Initial width in pixels. Default 1024. */\n defaultWidth?: number;\n /** Initial height in pixels. Default 600. */\n defaultHeight?: number;\n /** Minimum width in pixels. Default 600. */\n minWidth?: number;\n /** Minimum height in pixels. Default 400. */\n minHeight?: number;\n /** Class applied to the window container. */\n className?: string;\n /** Accessible label for the dialog when the title is not text. */\n 'aria-label'?: string;\n}\n\n// Resize handles are genuinely physical: their geometry is tied to mouse\n// clientX/clientY drag math, and every edge/corner has a handle, so RTL users\n// lose nothing. Exempt from the RTL guard.\nconst RESIZE_HANDLES: { dir: ResizeDirection; className: string }[] = [\n { dir: 'nw', className: 'top-0 left-0 h-2 w-2 cursor-nw-resize' }, // rtl-ignore\n { dir: 'ne', className: 'top-0 right-0 h-2 w-2 cursor-ne-resize' }, // rtl-ignore\n { dir: 'sw', className: 'bottom-0 left-0 h-2 w-2 cursor-sw-resize' }, // rtl-ignore\n { dir: 'n', className: 'top-0 left-2 right-2 h-1 cursor-n-resize' }, // rtl-ignore\n { dir: 's', className: 'bottom-0 left-2 right-2 h-1 cursor-s-resize' }, // rtl-ignore\n { dir: 'w', className: 'left-0 top-2 bottom-2 w-1 cursor-w-resize' }, // rtl-ignore\n { dir: 'e', className: 'right-0 top-2 bottom-2 w-1 cursor-e-resize' }, // rtl-ignore\n];\n\n/**\n * A presentational floating window shell used for pop-out editors (notes,\n * letters, etc.). It can render as a centered modal-style window or as a\n * draggable, freely-positioned window, and supports edge/corner resizing.\n * Open/minimize/close state and footer actions are controlled via props so it\n * can be wired to any store.\n */\nconst FloatingWindow = React.forwardRef<HTMLDivElement, FloatingWindowProps>(\n (\n {\n open,\n minimized = false,\n title,\n children,\n footer,\n onClose,\n onMinimize,\n onPopOut,\n draggable = false,\n resizable = true,\n defaultWidth = 1024,\n defaultHeight = 600,\n minWidth = 600,\n minHeight = 400,\n className,\n 'aria-label': ariaLabel,\n },\n ref\n ) => {\n const [size, setSize] = React.useState({\n width: defaultWidth,\n height: defaultHeight,\n });\n const [position, setPosition] = React.useState({ x: 50, y: 50 });\n\n const dragRef = React.useRef<{ x: number; y: number } | null>(null);\n const resizeRef = React.useRef<{\n dir: ResizeDirection;\n startX: number;\n startY: number;\n startW: number;\n startH: number;\n startPosX: number;\n startPosY: number;\n } | null>(null);\n\n const titleId = React.useId();\n\n const handleResizeStart = (e: React.MouseEvent, dir: ResizeDirection) => {\n e.preventDefault();\n e.stopPropagation();\n resizeRef.current = {\n dir,\n startX: e.clientX,\n startY: e.clientY,\n startW: size.width,\n startH: size.height,\n startPosX: position.x,\n startPosY: position.y,\n };\n };\n\n const handleDragStart = (e: React.MouseEvent) => {\n if (!draggable) return;\n if ((e.target as HTMLElement).closest('[data-window-controls]')) return;\n const rect = (e.currentTarget as HTMLElement)\n .closest('[data-slot=\"floating-window\"]')!\n .getBoundingClientRect();\n dragRef.current = { x: e.clientX - rect.left, y: e.clientY - rect.top };\n };\n\n React.useEffect(() => {\n if (!open || minimized) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n if (dragRef.current) {\n setPosition({\n x: e.clientX - dragRef.current.x,\n y: e.clientY - dragRef.current.y,\n });\n return;\n }\n const r = resizeRef.current;\n if (!r) return;\n const deltaX = e.clientX - r.startX;\n const deltaY = e.clientY - r.startY;\n let newWidth = r.startW;\n let newHeight = r.startH;\n let newX = r.startPosX;\n let newY = r.startPosY;\n\n if (r.dir.includes('e')) {\n newWidth = Math.max(\n minWidth,\n Math.min(window.innerWidth - 40, r.startW + deltaX)\n );\n }\n if (r.dir.includes('w')) {\n newWidth = Math.max(minWidth, r.startW - deltaX);\n if (draggable) newX = r.startPosX + (r.startW - newWidth);\n }\n if (r.dir.includes('s')) {\n newHeight = Math.max(\n minHeight,\n Math.min(window.innerHeight - 40, r.startH + deltaY)\n );\n }\n if (r.dir.includes('n')) {\n newHeight = Math.max(minHeight, r.startH - deltaY);\n if (draggable) newY = r.startPosY + (r.startH - newHeight);\n }\n\n setSize({ width: newWidth, height: newHeight });\n if (draggable && (r.dir.includes('w') || r.dir.includes('n'))) {\n setPosition({ x: newX, y: newY });\n }\n };\n\n const handleMouseUp = () => {\n dragRef.current = null;\n resizeRef.current = null;\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [open, minimized, draggable, minWidth, minHeight]);\n\n if (!open || minimized) return null;\n\n const windowEl = (\n <div\n ref={ref}\n data-slot=\"floating-window\"\n role=\"dialog\"\n aria-modal={draggable ? undefined : true}\n aria-labelledby={typeof title === 'string' ? titleId : undefined}\n aria-label={typeof title === 'string' ? undefined : ariaLabel}\n className={cn(\n 'bg-card text-card-foreground relative flex flex-col overflow-hidden rounded-lg shadow-2xl',\n draggable && 'border-primary-800 fixed border-2',\n className\n )}\n style={\n draggable\n ? {\n left: position.x,\n top: position.y,\n width: size.width,\n height: size.height,\n maxWidth: 'calc(100vw - 40px)',\n maxHeight: 'calc(100vh - 40px)',\n zIndex: 50,\n }\n : {\n width: size.width,\n height: size.height,\n maxWidth: 'calc(100vw - 40px)',\n maxHeight: 'calc(100vh - 40px)',\n }\n }\n >\n {resizable &&\n RESIZE_HANDLES.map((handle) => (\n <div\n key={handle.dir}\n aria-hidden=\"true\"\n className={cn('absolute z-10', handle.className)}\n onMouseDown={(e) => handleResizeStart(e, handle.dir)}\n />\n ))}\n {resizable && (\n <div\n aria-hidden=\"true\"\n // rtl-ignore -- physical se-corner grip, paired with clientX resize math\n className=\"hover:bg-muted/50 absolute right-0 bottom-0 z-10 h-4 w-4 cursor-se-resize rounded-tl\"\n onMouseDown={(e) => handleResizeStart(e, 'se')}\n >\n <svg\n className=\"text-muted-foreground/50 h-4 w-4\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path d=\"M22 22H20V20H22V22ZM22 18H20V16H22V18ZM18 22H16V20H18V22ZM22 14H20V12H22V14ZM18 18H16V16H18V18ZM14 22H12V20H14V22Z\" />\n </svg>\n </div>\n )}\n\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions -- header acts as an optional drag handle; the controls inside remain keyboard accessible */}\n <div\n data-slot=\"floating-window-header\"\n className={cn(\n 'bg-primary-800 text-primary-foreground flex items-center justify-between rounded-t-lg px-4 py-3',\n draggable && 'cursor-move'\n )}\n onMouseDown={handleDragStart}\n >\n <h2\n id={typeof title === 'string' ? titleId : undefined}\n className=\"text-lg font-semibold\"\n >\n {title}\n </h2>\n <div data-window-controls className=\"flex items-center gap-1\">\n {onMinimize && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-primary-foreground hover:bg-primary-foreground/20 h-8 w-8 p-0\"\n onClick={onMinimize}\n aria-label=\"Minimize\"\n title=\"Minimize\"\n >\n <Minus className=\"h-4 w-4\" />\n </Button>\n )}\n {onPopOut && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-primary-foreground hover:bg-primary-foreground/20 h-8 w-8 p-0\"\n onClick={onPopOut}\n aria-label=\"Open in new window\"\n title=\"Open in new window\"\n >\n <ExternalLink className=\"h-4 w-4\" />\n </Button>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-primary-foreground hover:bg-primary-foreground/20 h-8 w-8 p-0\"\n onClick={onClose}\n aria-label=\"Close\"\n title=\"Close\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n\n {/* eslint-disable jsx-a11y/no-noninteractive-tabindex */}\n <div\n data-slot=\"floating-window-content\"\n role=\"region\"\n className=\"flex-1 overflow-y-auto\"\n tabIndex={0}\n >\n {children}\n </div>\n {/* eslint-enable jsx-a11y/no-noninteractive-tabindex */}\n\n {footer && (\n <div\n data-slot=\"floating-window-footer\"\n className=\"border-border bg-card flex items-center justify-end gap-3 rounded-b-lg border-t px-6 py-4\"\n >\n {footer}\n </div>\n )}\n </div>\n );\n\n if (draggable) return windowEl;\n\n return (\n <div\n data-slot=\"floating-window-overlay\"\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50\"\n >\n {windowEl}\n </div>\n );\n }\n);\n\nFloatingWindow.displayName = 'FloatingWindow';\n\nexport interface MinimizedWindowProps {\n /** Title shown on the minimized bar. */\n title: React.ReactNode;\n /** Called when the bar is activated to restore the window. */\n onRestore: () => void;\n /** Called when the close control is activated. */\n onClose: () => void;\n /** Additional class for the minimized bar. */\n className?: string;\n}\n\n/**\n * A compact bar representing a minimized {@link FloatingWindow}. Render this\n * (typically in a docked tray) while the corresponding window is minimized.\n */\nconst MinimizedWindow = React.forwardRef<HTMLDivElement, MinimizedWindowProps>(\n ({ title, onRestore, onClose, className }, ref) => (\n <div\n ref={ref}\n data-slot=\"minimized-window\"\n className={cn(\n 'border-border bg-card flex min-w-[200px] items-center gap-2 rounded-lg border px-3 py-2 shadow-md',\n className\n )}\n >\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 px-2\"\n onClick={onRestore}\n >\n <Square className=\"me-1 h-3 w-3\" />\n <span className=\"truncate text-sm\">{title}</span>\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"ms-auto h-6 w-6 p-0\"\n onClick={onClose}\n aria-label=\"Close\"\n title=\"Close\"\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </div>\n )\n);\n\nMinimizedWindow.displayName = 'MinimizedWindow';\n\nexport { FloatingWindow, MinimizedWindow };\n"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkGVBHDRC7_cjs = require('../../chunk-GVBHDRC7.cjs');
|
|
4
4
|
require('../../chunk-7ZDPD5ZX.cjs');
|
|
5
5
|
require('../../chunk-NNEFAUHV.cjs');
|
|
6
6
|
require('../../chunk-FHY3K6PL.cjs');
|
|
7
7
|
require('../../chunk-SCV7C55E.cjs');
|
|
8
|
-
require('../../chunk-
|
|
9
|
-
require('../../chunk-
|
|
8
|
+
require('../../chunk-X6A27RGO.cjs');
|
|
9
|
+
require('../../chunk-DXEPYK3I.cjs');
|
|
10
10
|
require('../../chunk-NV2CWBI2.cjs');
|
|
11
11
|
require('../../chunk-S5RVSXDV.cjs');
|
|
12
12
|
require('../../chunk-EUAMEVVI.cjs');
|
|
@@ -15,7 +15,7 @@ require('../../chunk-EUAMEVVI.cjs');
|
|
|
15
15
|
|
|
16
16
|
Object.defineProperty(exports, "AlertDialog", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkGVBHDRC7_cjs.AlertDialog; }
|
|
19
19
|
});
|
|
20
20
|
//# sourceMappingURL=index.cjs.map
|
|
21
21
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { AlertDialog } from '../../chunk-
|
|
1
|
+
export { AlertDialog } from '../../chunk-YIV4Y4SK.js';
|
|
2
2
|
import '../../chunk-5JJ2DAE4.js';
|
|
3
3
|
import '../../chunk-4SMSH4OY.js';
|
|
4
4
|
import '../../chunk-T4ME7QCT.js';
|
|
5
5
|
import '../../chunk-VSQF22GL.js';
|
|
6
|
-
import '../../chunk-
|
|
7
|
-
import '../../chunk-
|
|
6
|
+
import '../../chunk-7YO7DNUV.js';
|
|
7
|
+
import '../../chunk-GVM6DTR5.js';
|
|
8
8
|
import '../../chunk-XCP454Q6.js';
|
|
9
9
|
import '../../chunk-TQONQSJO.js';
|
|
10
10
|
import '../../chunk-PX6F3LHL.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkX6A27RGO_cjs = require('../../chunk-X6A27RGO.cjs');
|
|
4
|
+
var chunkDXEPYK3I_cjs = require('../../chunk-DXEPYK3I.cjs');
|
|
5
5
|
require('../../chunk-S5RVSXDV.cjs');
|
|
6
6
|
require('../../chunk-EUAMEVVI.cjs');
|
|
7
7
|
|
|
@@ -9,11 +9,11 @@ require('../../chunk-EUAMEVVI.cjs');
|
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, "Button", {
|
|
11
11
|
enumerable: true,
|
|
12
|
-
get: function () { return
|
|
12
|
+
get: function () { return chunkX6A27RGO_cjs.Button; }
|
|
13
13
|
});
|
|
14
14
|
Object.defineProperty(exports, "buttonVariants", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
16
|
+
get: function () { return chunkDXEPYK3I_cjs.buttonVariants; }
|
|
17
17
|
});
|
|
18
18
|
//# sourceMappingURL=index.cjs.map
|
|
19
19
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { Button } from '../../chunk-
|
|
2
|
-
export { buttonVariants } from '../../chunk-
|
|
1
|
+
export { Button } from '../../chunk-7YO7DNUV.js';
|
|
2
|
+
export { buttonVariants } from '../../chunk-GVM6DTR5.js';
|
|
3
3
|
import '../../chunk-TQONQSJO.js';
|
|
4
4
|
import '../../chunk-PX6F3LHL.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkN7C4OEP7_cjs = require('../../chunk-N7C4OEP7.cjs');
|
|
4
4
|
require('../../chunk-4NCDU5IG.cjs');
|
|
5
5
|
require('../../chunk-XXVUHLQN.cjs');
|
|
6
6
|
require('../../chunk-L7L5S2HO.cjs');
|
|
7
|
-
require('../../chunk-
|
|
8
|
-
require('../../chunk-
|
|
7
|
+
require('../../chunk-X6A27RGO.cjs');
|
|
8
|
+
require('../../chunk-DXEPYK3I.cjs');
|
|
9
9
|
require('../../chunk-S5RVSXDV.cjs');
|
|
10
10
|
require('../../chunk-EUAMEVVI.cjs');
|
|
11
11
|
|
|
@@ -13,11 +13,11 @@ require('../../chunk-EUAMEVVI.cjs');
|
|
|
13
13
|
|
|
14
14
|
Object.defineProperty(exports, "CalendarView", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
16
|
+
get: function () { return chunkN7C4OEP7_cjs.CalendarView; }
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "defaultCalendarLabels", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunkN7C4OEP7_cjs.defaultCalendarLabels; }
|
|
21
21
|
});
|
|
22
22
|
//# sourceMappingURL=index.cjs.map
|
|
23
23
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { CalendarView, defaultCalendarLabels } from '../../chunk-
|
|
1
|
+
export { CalendarView, defaultCalendarLabels } from '../../chunk-XBTKZCZF.js';
|
|
2
2
|
import '../../chunk-3YBS4WUQ.js';
|
|
3
3
|
import '../../chunk-UA7E7PDS.js';
|
|
4
4
|
import '../../chunk-BKSPDTX4.js';
|
|
5
|
-
import '../../chunk-
|
|
6
|
-
import '../../chunk-
|
|
5
|
+
import '../../chunk-7YO7DNUV.js';
|
|
6
|
+
import '../../chunk-GVM6DTR5.js';
|
|
7
7
|
import '../../chunk-TQONQSJO.js';
|
|
8
8
|
import '../../chunk-PX6F3LHL.js';
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk3KPDQG5O_cjs = require('../../chunk-3KPDQG5O.cjs');
|
|
4
4
|
require('../../chunk-PLMXN23Q.cjs');
|
|
5
5
|
require('../../chunk-RS5VA6QU.cjs');
|
|
6
6
|
require('../../chunk-NNEFAUHV.cjs');
|
|
7
7
|
require('../../chunk-FHY3K6PL.cjs');
|
|
8
8
|
require('../../chunk-SCV7C55E.cjs');
|
|
9
|
-
require('../../chunk-
|
|
10
|
-
require('../../chunk-
|
|
9
|
+
require('../../chunk-X6A27RGO.cjs');
|
|
10
|
+
require('../../chunk-DXEPYK3I.cjs');
|
|
11
11
|
require('../../chunk-S5RVSXDV.cjs');
|
|
12
12
|
require('../../chunk-EUAMEVVI.cjs');
|
|
13
13
|
|
|
@@ -15,31 +15,31 @@ require('../../chunk-EUAMEVVI.cjs');
|
|
|
15
15
|
|
|
16
16
|
Object.defineProperty(exports, "CustomizableDashboard", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunk3KPDQG5O_cjs.CustomizableDashboard; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "DashboardCustomizePanel", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunk3KPDQG5O_cjs.DashboardCustomizePanel; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "consolidateColumns", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunk3KPDQG5O_cjs.consolidateColumns; }
|
|
27
27
|
});
|
|
28
28
|
Object.defineProperty(exports, "mergeColumnOrder", {
|
|
29
29
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
30
|
+
get: function () { return chunk3KPDQG5O_cjs.mergeColumnOrder; }
|
|
31
31
|
});
|
|
32
32
|
Object.defineProperty(exports, "moveAcrossColumns", {
|
|
33
33
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
34
|
+
get: function () { return chunk3KPDQG5O_cjs.moveAcrossColumns; }
|
|
35
35
|
});
|
|
36
36
|
Object.defineProperty(exports, "reorderOnDrop", {
|
|
37
37
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
38
|
+
get: function () { return chunk3KPDQG5O_cjs.reorderOnDrop; }
|
|
39
39
|
});
|
|
40
40
|
Object.defineProperty(exports, "requiredColumns", {
|
|
41
41
|
enumerable: true,
|
|
42
|
-
get: function () { return
|
|
42
|
+
get: function () { return chunk3KPDQG5O_cjs.requiredColumns; }
|
|
43
43
|
});
|
|
44
44
|
//# sourceMappingURL=index.cjs.map
|
|
45
45
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export { CustomizableDashboard, DashboardCustomizePanel, consolidateColumns, mergeColumnOrder, moveAcrossColumns, reorderOnDrop, requiredColumns } from '../../chunk-
|
|
1
|
+
export { CustomizableDashboard, DashboardCustomizePanel, consolidateColumns, mergeColumnOrder, moveAcrossColumns, reorderOnDrop, requiredColumns } from '../../chunk-H2IAMSHK.js';
|
|
2
2
|
import '../../chunk-AQ564XO7.js';
|
|
3
3
|
import '../../chunk-LMBXJZLG.js';
|
|
4
4
|
import '../../chunk-4SMSH4OY.js';
|
|
5
5
|
import '../../chunk-T4ME7QCT.js';
|
|
6
6
|
import '../../chunk-VSQF22GL.js';
|
|
7
|
-
import '../../chunk-
|
|
8
|
-
import '../../chunk-
|
|
7
|
+
import '../../chunk-7YO7DNUV.js';
|
|
8
|
+
import '../../chunk-GVM6DTR5.js';
|
|
9
9
|
import '../../chunk-TQONQSJO.js';
|
|
10
10
|
import '../../chunk-PX6F3LHL.js';
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../../chunk-
|
|
5
|
-
require('../../chunk-
|
|
3
|
+
var chunkTTSSUOEV_cjs = require('../../chunk-TTSSUOEV.cjs');
|
|
4
|
+
require('../../chunk-X6A27RGO.cjs');
|
|
5
|
+
require('../../chunk-DXEPYK3I.cjs');
|
|
6
6
|
require('../../chunk-S5RVSXDV.cjs');
|
|
7
7
|
require('../../chunk-EUAMEVVI.cjs');
|
|
8
8
|
|
|
@@ -10,11 +10,11 @@ require('../../chunk-EUAMEVVI.cjs');
|
|
|
10
10
|
|
|
11
11
|
Object.defineProperty(exports, "FloatingWindow", {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunkTTSSUOEV_cjs.FloatingWindow; }
|
|
14
14
|
});
|
|
15
15
|
Object.defineProperty(exports, "MinimizedWindow", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkTTSSUOEV_cjs.MinimizedWindow; }
|
|
18
18
|
});
|
|
19
19
|
//# sourceMappingURL=index.cjs.map
|
|
20
20
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { FloatingWindow, MinimizedWindow } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
1
|
+
export { FloatingWindow, MinimizedWindow } from '../../chunk-ZYL4SNOR.js';
|
|
2
|
+
import '../../chunk-7YO7DNUV.js';
|
|
3
|
+
import '../../chunk-GVM6DTR5.js';
|
|
4
4
|
import '../../chunk-TQONQSJO.js';
|
|
5
5
|
import '../../chunk-PX6F3LHL.js';
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkGU5OS7JJ_cjs = require('../../chunk-GU5OS7JJ.cjs');
|
|
4
4
|
require('../../chunk-4NCDU5IG.cjs');
|
|
5
5
|
require('../../chunk-XXVUHLQN.cjs');
|
|
6
6
|
require('../../chunk-L7L5S2HO.cjs');
|
|
7
|
-
require('../../chunk-
|
|
8
|
-
require('../../chunk-
|
|
7
|
+
require('../../chunk-X6A27RGO.cjs');
|
|
8
|
+
require('../../chunk-DXEPYK3I.cjs');
|
|
9
9
|
require('../../chunk-S5RVSXDV.cjs');
|
|
10
10
|
require('../../chunk-EUAMEVVI.cjs');
|
|
11
11
|
|
|
@@ -13,11 +13,11 @@ require('../../chunk-EUAMEVVI.cjs');
|
|
|
13
13
|
|
|
14
14
|
Object.defineProperty(exports, "ListView", {
|
|
15
15
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
16
|
+
get: function () { return chunkGU5OS7JJ_cjs.ListView; }
|
|
17
17
|
});
|
|
18
18
|
Object.defineProperty(exports, "listViewItemVariants", {
|
|
19
19
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunkGU5OS7JJ_cjs.itemVariants; }
|
|
21
21
|
});
|
|
22
22
|
//# sourceMappingURL=index.cjs.map
|
|
23
23
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { ListView, itemVariants as listViewItemVariants } from '../../chunk-
|
|
1
|
+
export { ListView, itemVariants as listViewItemVariants } from '../../chunk-4HC2IBOX.js';
|
|
2
2
|
import '../../chunk-3YBS4WUQ.js';
|
|
3
3
|
import '../../chunk-UA7E7PDS.js';
|
|
4
4
|
import '../../chunk-BKSPDTX4.js';
|
|
5
|
-
import '../../chunk-
|
|
6
|
-
import '../../chunk-
|
|
5
|
+
import '../../chunk-7YO7DNUV.js';
|
|
6
|
+
import '../../chunk-GVM6DTR5.js';
|
|
7
7
|
import '../../chunk-TQONQSJO.js';
|
|
8
8
|
import '../../chunk-PX6F3LHL.js';
|
|
9
9
|
//# sourceMappingURL=index.js.map
|