@fluid-app/rep-widgets 0.1.8 → 0.1.10
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/AlertWidget-3Q4AK7PE.js +5 -0
- package/dist/{AlertWidget-2JHMNYIY.js.map → AlertWidget-3Q4AK7PE.js.map} +1 -1
- package/dist/AlertWidget-C3YMPF7Y.cjs +18 -0
- package/dist/{AlertWidget-VHXWOKM4.cjs.map → AlertWidget-C3YMPF7Y.cjs.map} +1 -1
- package/dist/CalendarWidget-3FLYUVHK.js +5 -0
- package/dist/{CalendarWidget-ZSAZG2NA.js.map → CalendarWidget-3FLYUVHK.js.map} +1 -1
- package/dist/CalendarWidget-MQ2ID7YS.cjs +18 -0
- package/dist/{CalendarWidget-3QAGQHSO.cjs.map → CalendarWidget-MQ2ID7YS.cjs.map} +1 -1
- package/dist/CarouselWidget-KJZHB6XK.cjs +19 -0
- package/dist/{CarouselWidget-ORPCX6CM.cjs.map → CarouselWidget-KJZHB6XK.cjs.map} +1 -1
- package/dist/CarouselWidget-M3CEN3HQ.js +6 -0
- package/dist/{CarouselWidget-AYDQROQ7.js.map → CarouselWidget-M3CEN3HQ.js.map} +1 -1
- package/dist/CatchUpWidget-ADY4ZUDD.cjs +18 -0
- package/dist/{CatchUpWidget-3BMRWSA7.cjs.map → CatchUpWidget-ADY4ZUDD.cjs.map} +1 -1
- package/dist/CatchUpWidget-PJNNL5GI.js +5 -0
- package/dist/{CatchUpWidget-YKKUJT4H.js.map → CatchUpWidget-PJNNL5GI.js.map} +1 -1
- package/dist/ChartWidget-463QVROY.cjs +17 -0
- package/dist/{ChartWidget-ETZEURVU.cjs.map → ChartWidget-463QVROY.cjs.map} +1 -1
- package/dist/ChartWidget-554S2GQF.js +4 -0
- package/dist/{ChartWidget-QTYGMAEV.js.map → ChartWidget-554S2GQF.js.map} +1 -1
- package/dist/ContainerWidget-IOXW77X7.cjs +21 -0
- package/dist/{ContainerWidget-WYTZPJSE.cjs.map → ContainerWidget-IOXW77X7.cjs.map} +1 -1
- package/dist/ContainerWidget-OLQPEXDT.js +8 -0
- package/dist/{ContainerWidget-CYAHQDTH.js.map → ContainerWidget-OLQPEXDT.js.map} +1 -1
- package/dist/EmbedWidget-ATU2WS2X.js +3 -0
- package/dist/{EmbedWidget-B3JEXJWZ.js.map → EmbedWidget-ATU2WS2X.js.map} +1 -1
- package/dist/EmbedWidget-X7FB7C45.cjs +16 -0
- package/dist/{EmbedWidget-CWK3I5G5.cjs.map → EmbedWidget-X7FB7C45.cjs.map} +1 -1
- package/dist/ImageWidget-6ATLD5II.cjs +17 -0
- package/dist/{ImageWidget-RSBFNR5J.cjs.map → ImageWidget-6ATLD5II.cjs.map} +1 -1
- package/dist/ImageWidget-BBLG66SD.js +4 -0
- package/dist/{ImageWidget-A5DBWFUT.js.map → ImageWidget-BBLG66SD.js.map} +1 -1
- package/dist/LayoutWidget-F3BDSGDP.cjs +20 -0
- package/dist/{LayoutWidget-VCOKZJV3.cjs.map → LayoutWidget-F3BDSGDP.cjs.map} +1 -1
- package/dist/{LayoutWidget-BHM4HFRZ.js → LayoutWidget-MBUJVGKA.js} +4 -4
- package/dist/{LayoutWidget-BHM4HFRZ.js.map → LayoutWidget-MBUJVGKA.js.map} +1 -1
- package/dist/ListWidget-LZ77ZSBT.js +6 -0
- package/dist/{ListWidget-I7I7FAW5.js.map → ListWidget-LZ77ZSBT.js.map} +1 -1
- package/dist/ListWidget-Q2MXWXKA.cjs +19 -0
- package/dist/{ListWidget-7HUFB5JZ.cjs.map → ListWidget-Q2MXWXKA.cjs.map} +1 -1
- package/dist/MySiteWidget-2XUSXN5I.cjs +18 -0
- package/dist/{MySiteWidget-JP2NWOOI.cjs.map → MySiteWidget-2XUSXN5I.cjs.map} +1 -1
- package/dist/MySiteWidget-L37MCRTV.js +5 -0
- package/dist/{MySiteWidget-RPIPPRRN.js.map → MySiteWidget-L37MCRTV.js.map} +1 -1
- package/dist/NestedWidget-JKEJ5ZCV.cjs +19 -0
- package/dist/{NestedWidget-T5MRGLSP.cjs.map → NestedWidget-JKEJ5ZCV.cjs.map} +1 -1
- package/dist/NestedWidget-N6V5LT4B.js +6 -0
- package/dist/{NestedWidget-KH7QSXN7.js.map → NestedWidget-N6V5LT4B.js.map} +1 -1
- package/dist/QuickShareWidget-B6TOLKM7.cjs +17 -0
- package/dist/{QuickShareWidget-47OABEXI.cjs.map → QuickShareWidget-B6TOLKM7.cjs.map} +1 -1
- package/dist/QuickShareWidget-TNW4ILJ2.js +4 -0
- package/dist/{QuickShareWidget-S2LJDLLJ.js.map → QuickShareWidget-TNW4ILJ2.js.map} +1 -1
- package/dist/RecentActivityWidget-USXCTA5W.js +5 -0
- package/dist/{RecentActivityWidget-FI72KYRL.js.map → RecentActivityWidget-USXCTA5W.js.map} +1 -1
- package/dist/RecentActivityWidget-ZYOFEB5R.cjs +18 -0
- package/dist/{RecentActivityWidget-CFYQ32LN.cjs.map → RecentActivityWidget-ZYOFEB5R.cjs.map} +1 -1
- package/dist/SpacerWidget-7KQ6UPRH.js +3 -0
- package/dist/{SpacerWidget-ZEHGXKOH.js.map → SpacerWidget-7KQ6UPRH.js.map} +1 -1
- package/dist/SpacerWidget-APJKG3DG.cjs +16 -0
- package/dist/{SpacerWidget-OUFZRSIN.cjs.map → SpacerWidget-APJKG3DG.cjs.map} +1 -1
- package/dist/TableWidget-HVBEVBC6.cjs +18 -0
- package/dist/{TableWidget-ZX5A4IFW.cjs.map → TableWidget-HVBEVBC6.cjs.map} +1 -1
- package/dist/TableWidget-PMQFL7VC.js +5 -0
- package/dist/{TableWidget-VMPYQU7I.js.map → TableWidget-PMQFL7VC.js.map} +1 -1
- package/dist/TextWidget-GNUQBLDJ.js +4 -0
- package/dist/{TextWidget-D72TL53O.js.map → TextWidget-GNUQBLDJ.js.map} +1 -1
- package/dist/TextWidget-PUZPMPOC.cjs +17 -0
- package/dist/{TextWidget-DYINWJGB.cjs.map → TextWidget-PUZPMPOC.cjs.map} +1 -1
- package/dist/ToDoWidget-5EXKPVSO.cjs +18 -0
- package/dist/{ToDoWidget-Y7W6TFL7.cjs.map → ToDoWidget-5EXKPVSO.cjs.map} +1 -1
- package/dist/ToDoWidget-MI3K365J.js +5 -0
- package/dist/{ToDoWidget-XQPQBDZE.js.map → ToDoWidget-MI3K365J.js.map} +1 -1
- package/dist/VideoWidget-DYPFWIZX.cjs +17 -0
- package/dist/{VideoWidget-R6WKIZFN.cjs.map → VideoWidget-DYPFWIZX.cjs.map} +1 -1
- package/dist/VideoWidget-KY3VZHYD.js +4 -0
- package/dist/{VideoWidget-OMF2XWAI.js.map → VideoWidget-KY3VZHYD.js.map} +1 -1
- package/dist/{chunk-B5S5Q57S.cjs → chunk-2KV26SKG.cjs} +26 -26
- package/dist/chunk-2KV26SKG.cjs.map +1 -0
- package/dist/{chunk-25GBJPZQ.js → chunk-2NPVYROG.js} +3 -3
- package/dist/{chunk-25GBJPZQ.js.map → chunk-2NPVYROG.js.map} +1 -1
- package/dist/{chunk-AJ2ZDCQU.js → chunk-2YQKGRGW.js} +3 -3
- package/dist/{chunk-AJ2ZDCQU.js.map → chunk-2YQKGRGW.js.map} +1 -1
- package/dist/{chunk-WGQS7RB4.js → chunk-3CAOLNTX.js} +3 -3
- package/dist/{chunk-WGQS7RB4.js.map → chunk-3CAOLNTX.js.map} +1 -1
- package/dist/{chunk-ER6NFOID.cjs → chunk-4Y3HAK22.cjs} +11 -12
- package/dist/chunk-4Y3HAK22.cjs.map +1 -0
- package/dist/{chunk-MNWWZGL2.js → chunk-57ZUEL25.js} +3 -3
- package/dist/{chunk-MNWWZGL2.js.map → chunk-57ZUEL25.js.map} +1 -1
- package/dist/{chunk-7B5RPA6J.js → chunk-6EKEDQJB.js} +4 -4
- package/dist/chunk-6EKEDQJB.js.map +1 -0
- package/dist/chunk-6ZECDBGI.js +3 -0
- package/dist/{chunk-ZS7C474P.js.map → chunk-6ZECDBGI.js.map} +1 -1
- package/dist/{chunk-YBTY4OMP.cjs → chunk-A5AVY3ML.cjs} +8 -10
- package/dist/chunk-A5AVY3ML.cjs.map +1 -0
- package/dist/{chunk-KVGWMJZB.js → chunk-AWEFCI4H.js} +3 -3
- package/dist/{chunk-KVGWMJZB.js.map → chunk-AWEFCI4H.js.map} +1 -1
- package/dist/{chunk-IM3VCKTO.js → chunk-BYGUUGSO.js} +10 -10
- package/dist/chunk-BYGUUGSO.js.map +1 -0
- package/dist/{chunk-3NB2PJR5.js → chunk-DPPFLZ7G.js} +12 -13
- package/dist/chunk-DPPFLZ7G.js.map +1 -0
- package/dist/{chunk-DPNUNERL.js → chunk-E5ERYB7Q.js} +4 -4
- package/dist/{chunk-DPNUNERL.js.map → chunk-E5ERYB7Q.js.map} +1 -1
- package/dist/{chunk-HLXL56YT.js → chunk-EBYQ6EXT.js} +9 -11
- package/dist/chunk-EBYQ6EXT.js.map +1 -0
- package/dist/{chunk-OFRCK7WR.js → chunk-EL6H7WGK.js} +3 -3
- package/dist/{chunk-OFRCK7WR.js.map → chunk-EL6H7WGK.js.map} +1 -1
- package/dist/{chunk-Y657NN2D.js → chunk-G45UWQDF.js} +3 -3
- package/dist/{chunk-Y657NN2D.js.map → chunk-G45UWQDF.js.map} +1 -1
- package/dist/{chunk-YRZ4AHQC.js → chunk-GWICPGTA.js} +29 -17
- package/dist/chunk-GWICPGTA.js.map +1 -0
- package/dist/{chunk-U5HD3GJ7.cjs → chunk-HA7IVIPJ.cjs} +36 -24
- package/dist/chunk-HA7IVIPJ.cjs.map +1 -0
- package/dist/{chunk-K4T2XGCW.cjs → chunk-HF7QCK7D.cjs} +9 -9
- package/dist/{chunk-K4T2XGCW.cjs.map → chunk-HF7QCK7D.cjs.map} +1 -1
- package/dist/{chunk-PEBYBSSB.cjs → chunk-HREBEVS5.cjs} +7 -7
- package/dist/{chunk-PEBYBSSB.cjs.map → chunk-HREBEVS5.cjs.map} +1 -1
- package/dist/{chunk-CM7D7WGL.cjs → chunk-J6HCPXT5.cjs} +6 -2
- package/dist/{chunk-CM7D7WGL.cjs.map → chunk-J6HCPXT5.cjs.map} +1 -1
- package/dist/{chunk-IC66PSKF.cjs → chunk-JS4NC5JR.cjs} +9 -9
- package/dist/{chunk-IC66PSKF.cjs.map → chunk-JS4NC5JR.cjs.map} +1 -1
- package/dist/{chunk-RMZFC7HF.cjs → chunk-KYCPG2DN.cjs} +5 -5
- package/dist/{chunk-RMZFC7HF.cjs.map → chunk-KYCPG2DN.cjs.map} +1 -1
- package/dist/{chunk-MUFXAD45.cjs → chunk-OGV2OPY7.cjs} +12 -12
- package/dist/chunk-OGV2OPY7.cjs.map +1 -0
- package/dist/{chunk-SDTP4TVD.cjs → chunk-OZBZOHR4.cjs} +8 -10
- package/dist/chunk-OZBZOHR4.cjs.map +1 -0
- package/dist/{chunk-PHI5YY5E.cjs → chunk-P6AKK6TA.cjs} +28 -26
- package/dist/chunk-P6AKK6TA.cjs.map +1 -0
- package/dist/{chunk-M3DV7TXA.cjs → chunk-PK7Y3Q6A.cjs} +10 -10
- package/dist/chunk-PK7Y3Q6A.cjs.map +1 -0
- package/dist/{chunk-DW6V4ZCT.cjs → chunk-PLXOZ5BH.cjs} +9 -9
- package/dist/{chunk-DW6V4ZCT.cjs.map → chunk-PLXOZ5BH.cjs.map} +1 -1
- package/dist/{chunk-VU3NEDUQ.js → chunk-QLXZEIFC.js} +17 -17
- package/dist/chunk-QLXZEIFC.js.map +1 -0
- package/dist/{chunk-VDHV7FEJ.cjs → chunk-RPNLSRUS.cjs} +7 -7
- package/dist/{chunk-VDHV7FEJ.cjs.map → chunk-RPNLSRUS.cjs.map} +1 -1
- package/dist/{chunk-BZQW7APC.cjs → chunk-SH2YPW2J.cjs} +23 -23
- package/dist/{chunk-BZQW7APC.cjs.map → chunk-SH2YPW2J.cjs.map} +1 -1
- package/dist/{chunk-QSMGUAYP.cjs → chunk-STGAGLIG.cjs} +9 -9
- package/dist/{chunk-QSMGUAYP.cjs.map → chunk-STGAGLIG.cjs.map} +1 -1
- package/dist/{chunk-Y6OP3XEQ.cjs → chunk-TMG7H4K5.cjs} +9 -9
- package/dist/{chunk-Y6OP3XEQ.cjs.map → chunk-TMG7H4K5.cjs.map} +1 -1
- package/dist/{chunk-J2FIIZSN.js → chunk-UXFD52LT.js} +3 -3
- package/dist/{chunk-J2FIIZSN.js.map → chunk-UXFD52LT.js.map} +1 -1
- package/dist/{chunk-NYL2AQJ2.js → chunk-UZF75XZJ.js} +10 -8
- package/dist/chunk-UZF75XZJ.js.map +1 -0
- package/dist/{chunk-W2U27MK2.cjs → chunk-XCHMHDYQ.cjs} +9 -9
- package/dist/{chunk-W2U27MK2.cjs.map → chunk-XCHMHDYQ.cjs.map} +1 -1
- package/dist/{chunk-LFYELLIM.cjs → chunk-XCJUKCGP.cjs} +9 -9
- package/dist/{chunk-LFYELLIM.cjs.map → chunk-XCJUKCGP.cjs.map} +1 -1
- package/dist/{chunk-GAYZNBS4.js → chunk-XX2N55EZ.js} +3 -3
- package/dist/{chunk-GAYZNBS4.js.map → chunk-XX2N55EZ.js.map} +1 -1
- package/dist/{chunk-PXWG3SDJ.js → chunk-YGATS7HW.js} +3 -3
- package/dist/{chunk-PXWG3SDJ.js.map → chunk-YGATS7HW.js.map} +1 -1
- package/dist/{chunk-SB2EVEDN.js → chunk-ZDWZKRJ4.js} +9 -11
- package/dist/chunk-ZDWZKRJ4.js.map +1 -0
- package/dist/components/index.cjs +6 -6
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +8 -1
- package/dist/components/index.js.map +1 -1
- package/dist/contexts/index.d.cts +3 -3
- package/dist/contexts/index.d.ts +3 -3
- package/dist/core/index.cjs +8 -8
- package/dist/core/index.js +1 -1
- package/dist/ui/index.cjs +23 -26
- package/dist/ui/index.cjs.map +1 -1
- package/dist/ui/index.d.cts +2 -61
- package/dist/ui/index.d.ts +2 -61
- package/dist/ui/index.js +1 -4
- package/dist/ui/index.js.map +1 -1
- package/dist/widgets/index.cjs +78 -82
- package/dist/widgets/index.cjs.map +1 -1
- package/dist/widgets/index.d.cts +209 -8
- package/dist/widgets/index.d.ts +209 -8
- package/dist/widgets/index.js +39 -43
- package/dist/widgets/index.js.map +1 -1
- package/package.json +5 -4
- package/dist/AlertWidget-2JHMNYIY.js +0 -5
- package/dist/AlertWidget-VHXWOKM4.cjs +0 -18
- package/dist/CalendarWidget-3QAGQHSO.cjs +0 -18
- package/dist/CalendarWidget-ZSAZG2NA.js +0 -5
- package/dist/CarouselWidget-AYDQROQ7.js +0 -8
- package/dist/CarouselWidget-ORPCX6CM.cjs +0 -21
- package/dist/CatchUpWidget-3BMRWSA7.cjs +0 -18
- package/dist/CatchUpWidget-YKKUJT4H.js +0 -5
- package/dist/ChartWidget-ETZEURVU.cjs +0 -19
- package/dist/ChartWidget-QTYGMAEV.js +0 -6
- package/dist/ContainerWidget-CYAHQDTH.js +0 -8
- package/dist/ContainerWidget-WYTZPJSE.cjs +0 -21
- package/dist/EmbedWidget-B3JEXJWZ.js +0 -3
- package/dist/EmbedWidget-CWK3I5G5.cjs +0 -16
- package/dist/ImageWidget-A5DBWFUT.js +0 -4
- package/dist/ImageWidget-RSBFNR5J.cjs +0 -17
- package/dist/LayoutWidget-VCOKZJV3.cjs +0 -20
- package/dist/ListWidget-7HUFB5JZ.cjs +0 -19
- package/dist/ListWidget-I7I7FAW5.js +0 -6
- package/dist/MySiteWidget-JP2NWOOI.cjs +0 -18
- package/dist/MySiteWidget-RPIPPRRN.js +0 -5
- package/dist/NestedWidget-KH7QSXN7.js +0 -6
- package/dist/NestedWidget-T5MRGLSP.cjs +0 -19
- package/dist/QuickShareWidget-47OABEXI.cjs +0 -17
- package/dist/QuickShareWidget-S2LJDLLJ.js +0 -4
- package/dist/RecentActivityWidget-CFYQ32LN.cjs +0 -18
- package/dist/RecentActivityWidget-FI72KYRL.js +0 -5
- package/dist/SpacerWidget-OUFZRSIN.cjs +0 -16
- package/dist/SpacerWidget-ZEHGXKOH.js +0 -3
- package/dist/TableWidget-VMPYQU7I.js +0 -7
- package/dist/TableWidget-ZX5A4IFW.cjs +0 -20
- package/dist/TextWidget-D72TL53O.js +0 -4
- package/dist/TextWidget-DYINWJGB.cjs +0 -17
- package/dist/ToDoWidget-XQPQBDZE.js +0 -5
- package/dist/ToDoWidget-Y7W6TFL7.cjs +0 -18
- package/dist/VideoWidget-OMF2XWAI.js +0 -4
- package/dist/VideoWidget-R6WKIZFN.cjs +0 -17
- package/dist/chunk-3NB2PJR5.js.map +0 -1
- package/dist/chunk-5HHN5MRZ.js +0 -11
- package/dist/chunk-5HHN5MRZ.js.map +0 -1
- package/dist/chunk-6U2FEES5.js +0 -55
- package/dist/chunk-6U2FEES5.js.map +0 -1
- package/dist/chunk-7B5RPA6J.js.map +0 -1
- package/dist/chunk-B5S5Q57S.cjs.map +0 -1
- package/dist/chunk-ER6NFOID.cjs.map +0 -1
- package/dist/chunk-HDA2ZOV2.cjs +0 -13
- package/dist/chunk-HDA2ZOV2.cjs.map +0 -1
- package/dist/chunk-HLXL56YT.js.map +0 -1
- package/dist/chunk-IJHUIM34.cjs +0 -58
- package/dist/chunk-IJHUIM34.cjs.map +0 -1
- package/dist/chunk-IM3VCKTO.js.map +0 -1
- package/dist/chunk-IY3BNQ5Y.js +0 -24
- package/dist/chunk-IY3BNQ5Y.js.map +0 -1
- package/dist/chunk-JSC4GMQG.js +0 -318
- package/dist/chunk-JSC4GMQG.js.map +0 -1
- package/dist/chunk-M3DV7TXA.cjs.map +0 -1
- package/dist/chunk-MUFXAD45.cjs.map +0 -1
- package/dist/chunk-NOZVVD6G.cjs +0 -26
- package/dist/chunk-NOZVVD6G.cjs.map +0 -1
- package/dist/chunk-NYL2AQJ2.js.map +0 -1
- package/dist/chunk-PHI5YY5E.cjs.map +0 -1
- package/dist/chunk-SB2EVEDN.js.map +0 -1
- package/dist/chunk-SDTP4TVD.cjs.map +0 -1
- package/dist/chunk-U5HD3GJ7.cjs.map +0 -1
- package/dist/chunk-UH3FAS2R.cjs +0 -353
- package/dist/chunk-UH3FAS2R.cjs.map +0 -1
- package/dist/chunk-VU3NEDUQ.js.map +0 -1
- package/dist/chunk-YBTY4OMP.cjs.map +0 -1
- package/dist/chunk-YRZ4AHQC.js.map +0 -1
- package/dist/chunk-ZS7C474P.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-calendar-events.ts","../src/widgets/CalendarWidget.tsx"],"names":["useDataSourceConfig","useQuery","jsxs","jsx","useState","useMemo","ErrorState","FontAwesomeIcon","faChevronLeft","faChevronRight","faChevronsDown","faChevronsUp","getFontSizeField","getColorField","getPaddingField","getBorderRadiusField"],"mappings":"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","file":"chunk-W2U27MK2.cjs","sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { useDataSourceConfig } from \"@fluid-app/rep-core/data-sources/context\";\n\n// API types\nexport type CalendarEvent = {\n id: number;\n title: string;\n description?: {\n id?: number | null;\n name?: string | null;\n body?: string | null;\n record_type?: string | null;\n record_id?: number | null;\n created_at?: string | null;\n updated_at?: string | null;\n locale?: string | null;\n } | null;\n color?: string | null;\n url?: string | null;\n start: string;\n end: string;\n active?: boolean | null;\n time_zone?: string | null;\n status?: string | null;\n image_url?: string | null;\n images?: unknown[] | null;\n venue?: string | null;\n countries?: string[] | null;\n hasTomorrow?: boolean | null;\n hasYesterday?: boolean | null;\n isAllDay?: boolean | null;\n};\n\nexport function useCalendarEvents() {\n const { baseUrl, getApiHeaders } = useDataSourceConfig();\n\n return useQuery({\n queryKey: [\"rep-widget-use\", \"calendar-events\", baseUrl] as const,\n queryFn: async ({ signal }): Promise<CalendarEvent[]> => {\n const url = baseUrl\n ? `${baseUrl}/company/events?status=active`\n : \"/company/events?status=active\";\n const response = await fetch(url, {\n headers: {\n \"content-type\": \"application/json\",\n ...getApiHeaders?.(),\n },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch calendar events: ${response.status}`);\n }\n\n return response.json();\n },\n });\n}\n","import { useState, useMemo, type ComponentProps } from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/rep-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport {\n useCalendarEvents,\n type CalendarEvent,\n} from \"../hooks/use-calendar-events\";\nimport { ErrorState } from \"../components/error-state\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faChevronLeft,\n faChevronRight,\n faChevronsDown,\n faChevronsUp,\n} from \"@fortawesome/pro-regular-svg-icons\";\n\n// Utility to get days in a month\nconst getDaysInMonth = (year: number, month: number) => {\n return new Date(year, month + 1, 0).getDate();\n};\n\n// Utility to get the first day of month (0 = Sunday, 1 = Monday, etc.)\nconst getFirstDayOfMonth = (year: number, month: number) => {\n return new Date(year, month, 1).getDay();\n};\n\n// Generate calendar grid for a month\nconst generateMonthGrid = (year: number, month: number) => {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDay = getFirstDayOfMonth(year, month);\n const today = new Date();\n\n const days: Array<{\n date: Date | null;\n isToday: boolean;\n isCurrentMonth: boolean;\n }> = [];\n\n // Add empty slots for days before the 1st\n for (let i = 0; i < firstDay; i++) {\n days.push({ date: null, isToday: false, isCurrentMonth: false });\n }\n\n // Add days of the month\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(year, month, day);\n const isToday =\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear();\n days.push({ date, isToday, isCurrentMonth: true });\n }\n\n return days;\n};\n\n// Generate week grid for current week\nconst generateWeekGrid = () => {\n const today = new Date();\n const currentDay = today.getDay();\n const days: Array<{\n date: Date;\n isToday: boolean;\n }> = [];\n\n for (let i = 0; i < 7; i++) {\n const date = new Date(today);\n date.setDate(today.getDate() - currentDay + i);\n days.push({\n date,\n isToday: date.toDateString() === today.toDateString(),\n });\n }\n\n return days;\n};\n\n// Get events for a specific date\nconst getEventsForDate = (date: Date, events: CalendarEvent[]) => {\n const dayStart = new Date(date);\n dayStart.setHours(0, 0, 0, 0);\n const dayEnd = new Date(date);\n dayEnd.setHours(23, 59, 59, 999);\n\n return events.filter((event) => {\n const eventStart = new Date(event.start);\n const eventEnd = new Date(event.end);\n return eventStart <= dayEnd && eventEnd >= dayStart;\n });\n};\n\n// Check if a date has events\nconst hasEventsOnDate = (date: Date | null, events: CalendarEvent[]) => {\n if (!date) return false;\n return getEventsForDate(date, events).length > 0;\n};\n\n// Event item component\nconst EventItem = ({\n title,\n start,\n end,\n color,\n isAllDay,\n accentColor,\n}: CalendarEvent & { accentColor?: string }) => {\n const startTime = new Date(start).toLocaleTimeString(\"en-US\", {\n hour: \"numeric\",\n minute: \"2-digit\",\n });\n const endTime = new Date(end).toLocaleTimeString(\"en-US\", {\n hour: \"numeric\",\n minute: \"2-digit\",\n });\n\n return (\n <div className=\"flex gap-x-2\">\n <div\n className=\"w-0.5 shrink-0 rounded-full\"\n style={{ backgroundColor: color || accentColor }}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate text-sm font-medium\">{title}</div>\n <div className=\"text-xs opacity-60\">\n {isAllDay ? \"All day\" : `${startTime} - ${endTime}`}\n </div>\n </div>\n </div>\n );\n};\n\nconst dayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\ntype DayButtonProps = {\n date: Date;\n isToday: boolean;\n isSelected: boolean;\n hasEvents: boolean;\n accentColor: string;\n onClick: () => void;\n extraClassName?: string;\n};\n\nfunction DayButton({\n date,\n isToday,\n isSelected,\n hasEvents,\n accentColor,\n onClick,\n extraClassName = \"\",\n}: DayButtonProps) {\n return (\n <button\n onClick={onClick}\n className={`relative flex aspect-square items-center justify-center rounded-full text-sm transition-colors ${\n isSelected\n ? `bg-${accentColor} text-${accentColor}-foreground`\n : isToday\n ? `bg-${accentColor}/30 text-${accentColor}-foreground hover:bg-${accentColor}/50`\n : `hover:bg-${accentColor}/50 hover:text-${accentColor}-foreground`\n } ${extraClassName}`}\n >\n {date.getDate()}\n {hasEvents && (\n <div\n className={`absolute bottom-1 h-1 w-1 rounded-full bg-${accentColor}`}\n />\n )}\n </button>\n );\n}\n\ntype CalendarWidgetProps = ComponentProps<\"div\"> & {\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n background?: BackgroundValue;\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n};\n\nexport function CalendarWidget({\n // Title defaults\n titleEnabled = true,\n titleText = \"Calendar\",\n titleFontSize = \"xl\",\n titleColor = \"foreground\",\n\n // Styling defaults\n background = {\n type: \"solid\",\n color: \"background\",\n },\n textColor = \"foreground\",\n accentColor = \"primary\",\n padding = 4,\n borderRadius = \"md\",\n\n className,\n ...props\n}: CalendarWidgetProps) {\n const backgroundColor = background.color || \"background\";\n const backgroundImage =\n (background.resource?.image_url || background.resource?.imageUrl) &&\n background.type === \"image\"\n ? `url(${background.resource.image_url || background.resource.imageUrl})`\n : \"none\";\n const today = new Date();\n const [currentMonth, setCurrentMonth] = useState(today.getMonth());\n const [currentYear, setCurrentYear] = useState(today.getFullYear());\n const [isCollapsed, setIsCollapsed] = useState(false);\n const [selectedDate, setSelectedDate] = useState<Date | null>(today);\n\n const { data: events = [], isLoading, isError } = useCalendarEvents();\n\n // Generate calendar grids\n const monthGrid = useMemo(\n () => generateMonthGrid(currentYear, currentMonth),\n [currentYear, currentMonth],\n );\n const weekGrid = useMemo(() => generateWeekGrid(), []);\n\n // Get events for selected date\n const selectedDateEvents = useMemo(() => {\n if (!selectedDate) return [];\n return getEventsForDate(selectedDate, events);\n }, [selectedDate, events]);\n\n // Navigation handlers\n const goToPrevMonth = () => {\n if (currentMonth === 0) {\n setCurrentMonth(11);\n setCurrentYear(currentYear - 1);\n } else {\n setCurrentMonth(currentMonth - 1);\n }\n };\n\n const goToNextMonth = () => {\n if (currentMonth === 11) {\n setCurrentMonth(0);\n setCurrentYear(currentYear + 1);\n } else {\n setCurrentMonth(currentMonth + 1);\n }\n };\n\n const monthYearLabel = new Date(currentYear, currentMonth).toLocaleString(\n \"en-US\",\n {\n month: \"long\",\n year: \"numeric\",\n },\n );\n\n return (\n <div\n className={`@container overflow-hidden rounded-${borderRadius} bg-${backgroundColor} text-${textColor} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n {/* Title */}\n {titleEnabled && titleText && (\n <div className={`p-${padding} pb-0`}>\n <h2 className={`text-${titleFontSize} font-bold text-${titleColor}`}>\n {titleText}\n </h2>\n </div>\n )}\n\n {/* Loading state */}\n {isLoading ? (\n <div\n className={`flex min-h-[300px] items-center justify-center p-${padding}`}\n >\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n </div>\n ) : isError ? (\n /* Error state */\n <ErrorState />\n ) : (\n <div className={`p-${padding}`}>\n {/* Desktop: Side by side layout */}\n <div className=\"@md:flex @md:gap-6\">\n {/* Calendar Section */}\n <div className=\"@md:flex-none\">\n {/* Month/Year Header with Navigation */}\n <div className=\"mb-4 flex items-center justify-between\">\n <button\n onClick={goToPrevMonth}\n className=\"rounded-full p-1 hover:bg-foreground/10\"\n aria-label=\"Previous month\"\n >\n <FontAwesomeIcon icon={faChevronLeft} />\n </button>\n\n <span className=\"text-base font-semibold\">\n {monthYearLabel}\n </span>\n\n <button\n onClick={goToNextMonth}\n className=\"rounded-full p-1 hover:bg-foreground/10\"\n aria-label=\"Next month\"\n >\n <FontAwesomeIcon icon={faChevronRight} />\n </button>\n </div>\n\n {/* Day Headers */}\n <div className=\"mb-2 grid grid-cols-7 gap-1 text-center\">\n {dayNames.map((day, idx) => (\n <div\n key={idx}\n className=\"text-xs font-medium uppercase opacity-60\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar Grid - Week view on mobile when collapsed */}\n {isCollapsed && (\n <div className=\"grid grid-cols-7 gap-1 @md:hidden\">\n {weekGrid.map(({ date, isToday }, idx) => (\n <DayButton\n key={idx}\n date={date}\n isToday={isToday}\n isSelected={\n selectedDate?.toDateString() === date.toDateString()\n }\n hasEvents={hasEventsOnDate(date, events)}\n accentColor={accentColor}\n onClick={() => setSelectedDate(date)}\n />\n ))}\n </div>\n )}\n\n {/* Month view (always on desktop, when not collapsed on mobile) */}\n <div\n className={`grid grid-cols-7 gap-1 ${isCollapsed ? \"hidden @md:grid\" : \"grid\"}`}\n >\n {monthGrid.map((day, idx) => {\n if (!day.date) {\n return <div key={idx} className=\"aspect-square\" />;\n }\n\n return (\n <DayButton\n key={idx}\n date={day.date}\n isToday={day.isToday}\n isSelected={\n selectedDate?.toDateString() === day.date.toDateString()\n }\n hasEvents={hasEventsOnDate(day.date, events)}\n accentColor={accentColor}\n onClick={() => setSelectedDate(day.date)}\n extraClassName=\"p-2 @md:m-3\"\n />\n );\n })}\n </div>\n\n {/* Mobile collapse toggle */}\n <button\n onClick={() => setIsCollapsed(!isCollapsed)}\n className={`ml-2 flex w-full items-center justify-center gap-3 rounded-full p-1 text-${textColor}/50 @md:hidden`}\n aria-label={\n isCollapsed ? \"Expand calendar\" : \"Collapse calendar\"\n }\n >\n <div className={`h-1 w-1/2 bg-${textColor}/50`} />\n {isCollapsed ? (\n <FontAwesomeIcon icon={faChevronsDown} />\n ) : (\n <FontAwesomeIcon icon={faChevronsUp} />\n )}\n <div className={`h-1 w-1/2 bg-${textColor}/50`} />\n </button>\n </div>\n\n {/* Events Panel */}\n <div className=\"mt-4 border-muted pt-4 @md:mt-0 @md:w-56 @md:border-l @md:pt-0 @md:pl-6\">\n <div className=\"mb-2 text-sm font-medium opacity-60\">\n {selectedDate\n ? selectedDate.toLocaleDateString(\"en-US\", {\n weekday: \"long\",\n month: \"short\",\n day: \"numeric\",\n })\n : \"Select a date\"}\n </div>\n\n {selectedDateEvents.length > 0 ? (\n <div className=\"flex flex-col gap-3\">\n {selectedDateEvents.map((event, idx) => (\n <EventItem\n key={`${event.id}-${idx}`}\n {...event}\n accentColor={`var(--${accentColor})`}\n />\n ))}\n </div>\n ) : (\n <div className=\"text-sm opacity-50\">No events</div>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport const calendarWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"CalendarWidget\",\n displayName: \"Calendar Widget\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [\n // Styling Tab - Title Group\n {\n key: \"titleEnabled\",\n label: \"Widget Title\",\n type: \"boolean\",\n description: \"Enable the title displayed above the calendar\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Title text displayed above the calendar\",\n defaultValue: \"Calendar\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n key: \"titleFontSize\",\n label: \"Title Font Size\",\n description: \"Font size for the widget title\",\n defaultValue: \"xl\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the widget title\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Design Group\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the calendar container\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n },\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for calendar content\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"accentColor\",\n label: \"Accent Color\",\n description: \"Color used for today highlight and event indicators\",\n defaultValue: \"primary\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the calendar container\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the calendar container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n ],\n} as const satisfies WidgetPropertySchema;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-calendar-events.ts","../src/widgets/CalendarWidget.tsx"],"names":["useDataSourceConfig","useQuery","jsxs","jsx","useState","useMemo","ErrorState","FontAwesomeIcon","faChevronLeft","faChevronRight","faChevronsDown","faChevronsUp","getFontSizeField","getColorField","getPaddingField","getBorderRadiusField"],"mappings":"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","file":"chunk-XCHMHDYQ.cjs","sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { useDataSourceConfig } from \"@fluid-app/rep-core/data-sources/context\";\n\n// API types\nexport type CalendarEvent = {\n id: number;\n title: string;\n description?: {\n id?: number | null;\n name?: string | null;\n body?: string | null;\n record_type?: string | null;\n record_id?: number | null;\n created_at?: string | null;\n updated_at?: string | null;\n locale?: string | null;\n } | null;\n color?: string | null;\n url?: string | null;\n start: string;\n end: string;\n active?: boolean | null;\n time_zone?: string | null;\n status?: string | null;\n image_url?: string | null;\n images?: unknown[] | null;\n venue?: string | null;\n countries?: string[] | null;\n hasTomorrow?: boolean | null;\n hasYesterday?: boolean | null;\n isAllDay?: boolean | null;\n};\n\nexport function useCalendarEvents() {\n const { baseUrl, getApiHeaders } = useDataSourceConfig();\n\n return useQuery({\n queryKey: [\"rep-widget-use\", \"calendar-events\", baseUrl] as const,\n queryFn: async ({ signal }): Promise<CalendarEvent[]> => {\n const url = baseUrl\n ? `${baseUrl}/company/events?status=active`\n : \"/company/events?status=active\";\n const response = await fetch(url, {\n headers: {\n \"content-type\": \"application/json\",\n ...getApiHeaders?.(),\n },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch calendar events: ${response.status}`);\n }\n\n return response.json();\n },\n });\n}\n","import { useState, useMemo, type ComponentProps } from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/rep-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport {\n useCalendarEvents,\n type CalendarEvent,\n} from \"../hooks/use-calendar-events\";\nimport { ErrorState } from \"../components/error-state\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faChevronLeft,\n faChevronRight,\n faChevronsDown,\n faChevronsUp,\n} from \"@fortawesome/pro-regular-svg-icons\";\n\n// Utility to get days in a month\nconst getDaysInMonth = (year: number, month: number) => {\n return new Date(year, month + 1, 0).getDate();\n};\n\n// Utility to get the first day of month (0 = Sunday, 1 = Monday, etc.)\nconst getFirstDayOfMonth = (year: number, month: number) => {\n return new Date(year, month, 1).getDay();\n};\n\n// Generate calendar grid for a month\nconst generateMonthGrid = (year: number, month: number) => {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDay = getFirstDayOfMonth(year, month);\n const today = new Date();\n\n const days: Array<{\n date: Date | null;\n isToday: boolean;\n isCurrentMonth: boolean;\n }> = [];\n\n // Add empty slots for days before the 1st\n for (let i = 0; i < firstDay; i++) {\n days.push({ date: null, isToday: false, isCurrentMonth: false });\n }\n\n // Add days of the month\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(year, month, day);\n const isToday =\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear();\n days.push({ date, isToday, isCurrentMonth: true });\n }\n\n return days;\n};\n\n// Generate week grid for current week\nconst generateWeekGrid = () => {\n const today = new Date();\n const currentDay = today.getDay();\n const days: Array<{\n date: Date;\n isToday: boolean;\n }> = [];\n\n for (let i = 0; i < 7; i++) {\n const date = new Date(today);\n date.setDate(today.getDate() - currentDay + i);\n days.push({\n date,\n isToday: date.toDateString() === today.toDateString(),\n });\n }\n\n return days;\n};\n\n// Get events for a specific date\nconst getEventsForDate = (date: Date, events: CalendarEvent[]) => {\n const dayStart = new Date(date);\n dayStart.setHours(0, 0, 0, 0);\n const dayEnd = new Date(date);\n dayEnd.setHours(23, 59, 59, 999);\n\n return events.filter((event) => {\n const eventStart = new Date(event.start);\n const eventEnd = new Date(event.end);\n return eventStart <= dayEnd && eventEnd >= dayStart;\n });\n};\n\n// Check if a date has events\nconst hasEventsOnDate = (date: Date | null, events: CalendarEvent[]) => {\n if (!date) return false;\n return getEventsForDate(date, events).length > 0;\n};\n\n// Event item component\nconst EventItem = ({\n title,\n start,\n end,\n color,\n isAllDay,\n accentColor,\n}: CalendarEvent & { accentColor?: string }) => {\n const startTime = new Date(start).toLocaleTimeString(\"en-US\", {\n hour: \"numeric\",\n minute: \"2-digit\",\n });\n const endTime = new Date(end).toLocaleTimeString(\"en-US\", {\n hour: \"numeric\",\n minute: \"2-digit\",\n });\n\n return (\n <div className=\"flex gap-x-2\">\n <div\n className=\"w-0.5 shrink-0 rounded-full\"\n style={{ backgroundColor: color || accentColor }}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate text-sm font-medium\">{title}</div>\n <div className=\"text-xs opacity-60\">\n {isAllDay ? \"All day\" : `${startTime} - ${endTime}`}\n </div>\n </div>\n </div>\n );\n};\n\nconst dayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\ntype DayButtonProps = {\n date: Date;\n isToday: boolean;\n isSelected: boolean;\n hasEvents: boolean;\n accentColor: string;\n onClick: () => void;\n extraClassName?: string;\n};\n\nfunction DayButton({\n date,\n isToday,\n isSelected,\n hasEvents,\n accentColor,\n onClick,\n extraClassName = \"\",\n}: DayButtonProps) {\n return (\n <button\n onClick={onClick}\n className={`relative flex aspect-square items-center justify-center rounded-full text-sm transition-colors ${\n isSelected\n ? `bg-${accentColor} text-${accentColor}-foreground`\n : isToday\n ? `bg-${accentColor}/30 text-${accentColor}-foreground hover:bg-${accentColor}/50`\n : `hover:bg-${accentColor}/50 hover:text-${accentColor}-foreground`\n } ${extraClassName}`}\n >\n {date.getDate()}\n {hasEvents && (\n <div\n className={`absolute bottom-1 h-1 w-1 rounded-full bg-${accentColor}`}\n />\n )}\n </button>\n );\n}\n\ntype CalendarWidgetProps = ComponentProps<\"div\"> & {\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n background?: BackgroundValue;\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n};\n\nexport function CalendarWidget({\n // Title defaults\n titleEnabled = true,\n titleText = \"Calendar\",\n titleFontSize = \"xl\",\n titleColor = \"foreground\",\n\n // Styling defaults\n background = {\n type: \"solid\",\n color: \"background\",\n },\n textColor = \"foreground\",\n accentColor = \"primary\",\n padding = 4,\n borderRadius = \"md\",\n\n className,\n ...props\n}: CalendarWidgetProps) {\n const backgroundColor = background.color || \"background\";\n const backgroundImage =\n (background.resource?.image_url || background.resource?.imageUrl) &&\n background.type === \"image\"\n ? `url(${background.resource.image_url || background.resource.imageUrl})`\n : \"none\";\n const today = new Date();\n const [currentMonth, setCurrentMonth] = useState(today.getMonth());\n const [currentYear, setCurrentYear] = useState(today.getFullYear());\n const [isCollapsed, setIsCollapsed] = useState(false);\n const [selectedDate, setSelectedDate] = useState<Date | null>(today);\n\n const { data: events = [], isLoading, isError } = useCalendarEvents();\n\n // Generate calendar grids\n const monthGrid = useMemo(\n () => generateMonthGrid(currentYear, currentMonth),\n [currentYear, currentMonth],\n );\n const weekGrid = useMemo(() => generateWeekGrid(), []);\n\n // Get events for selected date\n const selectedDateEvents = useMemo(() => {\n if (!selectedDate) return [];\n return getEventsForDate(selectedDate, events);\n }, [selectedDate, events]);\n\n // Navigation handlers\n const goToPrevMonth = () => {\n if (currentMonth === 0) {\n setCurrentMonth(11);\n setCurrentYear(currentYear - 1);\n } else {\n setCurrentMonth(currentMonth - 1);\n }\n };\n\n const goToNextMonth = () => {\n if (currentMonth === 11) {\n setCurrentMonth(0);\n setCurrentYear(currentYear + 1);\n } else {\n setCurrentMonth(currentMonth + 1);\n }\n };\n\n const monthYearLabel = new Date(currentYear, currentMonth).toLocaleString(\n \"en-US\",\n {\n month: \"long\",\n year: \"numeric\",\n },\n );\n\n return (\n <div\n className={`@container overflow-hidden rounded-${borderRadius} bg-${backgroundColor} text-${textColor} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n {/* Title */}\n {titleEnabled && titleText && (\n <div className={`p-${padding} pb-0`}>\n <h2 className={`text-${titleFontSize} font-bold text-${titleColor}`}>\n {titleText}\n </h2>\n </div>\n )}\n\n {/* Loading state */}\n {isLoading ? (\n <div\n className={`flex min-h-[300px] items-center justify-center p-${padding}`}\n >\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n </div>\n ) : isError ? (\n /* Error state */\n <ErrorState />\n ) : (\n <div className={`p-${padding}`}>\n {/* Desktop: Side by side layout */}\n <div className=\"@md:flex @md:gap-6\">\n {/* Calendar Section */}\n <div className=\"@md:flex-none\">\n {/* Month/Year Header with Navigation */}\n <div className=\"mb-4 flex items-center justify-between\">\n <button\n onClick={goToPrevMonth}\n className=\"rounded-full p-1 hover:bg-foreground/10\"\n aria-label=\"Previous month\"\n >\n <FontAwesomeIcon icon={faChevronLeft} />\n </button>\n\n <span className=\"text-base font-semibold\">\n {monthYearLabel}\n </span>\n\n <button\n onClick={goToNextMonth}\n className=\"rounded-full p-1 hover:bg-foreground/10\"\n aria-label=\"Next month\"\n >\n <FontAwesomeIcon icon={faChevronRight} />\n </button>\n </div>\n\n {/* Day Headers */}\n <div className=\"mb-2 grid grid-cols-7 gap-1 text-center\">\n {dayNames.map((day, idx) => (\n <div\n key={idx}\n className=\"text-xs font-medium uppercase opacity-60\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar Grid - Week view on mobile when collapsed */}\n {isCollapsed && (\n <div className=\"grid grid-cols-7 gap-1 @md:hidden\">\n {weekGrid.map(({ date, isToday }, idx) => (\n <DayButton\n key={idx}\n date={date}\n isToday={isToday}\n isSelected={\n selectedDate?.toDateString() === date.toDateString()\n }\n hasEvents={hasEventsOnDate(date, events)}\n accentColor={accentColor}\n onClick={() => setSelectedDate(date)}\n />\n ))}\n </div>\n )}\n\n {/* Month view (always on desktop, when not collapsed on mobile) */}\n <div\n className={`grid grid-cols-7 gap-1 ${isCollapsed ? \"hidden @md:grid\" : \"grid\"}`}\n >\n {monthGrid.map((day, idx) => {\n if (!day.date) {\n return <div key={idx} className=\"aspect-square\" />;\n }\n\n return (\n <DayButton\n key={idx}\n date={day.date}\n isToday={day.isToday}\n isSelected={\n selectedDate?.toDateString() === day.date.toDateString()\n }\n hasEvents={hasEventsOnDate(day.date, events)}\n accentColor={accentColor}\n onClick={() => setSelectedDate(day.date)}\n extraClassName=\"p-2 @md:m-3\"\n />\n );\n })}\n </div>\n\n {/* Mobile collapse toggle */}\n <button\n onClick={() => setIsCollapsed(!isCollapsed)}\n className={`ml-2 flex w-full items-center justify-center gap-3 rounded-full p-1 text-${textColor}/50 @md:hidden`}\n aria-label={\n isCollapsed ? \"Expand calendar\" : \"Collapse calendar\"\n }\n >\n <div className={`h-1 w-1/2 bg-${textColor}/50`} />\n {isCollapsed ? (\n <FontAwesomeIcon icon={faChevronsDown} />\n ) : (\n <FontAwesomeIcon icon={faChevronsUp} />\n )}\n <div className={`h-1 w-1/2 bg-${textColor}/50`} />\n </button>\n </div>\n\n {/* Events Panel */}\n <div className=\"mt-4 border-muted pt-4 @md:mt-0 @md:w-56 @md:border-l @md:pt-0 @md:pl-6\">\n <div className=\"mb-2 text-sm font-medium opacity-60\">\n {selectedDate\n ? selectedDate.toLocaleDateString(\"en-US\", {\n weekday: \"long\",\n month: \"short\",\n day: \"numeric\",\n })\n : \"Select a date\"}\n </div>\n\n {selectedDateEvents.length > 0 ? (\n <div className=\"flex flex-col gap-3\">\n {selectedDateEvents.map((event, idx) => (\n <EventItem\n key={`${event.id}-${idx}`}\n {...event}\n accentColor={`var(--${accentColor})`}\n />\n ))}\n </div>\n ) : (\n <div className=\"text-sm opacity-50\">No events</div>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport const calendarWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"CalendarWidget\",\n displayName: \"Calendar Widget\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [\n // Styling Tab - Title Group\n {\n key: \"titleEnabled\",\n label: \"Widget Title\",\n type: \"boolean\",\n description: \"Enable the title displayed above the calendar\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Title text displayed above the calendar\",\n defaultValue: \"Calendar\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n key: \"titleFontSize\",\n label: \"Title Font Size\",\n description: \"Font size for the widget title\",\n defaultValue: \"xl\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the widget title\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Design Group\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the calendar container\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n },\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for calendar content\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"accentColor\",\n label: \"Accent Color\",\n description: \"Color used for today highlight and event indicators\",\n defaultValue: \"primary\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the calendar container\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the calendar container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n ],\n} as const satisfies WidgetPropertySchema;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkJ6HCPXT5_cjs = require('./chunk-J6HCPXT5.cjs');
|
|
4
4
|
var qrcode_react = require('qrcode.react');
|
|
5
5
|
var reactFontawesome = require('@fortawesome/react-fontawesome');
|
|
6
6
|
var proRegularSvgIcons = require('@fortawesome/pro-regular-svg-icons');
|
|
@@ -160,7 +160,7 @@ var quickShareWidgetPropertySchema = {
|
|
|
160
160
|
group: "Title",
|
|
161
161
|
requiresKeyToBeTrue: "titleEnabled"
|
|
162
162
|
},
|
|
163
|
-
|
|
163
|
+
chunkJ6HCPXT5_cjs.getFontSizeField({
|
|
164
164
|
key: "titleFontSize",
|
|
165
165
|
label: "Title Font Size",
|
|
166
166
|
description: "Font size for the title text",
|
|
@@ -169,7 +169,7 @@ var quickShareWidgetPropertySchema = {
|
|
|
169
169
|
group: "Title",
|
|
170
170
|
requiresKeyToBeTrue: "titleEnabled"
|
|
171
171
|
}),
|
|
172
|
-
|
|
172
|
+
chunkJ6HCPXT5_cjs.getColorField({
|
|
173
173
|
key: "titleColor",
|
|
174
174
|
label: "Title Color",
|
|
175
175
|
description: "Color for the title text",
|
|
@@ -189,7 +189,7 @@ var quickShareWidgetPropertySchema = {
|
|
|
189
189
|
// group: "Actions",
|
|
190
190
|
// },
|
|
191
191
|
// Styling Tab - Design Group
|
|
192
|
-
|
|
192
|
+
chunkJ6HCPXT5_cjs.getColorField({
|
|
193
193
|
key: "textColor",
|
|
194
194
|
label: "Text Color",
|
|
195
195
|
description: "Default text color for the widget",
|
|
@@ -197,7 +197,7 @@ var quickShareWidgetPropertySchema = {
|
|
|
197
197
|
tab: "styling",
|
|
198
198
|
group: "Design"
|
|
199
199
|
}),
|
|
200
|
-
|
|
200
|
+
chunkJ6HCPXT5_cjs.getColorField({
|
|
201
201
|
key: "accentColor",
|
|
202
202
|
label: "Accent Color",
|
|
203
203
|
description: "Color for accent elements and buy button",
|
|
@@ -249,7 +249,7 @@ var quickShareWidgetPropertySchema = {
|
|
|
249
249
|
tab: "styling",
|
|
250
250
|
group: "Design"
|
|
251
251
|
},
|
|
252
|
-
|
|
252
|
+
chunkJ6HCPXT5_cjs.getPaddingField({
|
|
253
253
|
key: "padding",
|
|
254
254
|
label: "Padding",
|
|
255
255
|
description: "Padding around the widget content",
|
|
@@ -257,7 +257,7 @@ var quickShareWidgetPropertySchema = {
|
|
|
257
257
|
tab: "styling",
|
|
258
258
|
group: "Design"
|
|
259
259
|
}),
|
|
260
|
-
|
|
260
|
+
chunkJ6HCPXT5_cjs.getBorderRadiusField({
|
|
261
261
|
key: "borderRadius",
|
|
262
262
|
label: "Border Radius",
|
|
263
263
|
description: "Border radius for the widget container",
|
|
@@ -270,5 +270,5 @@ var quickShareWidgetPropertySchema = {
|
|
|
270
270
|
|
|
271
271
|
exports.QuickShareWidget = QuickShareWidget;
|
|
272
272
|
exports.quickShareWidgetPropertySchema = quickShareWidgetPropertySchema;
|
|
273
|
-
//# sourceMappingURL=chunk-
|
|
274
|
-
//# sourceMappingURL=chunk-
|
|
273
|
+
//# sourceMappingURL=chunk-XCJUKCGP.cjs.map
|
|
274
|
+
//# sourceMappingURL=chunk-XCJUKCGP.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/widgets/QuickShareWidget.tsx"],"names":["jsxs","jsx","FontAwesomeIcon","faImage","QRCodeSVG","faCopy","faCartShopping","getFontSizeField","getColorField","getPaddingField","getBorderRadiusField"],"mappings":"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","file":"chunk-LFYELLIM.cjs","sourcesContent":["import type { ComponentProps } from \"react\";\nimport type {\n BorderRadiusOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/rep-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport type { ShareableItem } from \"@fluid-app/rep-core/types\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport { QRCodeSVG } from \"qrcode.react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCopy,\n faCartShopping,\n faImage,\n} from \"@fortawesome/pro-regular-svg-icons\";\n\ntype QuickShareWidgetProps = ComponentProps<\"div\"> & {\n // Resource\n shareableResource?: ShareableItem;\n\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n\n // Overlay\n overlayEnabled?: boolean;\n overlayType?: \"solid\" | \"gradient\";\n overlayIntensity?: number;\n\n // Actions\n showBuyButton?: boolean;\n};\n\nexport function QuickShareWidget({\n // Resource\n shareableResource,\n\n // Title defaults\n titleEnabled = true,\n titleText = \"\",\n titleFontSize = \"2xl\",\n titleColor = \"foreground\",\n\n textColor = \"foreground\",\n accentColor = \"primary\",\n padding = 4,\n borderRadius = \"md\",\n\n // Overlay defaults\n overlayEnabled = true,\n overlayType = \"solid\",\n overlayIntensity = 50,\n\n // Actions defaults\n showBuyButton = false,\n\n className,\n ...props\n}: QuickShareWidgetProps) {\n // Determine background styling\n const backgroundImageUrl =\n shareableResource?.image_url || shareableResource?.imageUrl;\n\n // Get share link from resource\n const shareLink = shareableResource?.share_link || \"\";\n const displayUrl = shareLink || \"Select a resource to generate link\";\n\n // Determine title - use provided title or fall back to resource title\n const displayTitle =\n titleText || shareableResource?.title || \"Select a resource to display!\";\n\n // Check if resource is a Product for buy button visibility\n const isProduct =\n shareableResource?.type === \"Product\" ||\n shareableResource?.shareableType === \"Product\";\n const shouldShowBuyButton = showBuyButton && isProduct;\n\n // Copy to clipboard handler\n const handleCopyToClipboard = async () => {\n if (shareLink) {\n try {\n await navigator.clipboard.writeText(shareLink);\n } catch (error) {\n console.error(\"Failed to copy to clipboard:\", error);\n }\n }\n };\n\n return (\n <div\n className={`relative overflow-hidden rounded-${borderRadius} bg-muted text-${textColor} ${className ?? \"\"}`}\n {...props}\n >\n {/* Background Image with Overlay */}\n {backgroundImageUrl ? (\n <div className=\"absolute inset-0\">\n <img\n src={backgroundImageUrl}\n alt=\"\"\n className=\"h-full w-full object-cover\"\n />\n {overlayEnabled && (\n <div\n className={`absolute inset-0 ${\n overlayType === \"gradient\"\n ? \"bg-gradient-to-t from-black to-transparent\"\n : \"bg-black\"\n }`}\n style={{\n opacity:\n (Number(String(overlayIntensity).replace(\"%\", \"\")) || 50) /\n 100,\n }}\n />\n )}\n </div>\n ) : (\n <div\n className={`absolute inset-0 flex items-center justify-center bg-muted`}\n >\n <FontAwesomeIcon icon={faImage} className=\"h-16 w-16 opacity-20\" />\n </div>\n )}\n\n {/* Content Container */}\n <div className={`relative flex min-h-[400px] flex-col p-${padding}`}>\n {/* Title Overlay */}\n {titleEnabled && displayTitle && (\n <div className=\"flex flex-1 items-center justify-center\">\n <h2\n className={`text-center text-${titleFontSize} font-semibold text-${titleColor} drop-shadow-lg`}\n >\n {displayTitle}\n </h2>\n </div>\n )}\n\n {/* Bottom Section - QR Code, URL, and Buttons */}\n <div className=\"mt-auto flex flex-col gap-4\">\n <div className=\"flex items-end justify-between gap-4\">\n {/* QR Code */}\n <div className=\"shrink-0 rounded-lg bg-white p-2\">\n <QRCodeSVG\n value={shareLink || \"https://example.com\"}\n size={100}\n level=\"H\"\n />\n </div>\n\n {/* URL Display */}\n <div className=\"min-w-0 flex-1\">\n <p className=\"mb-2 text-sm font-semibold tracking-wide drop-shadow\">\n Your Shareable URL\n </p>\n <div className=\"flex items-center justify-between rounded-md border border-white/20 bg-black/50 p-2 text-sm text-white backdrop-blur\">\n <span className=\"truncate\">{displayUrl}</span>\n <button\n type=\"button\"\n onClick={handleCopyToClipboard}\n className={`ml-2 shrink-0 rounded p-1 transition-colors hover:bg-${accentColor}/20`}\n aria-label=\"Copy link\"\n >\n <FontAwesomeIcon icon={faCopy} className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n </div>\n\n {/* Action Buttons */}\n {/* TODO: Needs button link implmented, once it is uncomment the config for showBuyButton */}\n {shouldShowBuyButton && (\n <div className=\"flex\">\n <button\n type=\"button\"\n className={`flex w-full items-center justify-center gap-2 rounded-lg bg-${accentColor} p-3 font-medium text-${accentColor}-foreground transition-all hover:bg-${accentColor}-500`}\n >\n <FontAwesomeIcon icon={faCartShopping} className=\"h-4 w-4\" />\n <span>Buy</span>\n </button>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nexport const quickShareWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"QuickShareWidget\",\n displayName: \"Quick Share Widget\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [\n // Styling Tab - Resource\n {\n key: \"shareableResource\",\n label: \"Shareable Content\",\n type: \"resource\",\n description: \"Select the content to generate a share link for\",\n allowedTypes: [\"Product\", \"Page\", \"EnrollmentPack\", \"Medium\", \"Library\"],\n tab: \"styling\",\n group: \"Content\",\n },\n\n // Styling Tab - Title Group\n {\n key: \"titleEnabled\",\n label: \"Show Title\",\n type: \"boolean\",\n description: \"Display a title overlay on the widget\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Custom title text (defaults to resource title if empty)\",\n defaultValue: \"\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n key: \"titleFontSize\",\n label: \"Title Font Size\",\n description: \"Font size for the title text\",\n defaultValue: \"2xl\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the title text\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Actions Group\n // {\n // key: \"showBuyButton\",\n // label: \"Show Buy Button\",\n // type: \"boolean\",\n // description: \"Display the buy button (only visible for Product type)\",\n // defaultValue: false,\n // tab: \"styling\",\n // group: \"Actions\",\n // },\n\n // Styling Tab - Design Group\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for the widget\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"accentColor\",\n label: \"Accent Color\",\n description: \"Color for accent elements and buy button\",\n defaultValue: \"primary\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"overlayEnabled\",\n label: \"Enable Overlay\",\n type: \"boolean\",\n description: \"Add background overlay for text readability\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"overlayType\",\n label: \"Overlay Type\",\n type: \"buttonGroup\",\n description: \"Type of overlay to add to the background\",\n defaultValue: \"solid\",\n options: [\n { label: \"Solid\", value: \"solid\" },\n { label: \"Gradient\", value: \"gradient\" },\n ],\n tab: \"styling\",\n group: \"Design\",\n requiresKeyToBeTrue: \"overlayEnabled\",\n },\n {\n key: \"overlayIntensity\",\n label: \"Overlay Intensity\",\n type: \"slider\",\n description: \"Opacity of the overlay background (0-100)\",\n min: 0,\n max: 100,\n step: 5,\n defaultValue: 50,\n unit: \"%\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyToBeTrue: \"overlayEnabled\",\n },\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the widget content\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the widget container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n ],\n} as const satisfies WidgetPropertySchema;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/widgets/QuickShareWidget.tsx"],"names":["jsxs","jsx","FontAwesomeIcon","faImage","QRCodeSVG","faCopy","faCartShopping","getFontSizeField","getColorField","getPaddingField","getBorderRadiusField"],"mappings":"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","file":"chunk-XCJUKCGP.cjs","sourcesContent":["import type { ComponentProps } from \"react\";\nimport type {\n BorderRadiusOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/rep-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport type { ShareableItem } from \"@fluid-app/rep-core/types\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport { QRCodeSVG } from \"qrcode.react\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faCopy,\n faCartShopping,\n faImage,\n} from \"@fortawesome/pro-regular-svg-icons\";\n\ntype QuickShareWidgetProps = ComponentProps<\"div\"> & {\n // Resource\n shareableResource?: ShareableItem;\n\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n\n // Overlay\n overlayEnabled?: boolean;\n overlayType?: \"solid\" | \"gradient\";\n overlayIntensity?: number;\n\n // Actions\n showBuyButton?: boolean;\n};\n\nexport function QuickShareWidget({\n // Resource\n shareableResource,\n\n // Title defaults\n titleEnabled = true,\n titleText = \"\",\n titleFontSize = \"2xl\",\n titleColor = \"foreground\",\n\n textColor = \"foreground\",\n accentColor = \"primary\",\n padding = 4,\n borderRadius = \"md\",\n\n // Overlay defaults\n overlayEnabled = true,\n overlayType = \"solid\",\n overlayIntensity = 50,\n\n // Actions defaults\n showBuyButton = false,\n\n className,\n ...props\n}: QuickShareWidgetProps) {\n // Determine background styling\n const backgroundImageUrl =\n shareableResource?.image_url || shareableResource?.imageUrl;\n\n // Get share link from resource\n const shareLink = shareableResource?.share_link || \"\";\n const displayUrl = shareLink || \"Select a resource to generate link\";\n\n // Determine title - use provided title or fall back to resource title\n const displayTitle =\n titleText || shareableResource?.title || \"Select a resource to display!\";\n\n // Check if resource is a Product for buy button visibility\n const isProduct =\n shareableResource?.type === \"Product\" ||\n shareableResource?.shareableType === \"Product\";\n const shouldShowBuyButton = showBuyButton && isProduct;\n\n // Copy to clipboard handler\n const handleCopyToClipboard = async () => {\n if (shareLink) {\n try {\n await navigator.clipboard.writeText(shareLink);\n } catch (error) {\n console.error(\"Failed to copy to clipboard:\", error);\n }\n }\n };\n\n return (\n <div\n className={`relative overflow-hidden rounded-${borderRadius} bg-muted text-${textColor} ${className ?? \"\"}`}\n {...props}\n >\n {/* Background Image with Overlay */}\n {backgroundImageUrl ? (\n <div className=\"absolute inset-0\">\n <img\n src={backgroundImageUrl}\n alt=\"\"\n className=\"h-full w-full object-cover\"\n />\n {overlayEnabled && (\n <div\n className={`absolute inset-0 ${\n overlayType === \"gradient\"\n ? \"bg-gradient-to-t from-black to-transparent\"\n : \"bg-black\"\n }`}\n style={{\n opacity:\n (Number(String(overlayIntensity).replace(\"%\", \"\")) || 50) /\n 100,\n }}\n />\n )}\n </div>\n ) : (\n <div\n className={`absolute inset-0 flex items-center justify-center bg-muted`}\n >\n <FontAwesomeIcon icon={faImage} className=\"h-16 w-16 opacity-20\" />\n </div>\n )}\n\n {/* Content Container */}\n <div className={`relative flex min-h-[400px] flex-col p-${padding}`}>\n {/* Title Overlay */}\n {titleEnabled && displayTitle && (\n <div className=\"flex flex-1 items-center justify-center\">\n <h2\n className={`text-center text-${titleFontSize} font-semibold text-${titleColor} drop-shadow-lg`}\n >\n {displayTitle}\n </h2>\n </div>\n )}\n\n {/* Bottom Section - QR Code, URL, and Buttons */}\n <div className=\"mt-auto flex flex-col gap-4\">\n <div className=\"flex items-end justify-between gap-4\">\n {/* QR Code */}\n <div className=\"shrink-0 rounded-lg bg-white p-2\">\n <QRCodeSVG\n value={shareLink || \"https://example.com\"}\n size={100}\n level=\"H\"\n />\n </div>\n\n {/* URL Display */}\n <div className=\"min-w-0 flex-1\">\n <p className=\"mb-2 text-sm font-semibold tracking-wide drop-shadow\">\n Your Shareable URL\n </p>\n <div className=\"flex items-center justify-between rounded-md border border-white/20 bg-black/50 p-2 text-sm text-white backdrop-blur\">\n <span className=\"truncate\">{displayUrl}</span>\n <button\n type=\"button\"\n onClick={handleCopyToClipboard}\n className={`ml-2 shrink-0 rounded p-1 transition-colors hover:bg-${accentColor}/20`}\n aria-label=\"Copy link\"\n >\n <FontAwesomeIcon icon={faCopy} className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n </div>\n\n {/* Action Buttons */}\n {/* TODO: Needs button link implmented, once it is uncomment the config for showBuyButton */}\n {shouldShowBuyButton && (\n <div className=\"flex\">\n <button\n type=\"button\"\n className={`flex w-full items-center justify-center gap-2 rounded-lg bg-${accentColor} p-3 font-medium text-${accentColor}-foreground transition-all hover:bg-${accentColor}-500`}\n >\n <FontAwesomeIcon icon={faCartShopping} className=\"h-4 w-4\" />\n <span>Buy</span>\n </button>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nexport const quickShareWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"QuickShareWidget\",\n displayName: \"Quick Share Widget\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [\n // Styling Tab - Resource\n {\n key: \"shareableResource\",\n label: \"Shareable Content\",\n type: \"resource\",\n description: \"Select the content to generate a share link for\",\n allowedTypes: [\"Product\", \"Page\", \"EnrollmentPack\", \"Medium\", \"Library\"],\n tab: \"styling\",\n group: \"Content\",\n },\n\n // Styling Tab - Title Group\n {\n key: \"titleEnabled\",\n label: \"Show Title\",\n type: \"boolean\",\n description: \"Display a title overlay on the widget\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Custom title text (defaults to resource title if empty)\",\n defaultValue: \"\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n key: \"titleFontSize\",\n label: \"Title Font Size\",\n description: \"Font size for the title text\",\n defaultValue: \"2xl\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the title text\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Actions Group\n // {\n // key: \"showBuyButton\",\n // label: \"Show Buy Button\",\n // type: \"boolean\",\n // description: \"Display the buy button (only visible for Product type)\",\n // defaultValue: false,\n // tab: \"styling\",\n // group: \"Actions\",\n // },\n\n // Styling Tab - Design Group\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for the widget\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"accentColor\",\n label: \"Accent Color\",\n description: \"Color for accent elements and buy button\",\n defaultValue: \"primary\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"overlayEnabled\",\n label: \"Enable Overlay\",\n type: \"boolean\",\n description: \"Add background overlay for text readability\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Design\",\n },\n {\n key: \"overlayType\",\n label: \"Overlay Type\",\n type: \"buttonGroup\",\n description: \"Type of overlay to add to the background\",\n defaultValue: \"solid\",\n options: [\n { label: \"Solid\", value: \"solid\" },\n { label: \"Gradient\", value: \"gradient\" },\n ],\n tab: \"styling\",\n group: \"Design\",\n requiresKeyToBeTrue: \"overlayEnabled\",\n },\n {\n key: \"overlayIntensity\",\n label: \"Overlay Intensity\",\n type: \"slider\",\n description: \"Opacity of the overlay background (0-100)\",\n min: 0,\n max: 100,\n step: 5,\n defaultValue: 50,\n unit: \"%\",\n tab: \"styling\",\n group: \"Design\",\n requiresKeyToBeTrue: \"overlayEnabled\",\n },\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the widget content\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the widget container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n ],\n} as const satisfies WidgetPropertySchema;\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ErrorState } from './chunk-GRFCSQ2M.js';
|
|
2
|
-
import { getFontSizeField, getColorField, getPaddingField, getBorderRadiusField } from './chunk-
|
|
2
|
+
import { getFontSizeField, getColorField, getPaddingField, getBorderRadiusField } from './chunk-6ZECDBGI.js';
|
|
3
3
|
import { useState, useMemo } from 'react';
|
|
4
4
|
import { useQuery } from '@tanstack/react-query';
|
|
5
5
|
import { useDataSourceConfig } from '@fluid-app/rep-core/data-sources/context';
|
|
@@ -406,5 +406,5 @@ var calendarWidgetPropertySchema = {
|
|
|
406
406
|
};
|
|
407
407
|
|
|
408
408
|
export { CalendarWidget, calendarWidgetPropertySchema };
|
|
409
|
-
//# sourceMappingURL=chunk-
|
|
410
|
-
//# sourceMappingURL=chunk-
|
|
409
|
+
//# sourceMappingURL=chunk-XX2N55EZ.js.map
|
|
410
|
+
//# sourceMappingURL=chunk-XX2N55EZ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/hooks/use-calendar-events.ts","../src/widgets/CalendarWidget.tsx"],"names":[],"mappings":"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","file":"chunk-GAYZNBS4.js","sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { useDataSourceConfig } from \"@fluid-app/rep-core/data-sources/context\";\n\n// API types\nexport type CalendarEvent = {\n id: number;\n title: string;\n description?: {\n id?: number | null;\n name?: string | null;\n body?: string | null;\n record_type?: string | null;\n record_id?: number | null;\n created_at?: string | null;\n updated_at?: string | null;\n locale?: string | null;\n } | null;\n color?: string | null;\n url?: string | null;\n start: string;\n end: string;\n active?: boolean | null;\n time_zone?: string | null;\n status?: string | null;\n image_url?: string | null;\n images?: unknown[] | null;\n venue?: string | null;\n countries?: string[] | null;\n hasTomorrow?: boolean | null;\n hasYesterday?: boolean | null;\n isAllDay?: boolean | null;\n};\n\nexport function useCalendarEvents() {\n const { baseUrl, getApiHeaders } = useDataSourceConfig();\n\n return useQuery({\n queryKey: [\"rep-widget-use\", \"calendar-events\", baseUrl] as const,\n queryFn: async ({ signal }): Promise<CalendarEvent[]> => {\n const url = baseUrl\n ? `${baseUrl}/company/events?status=active`\n : \"/company/events?status=active\";\n const response = await fetch(url, {\n headers: {\n \"content-type\": \"application/json\",\n ...getApiHeaders?.(),\n },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch calendar events: ${response.status}`);\n }\n\n return response.json();\n },\n });\n}\n","import { useState, useMemo, type ComponentProps } from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/rep-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport {\n useCalendarEvents,\n type CalendarEvent,\n} from \"../hooks/use-calendar-events\";\nimport { ErrorState } from \"../components/error-state\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faChevronLeft,\n faChevronRight,\n faChevronsDown,\n faChevronsUp,\n} from \"@fortawesome/pro-regular-svg-icons\";\n\n// Utility to get days in a month\nconst getDaysInMonth = (year: number, month: number) => {\n return new Date(year, month + 1, 0).getDate();\n};\n\n// Utility to get the first day of month (0 = Sunday, 1 = Monday, etc.)\nconst getFirstDayOfMonth = (year: number, month: number) => {\n return new Date(year, month, 1).getDay();\n};\n\n// Generate calendar grid for a month\nconst generateMonthGrid = (year: number, month: number) => {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDay = getFirstDayOfMonth(year, month);\n const today = new Date();\n\n const days: Array<{\n date: Date | null;\n isToday: boolean;\n isCurrentMonth: boolean;\n }> = [];\n\n // Add empty slots for days before the 1st\n for (let i = 0; i < firstDay; i++) {\n days.push({ date: null, isToday: false, isCurrentMonth: false });\n }\n\n // Add days of the month\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(year, month, day);\n const isToday =\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear();\n days.push({ date, isToday, isCurrentMonth: true });\n }\n\n return days;\n};\n\n// Generate week grid for current week\nconst generateWeekGrid = () => {\n const today = new Date();\n const currentDay = today.getDay();\n const days: Array<{\n date: Date;\n isToday: boolean;\n }> = [];\n\n for (let i = 0; i < 7; i++) {\n const date = new Date(today);\n date.setDate(today.getDate() - currentDay + i);\n days.push({\n date,\n isToday: date.toDateString() === today.toDateString(),\n });\n }\n\n return days;\n};\n\n// Get events for a specific date\nconst getEventsForDate = (date: Date, events: CalendarEvent[]) => {\n const dayStart = new Date(date);\n dayStart.setHours(0, 0, 0, 0);\n const dayEnd = new Date(date);\n dayEnd.setHours(23, 59, 59, 999);\n\n return events.filter((event) => {\n const eventStart = new Date(event.start);\n const eventEnd = new Date(event.end);\n return eventStart <= dayEnd && eventEnd >= dayStart;\n });\n};\n\n// Check if a date has events\nconst hasEventsOnDate = (date: Date | null, events: CalendarEvent[]) => {\n if (!date) return false;\n return getEventsForDate(date, events).length > 0;\n};\n\n// Event item component\nconst EventItem = ({\n title,\n start,\n end,\n color,\n isAllDay,\n accentColor,\n}: CalendarEvent & { accentColor?: string }) => {\n const startTime = new Date(start).toLocaleTimeString(\"en-US\", {\n hour: \"numeric\",\n minute: \"2-digit\",\n });\n const endTime = new Date(end).toLocaleTimeString(\"en-US\", {\n hour: \"numeric\",\n minute: \"2-digit\",\n });\n\n return (\n <div className=\"flex gap-x-2\">\n <div\n className=\"w-0.5 shrink-0 rounded-full\"\n style={{ backgroundColor: color || accentColor }}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate text-sm font-medium\">{title}</div>\n <div className=\"text-xs opacity-60\">\n {isAllDay ? \"All day\" : `${startTime} - ${endTime}`}\n </div>\n </div>\n </div>\n );\n};\n\nconst dayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\ntype DayButtonProps = {\n date: Date;\n isToday: boolean;\n isSelected: boolean;\n hasEvents: boolean;\n accentColor: string;\n onClick: () => void;\n extraClassName?: string;\n};\n\nfunction DayButton({\n date,\n isToday,\n isSelected,\n hasEvents,\n accentColor,\n onClick,\n extraClassName = \"\",\n}: DayButtonProps) {\n return (\n <button\n onClick={onClick}\n className={`relative flex aspect-square items-center justify-center rounded-full text-sm transition-colors ${\n isSelected\n ? `bg-${accentColor} text-${accentColor}-foreground`\n : isToday\n ? `bg-${accentColor}/30 text-${accentColor}-foreground hover:bg-${accentColor}/50`\n : `hover:bg-${accentColor}/50 hover:text-${accentColor}-foreground`\n } ${extraClassName}`}\n >\n {date.getDate()}\n {hasEvents && (\n <div\n className={`absolute bottom-1 h-1 w-1 rounded-full bg-${accentColor}`}\n />\n )}\n </button>\n );\n}\n\ntype CalendarWidgetProps = ComponentProps<\"div\"> & {\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n background?: BackgroundValue;\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n};\n\nexport function CalendarWidget({\n // Title defaults\n titleEnabled = true,\n titleText = \"Calendar\",\n titleFontSize = \"xl\",\n titleColor = \"foreground\",\n\n // Styling defaults\n background = {\n type: \"solid\",\n color: \"background\",\n },\n textColor = \"foreground\",\n accentColor = \"primary\",\n padding = 4,\n borderRadius = \"md\",\n\n className,\n ...props\n}: CalendarWidgetProps) {\n const backgroundColor = background.color || \"background\";\n const backgroundImage =\n (background.resource?.image_url || background.resource?.imageUrl) &&\n background.type === \"image\"\n ? `url(${background.resource.image_url || background.resource.imageUrl})`\n : \"none\";\n const today = new Date();\n const [currentMonth, setCurrentMonth] = useState(today.getMonth());\n const [currentYear, setCurrentYear] = useState(today.getFullYear());\n const [isCollapsed, setIsCollapsed] = useState(false);\n const [selectedDate, setSelectedDate] = useState<Date | null>(today);\n\n const { data: events = [], isLoading, isError } = useCalendarEvents();\n\n // Generate calendar grids\n const monthGrid = useMemo(\n () => generateMonthGrid(currentYear, currentMonth),\n [currentYear, currentMonth],\n );\n const weekGrid = useMemo(() => generateWeekGrid(), []);\n\n // Get events for selected date\n const selectedDateEvents = useMemo(() => {\n if (!selectedDate) return [];\n return getEventsForDate(selectedDate, events);\n }, [selectedDate, events]);\n\n // Navigation handlers\n const goToPrevMonth = () => {\n if (currentMonth === 0) {\n setCurrentMonth(11);\n setCurrentYear(currentYear - 1);\n } else {\n setCurrentMonth(currentMonth - 1);\n }\n };\n\n const goToNextMonth = () => {\n if (currentMonth === 11) {\n setCurrentMonth(0);\n setCurrentYear(currentYear + 1);\n } else {\n setCurrentMonth(currentMonth + 1);\n }\n };\n\n const monthYearLabel = new Date(currentYear, currentMonth).toLocaleString(\n \"en-US\",\n {\n month: \"long\",\n year: \"numeric\",\n },\n );\n\n return (\n <div\n className={`@container overflow-hidden rounded-${borderRadius} bg-${backgroundColor} text-${textColor} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n {/* Title */}\n {titleEnabled && titleText && (\n <div className={`p-${padding} pb-0`}>\n <h2 className={`text-${titleFontSize} font-bold text-${titleColor}`}>\n {titleText}\n </h2>\n </div>\n )}\n\n {/* Loading state */}\n {isLoading ? (\n <div\n className={`flex min-h-[300px] items-center justify-center p-${padding}`}\n >\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n </div>\n ) : isError ? (\n /* Error state */\n <ErrorState />\n ) : (\n <div className={`p-${padding}`}>\n {/* Desktop: Side by side layout */}\n <div className=\"@md:flex @md:gap-6\">\n {/* Calendar Section */}\n <div className=\"@md:flex-none\">\n {/* Month/Year Header with Navigation */}\n <div className=\"mb-4 flex items-center justify-between\">\n <button\n onClick={goToPrevMonth}\n className=\"rounded-full p-1 hover:bg-foreground/10\"\n aria-label=\"Previous month\"\n >\n <FontAwesomeIcon icon={faChevronLeft} />\n </button>\n\n <span className=\"text-base font-semibold\">\n {monthYearLabel}\n </span>\n\n <button\n onClick={goToNextMonth}\n className=\"rounded-full p-1 hover:bg-foreground/10\"\n aria-label=\"Next month\"\n >\n <FontAwesomeIcon icon={faChevronRight} />\n </button>\n </div>\n\n {/* Day Headers */}\n <div className=\"mb-2 grid grid-cols-7 gap-1 text-center\">\n {dayNames.map((day, idx) => (\n <div\n key={idx}\n className=\"text-xs font-medium uppercase opacity-60\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar Grid - Week view on mobile when collapsed */}\n {isCollapsed && (\n <div className=\"grid grid-cols-7 gap-1 @md:hidden\">\n {weekGrid.map(({ date, isToday }, idx) => (\n <DayButton\n key={idx}\n date={date}\n isToday={isToday}\n isSelected={\n selectedDate?.toDateString() === date.toDateString()\n }\n hasEvents={hasEventsOnDate(date, events)}\n accentColor={accentColor}\n onClick={() => setSelectedDate(date)}\n />\n ))}\n </div>\n )}\n\n {/* Month view (always on desktop, when not collapsed on mobile) */}\n <div\n className={`grid grid-cols-7 gap-1 ${isCollapsed ? \"hidden @md:grid\" : \"grid\"}`}\n >\n {monthGrid.map((day, idx) => {\n if (!day.date) {\n return <div key={idx} className=\"aspect-square\" />;\n }\n\n return (\n <DayButton\n key={idx}\n date={day.date}\n isToday={day.isToday}\n isSelected={\n selectedDate?.toDateString() === day.date.toDateString()\n }\n hasEvents={hasEventsOnDate(day.date, events)}\n accentColor={accentColor}\n onClick={() => setSelectedDate(day.date)}\n extraClassName=\"p-2 @md:m-3\"\n />\n );\n })}\n </div>\n\n {/* Mobile collapse toggle */}\n <button\n onClick={() => setIsCollapsed(!isCollapsed)}\n className={`ml-2 flex w-full items-center justify-center gap-3 rounded-full p-1 text-${textColor}/50 @md:hidden`}\n aria-label={\n isCollapsed ? \"Expand calendar\" : \"Collapse calendar\"\n }\n >\n <div className={`h-1 w-1/2 bg-${textColor}/50`} />\n {isCollapsed ? (\n <FontAwesomeIcon icon={faChevronsDown} />\n ) : (\n <FontAwesomeIcon icon={faChevronsUp} />\n )}\n <div className={`h-1 w-1/2 bg-${textColor}/50`} />\n </button>\n </div>\n\n {/* Events Panel */}\n <div className=\"mt-4 border-muted pt-4 @md:mt-0 @md:w-56 @md:border-l @md:pt-0 @md:pl-6\">\n <div className=\"mb-2 text-sm font-medium opacity-60\">\n {selectedDate\n ? selectedDate.toLocaleDateString(\"en-US\", {\n weekday: \"long\",\n month: \"short\",\n day: \"numeric\",\n })\n : \"Select a date\"}\n </div>\n\n {selectedDateEvents.length > 0 ? (\n <div className=\"flex flex-col gap-3\">\n {selectedDateEvents.map((event, idx) => (\n <EventItem\n key={`${event.id}-${idx}`}\n {...event}\n accentColor={`var(--${accentColor})`}\n />\n ))}\n </div>\n ) : (\n <div className=\"text-sm opacity-50\">No events</div>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport const calendarWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"CalendarWidget\",\n displayName: \"Calendar Widget\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [\n // Styling Tab - Title Group\n {\n key: \"titleEnabled\",\n label: \"Widget Title\",\n type: \"boolean\",\n description: \"Enable the title displayed above the calendar\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Title text displayed above the calendar\",\n defaultValue: \"Calendar\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n key: \"titleFontSize\",\n label: \"Title Font Size\",\n description: \"Font size for the widget title\",\n defaultValue: \"xl\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the widget title\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Design Group\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the calendar container\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n },\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for calendar content\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"accentColor\",\n label: \"Accent Color\",\n description: \"Color used for today highlight and event indicators\",\n defaultValue: \"primary\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the calendar container\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the calendar container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n ],\n} as const satisfies WidgetPropertySchema;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-calendar-events.ts","../src/widgets/CalendarWidget.tsx"],"names":[],"mappings":"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","file":"chunk-XX2N55EZ.js","sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\nimport { useDataSourceConfig } from \"@fluid-app/rep-core/data-sources/context\";\n\n// API types\nexport type CalendarEvent = {\n id: number;\n title: string;\n description?: {\n id?: number | null;\n name?: string | null;\n body?: string | null;\n record_type?: string | null;\n record_id?: number | null;\n created_at?: string | null;\n updated_at?: string | null;\n locale?: string | null;\n } | null;\n color?: string | null;\n url?: string | null;\n start: string;\n end: string;\n active?: boolean | null;\n time_zone?: string | null;\n status?: string | null;\n image_url?: string | null;\n images?: unknown[] | null;\n venue?: string | null;\n countries?: string[] | null;\n hasTomorrow?: boolean | null;\n hasYesterday?: boolean | null;\n isAllDay?: boolean | null;\n};\n\nexport function useCalendarEvents() {\n const { baseUrl, getApiHeaders } = useDataSourceConfig();\n\n return useQuery({\n queryKey: [\"rep-widget-use\", \"calendar-events\", baseUrl] as const,\n queryFn: async ({ signal }): Promise<CalendarEvent[]> => {\n const url = baseUrl\n ? `${baseUrl}/company/events?status=active`\n : \"/company/events?status=active\";\n const response = await fetch(url, {\n headers: {\n \"content-type\": \"application/json\",\n ...getApiHeaders?.(),\n },\n signal,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch calendar events: ${response.status}`);\n }\n\n return response.json();\n },\n });\n}\n","import { useState, useMemo, type ComponentProps } from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n FontSizeOptions,\n PaddingOptions,\n} from \"@fluid-app/rep-core/types\";\nimport type { WidgetPropertySchema } from \"@fluid-app/rep-core/registries\";\nimport {\n getBorderRadiusField,\n getColorField,\n getFontSizeField,\n getPaddingField,\n} from \"../core/fields\";\nimport {\n useCalendarEvents,\n type CalendarEvent,\n} from \"../hooks/use-calendar-events\";\nimport { ErrorState } from \"../components/error-state\";\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport {\n faChevronLeft,\n faChevronRight,\n faChevronsDown,\n faChevronsUp,\n} from \"@fortawesome/pro-regular-svg-icons\";\n\n// Utility to get days in a month\nconst getDaysInMonth = (year: number, month: number) => {\n return new Date(year, month + 1, 0).getDate();\n};\n\n// Utility to get the first day of month (0 = Sunday, 1 = Monday, etc.)\nconst getFirstDayOfMonth = (year: number, month: number) => {\n return new Date(year, month, 1).getDay();\n};\n\n// Generate calendar grid for a month\nconst generateMonthGrid = (year: number, month: number) => {\n const daysInMonth = getDaysInMonth(year, month);\n const firstDay = getFirstDayOfMonth(year, month);\n const today = new Date();\n\n const days: Array<{\n date: Date | null;\n isToday: boolean;\n isCurrentMonth: boolean;\n }> = [];\n\n // Add empty slots for days before the 1st\n for (let i = 0; i < firstDay; i++) {\n days.push({ date: null, isToday: false, isCurrentMonth: false });\n }\n\n // Add days of the month\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(year, month, day);\n const isToday =\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear();\n days.push({ date, isToday, isCurrentMonth: true });\n }\n\n return days;\n};\n\n// Generate week grid for current week\nconst generateWeekGrid = () => {\n const today = new Date();\n const currentDay = today.getDay();\n const days: Array<{\n date: Date;\n isToday: boolean;\n }> = [];\n\n for (let i = 0; i < 7; i++) {\n const date = new Date(today);\n date.setDate(today.getDate() - currentDay + i);\n days.push({\n date,\n isToday: date.toDateString() === today.toDateString(),\n });\n }\n\n return days;\n};\n\n// Get events for a specific date\nconst getEventsForDate = (date: Date, events: CalendarEvent[]) => {\n const dayStart = new Date(date);\n dayStart.setHours(0, 0, 0, 0);\n const dayEnd = new Date(date);\n dayEnd.setHours(23, 59, 59, 999);\n\n return events.filter((event) => {\n const eventStart = new Date(event.start);\n const eventEnd = new Date(event.end);\n return eventStart <= dayEnd && eventEnd >= dayStart;\n });\n};\n\n// Check if a date has events\nconst hasEventsOnDate = (date: Date | null, events: CalendarEvent[]) => {\n if (!date) return false;\n return getEventsForDate(date, events).length > 0;\n};\n\n// Event item component\nconst EventItem = ({\n title,\n start,\n end,\n color,\n isAllDay,\n accentColor,\n}: CalendarEvent & { accentColor?: string }) => {\n const startTime = new Date(start).toLocaleTimeString(\"en-US\", {\n hour: \"numeric\",\n minute: \"2-digit\",\n });\n const endTime = new Date(end).toLocaleTimeString(\"en-US\", {\n hour: \"numeric\",\n minute: \"2-digit\",\n });\n\n return (\n <div className=\"flex gap-x-2\">\n <div\n className=\"w-0.5 shrink-0 rounded-full\"\n style={{ backgroundColor: color || accentColor }}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate text-sm font-medium\">{title}</div>\n <div className=\"text-xs opacity-60\">\n {isAllDay ? \"All day\" : `${startTime} - ${endTime}`}\n </div>\n </div>\n </div>\n );\n};\n\nconst dayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n\ntype DayButtonProps = {\n date: Date;\n isToday: boolean;\n isSelected: boolean;\n hasEvents: boolean;\n accentColor: string;\n onClick: () => void;\n extraClassName?: string;\n};\n\nfunction DayButton({\n date,\n isToday,\n isSelected,\n hasEvents,\n accentColor,\n onClick,\n extraClassName = \"\",\n}: DayButtonProps) {\n return (\n <button\n onClick={onClick}\n className={`relative flex aspect-square items-center justify-center rounded-full text-sm transition-colors ${\n isSelected\n ? `bg-${accentColor} text-${accentColor}-foreground`\n : isToday\n ? `bg-${accentColor}/30 text-${accentColor}-foreground hover:bg-${accentColor}/50`\n : `hover:bg-${accentColor}/50 hover:text-${accentColor}-foreground`\n } ${extraClassName}`}\n >\n {date.getDate()}\n {hasEvents && (\n <div\n className={`absolute bottom-1 h-1 w-1 rounded-full bg-${accentColor}`}\n />\n )}\n </button>\n );\n}\n\ntype CalendarWidgetProps = ComponentProps<\"div\"> & {\n // Title\n titleEnabled?: boolean;\n titleText?: string;\n titleFontSize?: FontSizeOptions;\n titleColor?: ColorOptions;\n\n // Styling\n background?: BackgroundValue;\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n};\n\nexport function CalendarWidget({\n // Title defaults\n titleEnabled = true,\n titleText = \"Calendar\",\n titleFontSize = \"xl\",\n titleColor = \"foreground\",\n\n // Styling defaults\n background = {\n type: \"solid\",\n color: \"background\",\n },\n textColor = \"foreground\",\n accentColor = \"primary\",\n padding = 4,\n borderRadius = \"md\",\n\n className,\n ...props\n}: CalendarWidgetProps) {\n const backgroundColor = background.color || \"background\";\n const backgroundImage =\n (background.resource?.image_url || background.resource?.imageUrl) &&\n background.type === \"image\"\n ? `url(${background.resource.image_url || background.resource.imageUrl})`\n : \"none\";\n const today = new Date();\n const [currentMonth, setCurrentMonth] = useState(today.getMonth());\n const [currentYear, setCurrentYear] = useState(today.getFullYear());\n const [isCollapsed, setIsCollapsed] = useState(false);\n const [selectedDate, setSelectedDate] = useState<Date | null>(today);\n\n const { data: events = [], isLoading, isError } = useCalendarEvents();\n\n // Generate calendar grids\n const monthGrid = useMemo(\n () => generateMonthGrid(currentYear, currentMonth),\n [currentYear, currentMonth],\n );\n const weekGrid = useMemo(() => generateWeekGrid(), []);\n\n // Get events for selected date\n const selectedDateEvents = useMemo(() => {\n if (!selectedDate) return [];\n return getEventsForDate(selectedDate, events);\n }, [selectedDate, events]);\n\n // Navigation handlers\n const goToPrevMonth = () => {\n if (currentMonth === 0) {\n setCurrentMonth(11);\n setCurrentYear(currentYear - 1);\n } else {\n setCurrentMonth(currentMonth - 1);\n }\n };\n\n const goToNextMonth = () => {\n if (currentMonth === 11) {\n setCurrentMonth(0);\n setCurrentYear(currentYear + 1);\n } else {\n setCurrentMonth(currentMonth + 1);\n }\n };\n\n const monthYearLabel = new Date(currentYear, currentMonth).toLocaleString(\n \"en-US\",\n {\n month: \"long\",\n year: \"numeric\",\n },\n );\n\n return (\n <div\n className={`@container overflow-hidden rounded-${borderRadius} bg-${backgroundColor} text-${textColor} ${className}`}\n style={{ backgroundImage }}\n {...props}\n >\n {/* Title */}\n {titleEnabled && titleText && (\n <div className={`p-${padding} pb-0`}>\n <h2 className={`text-${titleFontSize} font-bold text-${titleColor}`}>\n {titleText}\n </h2>\n </div>\n )}\n\n {/* Loading state */}\n {isLoading ? (\n <div\n className={`flex min-h-[300px] items-center justify-center p-${padding}`}\n >\n <div className=\"h-8 w-8 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n </div>\n ) : isError ? (\n /* Error state */\n <ErrorState />\n ) : (\n <div className={`p-${padding}`}>\n {/* Desktop: Side by side layout */}\n <div className=\"@md:flex @md:gap-6\">\n {/* Calendar Section */}\n <div className=\"@md:flex-none\">\n {/* Month/Year Header with Navigation */}\n <div className=\"mb-4 flex items-center justify-between\">\n <button\n onClick={goToPrevMonth}\n className=\"rounded-full p-1 hover:bg-foreground/10\"\n aria-label=\"Previous month\"\n >\n <FontAwesomeIcon icon={faChevronLeft} />\n </button>\n\n <span className=\"text-base font-semibold\">\n {monthYearLabel}\n </span>\n\n <button\n onClick={goToNextMonth}\n className=\"rounded-full p-1 hover:bg-foreground/10\"\n aria-label=\"Next month\"\n >\n <FontAwesomeIcon icon={faChevronRight} />\n </button>\n </div>\n\n {/* Day Headers */}\n <div className=\"mb-2 grid grid-cols-7 gap-1 text-center\">\n {dayNames.map((day, idx) => (\n <div\n key={idx}\n className=\"text-xs font-medium uppercase opacity-60\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar Grid - Week view on mobile when collapsed */}\n {isCollapsed && (\n <div className=\"grid grid-cols-7 gap-1 @md:hidden\">\n {weekGrid.map(({ date, isToday }, idx) => (\n <DayButton\n key={idx}\n date={date}\n isToday={isToday}\n isSelected={\n selectedDate?.toDateString() === date.toDateString()\n }\n hasEvents={hasEventsOnDate(date, events)}\n accentColor={accentColor}\n onClick={() => setSelectedDate(date)}\n />\n ))}\n </div>\n )}\n\n {/* Month view (always on desktop, when not collapsed on mobile) */}\n <div\n className={`grid grid-cols-7 gap-1 ${isCollapsed ? \"hidden @md:grid\" : \"grid\"}`}\n >\n {monthGrid.map((day, idx) => {\n if (!day.date) {\n return <div key={idx} className=\"aspect-square\" />;\n }\n\n return (\n <DayButton\n key={idx}\n date={day.date}\n isToday={day.isToday}\n isSelected={\n selectedDate?.toDateString() === day.date.toDateString()\n }\n hasEvents={hasEventsOnDate(day.date, events)}\n accentColor={accentColor}\n onClick={() => setSelectedDate(day.date)}\n extraClassName=\"p-2 @md:m-3\"\n />\n );\n })}\n </div>\n\n {/* Mobile collapse toggle */}\n <button\n onClick={() => setIsCollapsed(!isCollapsed)}\n className={`ml-2 flex w-full items-center justify-center gap-3 rounded-full p-1 text-${textColor}/50 @md:hidden`}\n aria-label={\n isCollapsed ? \"Expand calendar\" : \"Collapse calendar\"\n }\n >\n <div className={`h-1 w-1/2 bg-${textColor}/50`} />\n {isCollapsed ? (\n <FontAwesomeIcon icon={faChevronsDown} />\n ) : (\n <FontAwesomeIcon icon={faChevronsUp} />\n )}\n <div className={`h-1 w-1/2 bg-${textColor}/50`} />\n </button>\n </div>\n\n {/* Events Panel */}\n <div className=\"mt-4 border-muted pt-4 @md:mt-0 @md:w-56 @md:border-l @md:pt-0 @md:pl-6\">\n <div className=\"mb-2 text-sm font-medium opacity-60\">\n {selectedDate\n ? selectedDate.toLocaleDateString(\"en-US\", {\n weekday: \"long\",\n month: \"short\",\n day: \"numeric\",\n })\n : \"Select a date\"}\n </div>\n\n {selectedDateEvents.length > 0 ? (\n <div className=\"flex flex-col gap-3\">\n {selectedDateEvents.map((event, idx) => (\n <EventItem\n key={`${event.id}-${idx}`}\n {...event}\n accentColor={`var(--${accentColor})`}\n />\n ))}\n </div>\n ) : (\n <div className=\"text-sm opacity-50\">No events</div>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport const calendarWidgetPropertySchema: WidgetPropertySchema = {\n widgetType: \"CalendarWidget\",\n displayName: \"Calendar Widget\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [\n // Styling Tab - Title Group\n {\n key: \"titleEnabled\",\n label: \"Widget Title\",\n type: \"boolean\",\n description: \"Enable the title displayed above the calendar\",\n defaultValue: true,\n tab: \"styling\",\n group: \"Title\",\n },\n {\n key: \"titleText\",\n label: \"Title\",\n type: \"text\",\n description: \"Title text displayed above the calendar\",\n defaultValue: \"Calendar\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n },\n getFontSizeField({\n key: \"titleFontSize\",\n label: \"Title Font Size\",\n description: \"Font size for the widget title\",\n defaultValue: \"xl\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n getColorField({\n key: \"titleColor\",\n label: \"Title Color\",\n description: \"Color for the widget title\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Title\",\n requiresKeyToBeTrue: \"titleEnabled\",\n }),\n\n // Styling Tab - Design Group\n {\n type: \"background\",\n key: \"background\",\n label: \"Background\",\n description: \"Background for the calendar container\",\n defaultValue: \"background\",\n tab: \"styling\",\n group: \"Design\",\n },\n getColorField({\n key: \"textColor\",\n label: \"Text Color\",\n description: \"Default text color for calendar content\",\n defaultValue: \"foreground\",\n tab: \"styling\",\n group: \"Design\",\n }),\n getColorField({\n key: \"accentColor\",\n label: \"Accent Color\",\n description: \"Color used for today highlight and event indicators\",\n defaultValue: \"primary\",\n tab: \"styling\",\n group: \"Design\",\n }),\n {\n key: \"separator\",\n type: \"separator\",\n label: \"Separator\",\n tab: \"styling\",\n group: \"Design\",\n },\n getPaddingField({\n key: \"padding\",\n label: \"Padding\",\n description: \"Padding around the calendar container\",\n defaultValue: 4,\n tab: \"styling\",\n group: \"Design\",\n }),\n getBorderRadiusField({\n key: \"borderRadius\",\n label: \"Border Radius\",\n description: \"Border radius for the calendar container\",\n defaultValue: \"md\",\n tab: \"styling\",\n group: \"Design\",\n }),\n ],\n} as const satisfies WidgetPropertySchema;\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ErrorState } from './chunk-GRFCSQ2M.js';
|
|
2
|
-
import { getFontSizeField, getColorField, getPaddingField, getBorderRadiusField } from './chunk-
|
|
2
|
+
import { getFontSizeField, getColorField, getPaddingField, getBorderRadiusField } from './chunk-6ZECDBGI.js';
|
|
3
3
|
import { useMemo } from 'react';
|
|
4
4
|
import { useQuery } from '@tanstack/react-query';
|
|
5
5
|
import { useDataSourceConfig } from '@fluid-app/rep-core/data-sources/context';
|
|
@@ -388,5 +388,5 @@ var recentActivityWidgetPropertySchema = {
|
|
|
388
388
|
};
|
|
389
389
|
|
|
390
390
|
export { RecentActivityWidget, recentActivityWidgetPropertySchema };
|
|
391
|
-
//# sourceMappingURL=chunk-
|
|
392
|
-
//# sourceMappingURL=chunk-
|
|
391
|
+
//# sourceMappingURL=chunk-YGATS7HW.js.map
|
|
392
|
+
//# sourceMappingURL=chunk-YGATS7HW.js.map
|