@tumaet/prompt-ui-components 0.0.2 → 0.0.4
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/components/DatePicker.js +18 -0
- package/dist/components/DatePicker.js.map +1 -0
- package/dist/components/DateRangePicker.js +12 -0
- package/dist/components/DateRangePicker.js.map +1 -0
- package/dist/components/DeleteConfirmationDialog.js +13 -0
- package/dist/components/DeleteConfirmationDialog.js.map +1 -0
- package/dist/components/ErrorPage.js +9 -0
- package/dist/components/ErrorPage.js.map +1 -0
- package/dist/components/ExportedApplicationAnswerTable.js +16 -0
- package/dist/components/ExportedApplicationAnswerTable.js.map +1 -0
- package/dist/components/LoadingPage.js +6 -0
- package/dist/components/LoadingPage.js.map +1 -0
- package/dist/components/ManagementPageHeader.js +5 -0
- package/dist/components/ManagementPageHeader.js.map +1 -0
- package/dist/components/MissingConfig.js +12 -0
- package/dist/components/MissingConfig.js.map +1 -0
- package/dist/components/MultiSelect.js +96 -0
- package/dist/components/MultiSelect.js.map +1 -0
- package/dist/components/SaveChangesAlert.js +31 -0
- package/dist/components/SaveChangesAlert.js.map +1 -0
- package/dist/components/StudentProfile.js +14 -0
- package/dist/components/StudentProfile.js.map +1 -0
- package/dist/components/ThemeToggle.js +10 -0
- package/dist/components/ThemeToggle.js.map +1 -0
- package/dist/components/UnauthorizedPage.js +13 -0
- package/dist/components/UnauthorizedPage.js.map +1 -0
- package/dist/components/index.js +9 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.js +65 -0
- package/dist/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.js.map +1 -0
- package/dist/components/minimal-tiptap/components/image/image-edit-block.js +38 -0
- package/dist/components/minimal-tiptap/components/image/image-edit-block.js.map +1 -0
- package/dist/components/minimal-tiptap/components/image/image-edit-dialog.js +12 -0
- package/dist/components/minimal-tiptap/components/image/image-edit-dialog.js.map +1 -0
- package/dist/components/minimal-tiptap/components/link/link-edit-block.js +34 -0
- package/dist/components/minimal-tiptap/components/link/link-edit-block.js.map +1 -0
- package/dist/components/minimal-tiptap/components/link/link-edit-popover.js +38 -0
- package/dist/components/minimal-tiptap/components/link/link-edit-popover.js.map +1 -0
- package/dist/components/minimal-tiptap/components/link/link-popover-block.js +28 -0
- package/dist/components/minimal-tiptap/components/link/link-popover-block.js.map +1 -0
- package/dist/components/minimal-tiptap/components/measured-container.js +16 -0
- package/dist/components/minimal-tiptap/components/measured-container.js.map +1 -0
- package/dist/components/minimal-tiptap/components/section/five.js +39 -0
- package/dist/components/minimal-tiptap/components/section/five.js.map +1 -0
- package/dist/components/minimal-tiptap/components/section/four.js +29 -0
- package/dist/components/minimal-tiptap/components/section/four.js.map +1 -0
- package/dist/components/minimal-tiptap/components/section/mailingPlaceholders.js +23 -0
- package/dist/components/minimal-tiptap/components/section/mailingPlaceholders.js.map +1 -0
- package/dist/components/minimal-tiptap/components/section/one.js +77 -0
- package/dist/components/minimal-tiptap/components/section/one.js.map +1 -0
- package/dist/components/minimal-tiptap/components/section/three.js +79 -0
- package/dist/components/minimal-tiptap/components/section/three.js.map +1 -0
- package/dist/components/minimal-tiptap/components/section/two.js +65 -0
- package/dist/components/minimal-tiptap/components/section/two.js.map +1 -0
- package/dist/components/minimal-tiptap/components/shortcut-key.js +11 -0
- package/dist/components/minimal-tiptap/components/shortcut-key.js.map +1 -0
- package/dist/components/minimal-tiptap/components/spinner.js +9 -0
- package/dist/components/minimal-tiptap/components/spinner.js.map +1 -0
- package/dist/components/minimal-tiptap/components/toolbar-button.js +15 -0
- package/dist/components/minimal-tiptap/components/toolbar-button.js.map +1 -0
- package/dist/components/minimal-tiptap/components/toolbar-section.js +27 -0
- package/dist/components/minimal-tiptap/components/toolbar-section.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/code-block-lowlight/code-block-lowlight.js +16 -0
- package/dist/components/minimal-tiptap/extensions/code-block-lowlight/code-block-lowlight.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/code-block-lowlight/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/code-block-lowlight/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/color/color.js +20 -0
- package/dist/components/minimal-tiptap/extensions/color/color.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/color/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/color/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/file-handler/index.js +74 -0
- package/dist/components/minimal-tiptap/extensions/file-handler/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/horizontal-rule/horizontal-rule.js +16 -0
- package/dist/components/minimal-tiptap/extensions/horizontal-rule/horizontal-rule.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/horizontal-rule/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/horizontal-rule/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/components/image-actions.js +39 -0
- package/dist/components/minimal-tiptap/extensions/image/components/image-actions.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/components/image-overlay.js +9 -0
- package/dist/components/minimal-tiptap/extensions/image/components/image-overlay.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/components/image-view-block.js +167 -0
- package/dist/components/minimal-tiptap/extensions/image/components/image-view-block.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/components/resize-handle.js +11 -0
- package/dist/components/minimal-tiptap/extensions/image/components/resize-handle.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/hooks/use-drag-resize.js +88 -0
- package/dist/components/minimal-tiptap/extensions/image/hooks/use-drag-resize.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/hooks/use-image-actions.js +32 -0
- package/dist/components/minimal-tiptap/extensions/image/hooks/use-image-actions.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/image.js +225 -0
- package/dist/components/minimal-tiptap/extensions/image/image.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/image/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/index.js +10 -0
- package/dist/components/minimal-tiptap/extensions/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/link/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/link/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/link/link.js +74 -0
- package/dist/components/minimal-tiptap/extensions/link/link.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/reset-marks-on-enter/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/reset-marks-on-enter/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/reset-marks-on-enter/reset-marks-on-enter.js +20 -0
- package/dist/components/minimal-tiptap/extensions/reset-marks-on-enter/reset-marks-on-enter.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/selection/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/selection/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/selection/selection.js +31 -0
- package/dist/components/minimal-tiptap/extensions/selection/selection.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/unset-all-marks/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/unset-all-marks/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/unset-all-marks/unset-all-marks.js +9 -0
- package/dist/components/minimal-tiptap/extensions/unset-all-marks/unset-all-marks.js.map +1 -0
- package/dist/components/minimal-tiptap/form-description-tiptap.js +26 -0
- package/dist/components/minimal-tiptap/form-description-tiptap.js.map +1 -0
- package/dist/components/minimal-tiptap/hooks/use-container-size.js +44 -0
- package/dist/components/minimal-tiptap/hooks/use-container-size.js.map +1 -0
- package/dist/components/minimal-tiptap/hooks/use-minimal-tiptap.js +160 -0
- package/dist/components/minimal-tiptap/hooks/use-minimal-tiptap.js.map +1 -0
- package/dist/components/minimal-tiptap/hooks/use-theme.js +19 -0
- package/dist/components/minimal-tiptap/hooks/use-theme.js.map +1 -0
- package/dist/components/minimal-tiptap/hooks/use-throttle.js +24 -0
- package/dist/components/minimal-tiptap/hooks/use-throttle.js.map +1 -0
- package/dist/components/minimal-tiptap/index.js +2 -0
- package/dist/components/minimal-tiptap/index.js.map +1 -0
- package/dist/components/minimal-tiptap/mailing-tiptap.js +30 -0
- package/dist/components/minimal-tiptap/mailing-tiptap.js.map +1 -0
- package/dist/components/minimal-tiptap/minimal-tiptap.js +29 -0
- package/dist/components/minimal-tiptap/minimal-tiptap.js.map +1 -0
- package/dist/components/minimal-tiptap/types.js +2 -0
- package/dist/components/minimal-tiptap/types.js.map +1 -0
- package/dist/components/minimal-tiptap/utils.js +156 -0
- package/dist/components/minimal-tiptap/utils.js.map +1 -0
- package/dist/components/pages/CoursePhaseParticpationsTable/CoursePhaseParticipationsTablePage.js +71 -0
- package/dist/components/pages/CoursePhaseParticpationsTable/CoursePhaseParticipationsTablePage.js.map +1 -0
- package/dist/components/pages/CoursePhaseParticpationsTable/components/FilterMenu.js +43 -0
- package/dist/components/pages/CoursePhaseParticpationsTable/components/FilterMenu.js.map +1 -0
- package/dist/components/pages/CoursePhaseParticpationsTable/components/GroupActionsMenu.js +50 -0
- package/dist/components/pages/CoursePhaseParticpationsTable/components/GroupActionsMenu.js.map +1 -0
- package/dist/components/pages/CoursePhaseParticpationsTable/components/columns.js +84 -0
- package/dist/components/pages/CoursePhaseParticpationsTable/components/columns.js.map +1 -0
- package/dist/components/pages/CoursePhaseParticpationsTable/interfaces/ExtraParticipationTableData.js +2 -0
- package/dist/components/pages/CoursePhaseParticpationsTable/interfaces/ExtraParticipationTableData.js.map +1 -0
- package/dist/components/pages/CoursePhaseParticpationsTable/utils/downloadParticipations.js +70 -0
- package/dist/components/pages/CoursePhaseParticpationsTable/utils/downloadParticipations.js.map +1 -0
- package/dist/components/pages/Mailing/CoursePhaseMailing.js +88 -0
- package/dist/components/pages/Mailing/CoursePhaseMailing.js.map +1 -0
- package/dist/components/pages/Mailing/components/AvailableMailPlaceholders.js +61 -0
- package/dist/components/pages/Mailing/components/AvailableMailPlaceholders.js.map +1 -0
- package/dist/components/pages/Mailing/components/ConfirmSendEmailDialog.js +35 -0
- package/dist/components/pages/Mailing/components/ConfirmSendEmailDialog.js.map +1 -0
- package/dist/components/pages/Mailing/components/MailingEditor.js +29 -0
- package/dist/components/pages/Mailing/components/MailingEditor.js.map +1 -0
- package/dist/components/pages/Mailing/components/ManualMailSending.js +35 -0
- package/dist/components/pages/Mailing/components/ManualMailSending.js.map +1 -0
- package/dist/components/pages/Mailing/components/SettingsCard.js +14 -0
- package/dist/components/pages/Mailing/components/SettingsCard.js.map +1 -0
- package/dist/components/table/GroupActionDialog.js +8 -0
- package/dist/components/table/GroupActionDialog.js.map +1 -0
- package/dist/components/table/SortableHeader.js +7 -0
- package/dist/components/table/SortableHeader.js.map +1 -0
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/chart.js +1 -1
- package/dist/components/ui/chart.js.map +1 -1
- package/dist/index.css +2 -3
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types/components/DatePicker.d.ts +6 -0
- package/dist/types/components/DateRangePicker.d.ts +8 -0
- package/dist/types/components/DeleteConfirmationDialog.d.ts +9 -0
- package/dist/types/components/ErrorPage.d.ts +9 -0
- package/dist/types/components/ExportedApplicationAnswerTable.d.ts +6 -0
- package/dist/types/components/LoadingPage.d.ts +1 -0
- package/dist/types/components/ManagementPageHeader.d.ts +5 -0
- package/dist/types/components/MissingConfig.d.ts +13 -0
- package/dist/types/components/MultiSelect.d.ts +68 -0
- package/dist/types/components/SaveChangesAlert.d.ts +8 -0
- package/dist/types/components/StudentProfile.d.ts +7 -0
- package/dist/types/components/ThemeToggle.d.ts +1 -0
- package/dist/types/components/UnauthorizedPage.d.ts +7 -0
- package/dist/types/components/index.d.ts +9 -0
- package/dist/types/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.d.ts +7 -0
- package/dist/types/components/minimal-tiptap/components/image/image-edit-block.d.ts +8 -0
- package/dist/types/components/minimal-tiptap/components/image/image-edit-dialog.d.ts +8 -0
- package/dist/types/components/minimal-tiptap/components/link/link-edit-block.d.ts +9 -0
- package/dist/types/components/minimal-tiptap/components/link/link-edit-popover.d.ts +8 -0
- package/dist/types/components/minimal-tiptap/components/link/link-popover-block.d.ts +8 -0
- package/dist/types/components/minimal-tiptap/components/measured-container.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/components/section/five.d.ts +12 -0
- package/dist/types/components/minimal-tiptap/components/section/four.d.ts +12 -0
- package/dist/types/components/minimal-tiptap/components/section/mailingPlaceholders.d.ts +10 -0
- package/dist/types/components/minimal-tiptap/components/section/one.d.ts +11 -0
- package/dist/types/components/minimal-tiptap/components/section/three.d.ts +9 -0
- package/dist/types/components/minimal-tiptap/components/section/two.d.ts +12 -0
- package/dist/types/components/minimal-tiptap/components/shortcut-key.d.ts +5 -0
- package/dist/types/components/minimal-tiptap/components/spinner.d.ts +5 -0
- package/dist/types/components/minimal-tiptap/components/toolbar-button.d.ts +10 -0
- package/dist/types/components/minimal-tiptap/components/toolbar-section.d.ts +16 -0
- package/dist/types/components/minimal-tiptap/extensions/code-block-lowlight/code-block-lowlight.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/extensions/code-block-lowlight/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/color/color.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/color/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/file-handler/index.d.ts +12 -0
- package/dist/types/components/minimal-tiptap/extensions/horizontal-rule/horizontal-rule.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/extensions/horizontal-rule/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/image/components/image-actions.d.ts +17 -0
- package/dist/types/components/minimal-tiptap/extensions/image/components/image-overlay.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/extensions/image/components/image-view-block.d.ts +3 -0
- package/dist/types/components/minimal-tiptap/extensions/image/components/resize-handle.d.ts +6 -0
- package/dist/types/components/minimal-tiptap/extensions/image/hooks/use-drag-resize.d.ts +24 -0
- package/dist/types/components/minimal-tiptap/extensions/image/hooks/use-image-actions.d.ts +24 -0
- package/dist/types/components/minimal-tiptap/extensions/image/image.d.ts +52 -0
- package/dist/types/components/minimal-tiptap/extensions/image/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/index.d.ts +9 -0
- package/dist/types/components/minimal-tiptap/extensions/link/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/link/link.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/extensions/reset-marks-on-enter/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/reset-marks-on-enter/reset-marks-on-enter.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/extensions/selection/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/selection/selection.d.ts +3 -0
- package/dist/types/components/minimal-tiptap/extensions/unset-all-marks/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/unset-all-marks/unset-all-marks.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/form-description-tiptap.d.ts +4 -0
- package/dist/types/components/minimal-tiptap/hooks/use-container-size.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/hooks/use-minimal-tiptap.d.ts +13 -0
- package/dist/types/components/minimal-tiptap/hooks/use-theme.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/hooks/use-throttle.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/mailing-tiptap.d.ts +13 -0
- package/dist/types/components/minimal-tiptap/minimal-tiptap.d.ts +12 -0
- package/dist/types/components/minimal-tiptap/types.d.ts +25 -0
- package/dist/types/components/minimal-tiptap/utils.d.ts +38 -0
- package/dist/types/components/pages/CoursePhaseParticpationsTable/CoursePhaseParticipationsTablePage.d.ts +13 -0
- package/dist/types/components/pages/CoursePhaseParticpationsTable/components/FilterMenu.d.ts +7 -0
- package/dist/types/components/pages/CoursePhaseParticpationsTable/components/GroupActionsMenu.d.ts +10 -0
- package/dist/types/components/pages/CoursePhaseParticpationsTable/components/columns.d.ts +9 -0
- package/dist/types/components/pages/CoursePhaseParticpationsTable/interfaces/ExtraParticipationTableData.d.ts +5 -0
- package/dist/types/components/pages/CoursePhaseParticpationsTable/utils/downloadParticipations.d.ts +3 -0
- package/dist/types/components/pages/Mailing/CoursePhaseMailing.d.ts +6 -0
- package/dist/types/components/pages/Mailing/components/AvailableMailPlaceholders.d.ts +12 -0
- package/dist/types/components/pages/Mailing/components/ConfirmSendEmailDialog.d.ts +8 -0
- package/dist/types/components/pages/Mailing/components/MailingEditor.d.ts +12 -0
- package/dist/types/components/pages/Mailing/components/ManualMailSending.d.ts +7 -0
- package/dist/types/components/pages/Mailing/components/SettingsCard.d.ts +7 -0
- package/dist/types/components/table/GroupActionDialog.d.ts +11 -0
- package/dist/types/components/table/SortableHeader.d.ts +4 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +23 -2
- package/src/index.css +1 -2
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { format } from 'date-fns';
|
|
4
|
+
import { CalendarIcon } from 'lucide-react';
|
|
5
|
+
import { enGB } from 'date-fns/locale';
|
|
6
|
+
import { cn } from '@/lib/utils';
|
|
7
|
+
import { Button } from '@/components/ui/button';
|
|
8
|
+
import { Calendar } from '@/components/ui/calendar';
|
|
9
|
+
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';
|
|
10
|
+
export const DatePicker = ({ date, onSelect }) => {
|
|
11
|
+
const [open, setOpen] = React.useState(false);
|
|
12
|
+
const handleSelect = (newDate) => {
|
|
13
|
+
onSelect(newDate);
|
|
14
|
+
setOpen(false);
|
|
15
|
+
};
|
|
16
|
+
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { variant: 'outline', className: cn('w-[280px] justify-start text-left font-normal', !date && 'text-muted-foreground'), children: [_jsx(CalendarIcon, { className: 'mr-2 h-4 w-4' }), date ? format(date, 'PPP') : _jsx("span", { children: "Pick a date" })] }) }), _jsx(PopoverContent, { className: 'w-auto p-0', children: _jsx(Calendar, { mode: 'single', selected: date, onSelect: handleSelect, defaultMonth: date, initialFocus: true, locale: enGB }) })] }));
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../src/components/DatePicker.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAOjF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAmB,EAAe,EAAE;IAC7E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE7C,MAAM,YAAY,GAAG,CAAC,OAAyB,EAAE,EAAE;QACjD,QAAQ,CAAC,OAAO,CAAC,CAAA;QACjB,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,OAAO,CACL,MAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,aACxC,KAAC,cAAc,IAAC,OAAO,kBACrB,MAAC,MAAM,IACL,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,EAAE,CACX,+CAA+C,EAC/C,CAAC,IAAI,IAAI,uBAAuB,CACjC,aAED,KAAC,YAAY,IAAC,SAAS,EAAC,cAAc,GAAG,EACxC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,yCAAwB,IAC/C,GACM,EACjB,KAAC,cAAc,IAAC,SAAS,EAAC,YAAY,YACpC,KAAC,QAAQ,IACP,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,IAAI,EAClB,YAAY,QACZ,MAAM,EAAE,IAAI,GACZ,GACa,IACT,CACX,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { CalendarIcon } from 'lucide-react';
|
|
3
|
+
import { format } from 'date-fns';
|
|
4
|
+
import { enGB } from 'date-fns/locale';
|
|
5
|
+
import { cn } from '@/lib/utils';
|
|
6
|
+
import { Button } from '@/components/ui/button';
|
|
7
|
+
import { Calendar } from '@/components/ui/calendar';
|
|
8
|
+
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';
|
|
9
|
+
export const DatePickerWithRange = ({ className, date, setDate, ...props }) => {
|
|
10
|
+
return (_jsx("div", { className: cn('grid gap-2', className), ...props, children: _jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { id: 'date', variant: 'outline', className: cn('w-[300px] justify-start text-left font-normal', !date && 'text-muted-foreground'), children: [_jsx(CalendarIcon, { className: 'mr-2 h-4 w-4' }), date?.from ? (date.to ? (_jsxs(_Fragment, { children: [format(date.from, 'LLL dd, y'), " - ", format(date.to, 'LLL dd, y')] })) : (format(date.from, 'LLL dd, y'))) : (_jsx("span", { children: "Pick a date" }))] }) }), _jsx(PopoverContent, { className: 'w-auto p-0', align: 'start', children: _jsx(Calendar, { initialFocus: true, mode: 'range', defaultMonth: date?.from, selected: date, onSelect: setDate, numberOfMonths: 2, locale: enGB }) })] }) }));
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=DateRangePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateRangePicker.js","sourceRoot":"","sources":["../../src/components/DateRangePicker.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAOjF,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC,EACtE,SAAS,EACT,IAAI,EACJ,OAAO,EACP,GAAG,KAAK,EACT,EAAE,EAAE;IACH,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,KAAM,KAAK,YACpD,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,OAAO,kBACrB,MAAC,MAAM,IACL,EAAE,EAAC,MAAM,EACT,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,EAAE,CACX,+CAA+C,EAC/C,CAAC,IAAI,IAAI,uBAAuB,CACjC,aAED,KAAC,YAAY,IAAC,SAAS,EAAC,cAAc,GAAG,EACxC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CACZ,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CACR,8BACG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,SAAK,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,IAC/D,CACJ,CAAC,CAAC,CAAC,CACF,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAC/B,CACF,CAAC,CAAC,CAAC,CACF,yCAAwB,CACzB,IACM,GACM,EACjB,KAAC,cAAc,IAAC,SAAS,EAAC,YAAY,EAAC,KAAK,EAAC,OAAO,YAClD,KAAC,QAAQ,IACP,YAAY,QACZ,IAAI,EAAC,OAAO,EACZ,YAAY,EAAE,IAAI,EAAE,IAAI,EACxB,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAE,OAAO,EACjB,cAAc,EAAE,CAAC,EACjB,MAAM,EAAE,IAAI,GACZ,GACa,IACT,GACN,CACP,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from '@/components/ui/alert-dialog';
|
|
3
|
+
import { AlertTriangle } from 'lucide-react';
|
|
4
|
+
export const DeleteConfirmation = ({ isOpen, setOpen, deleteMessage, customWarning, onClick, }) => {
|
|
5
|
+
const handleClick = (value) => {
|
|
6
|
+
setOpen(false);
|
|
7
|
+
onClick(value);
|
|
8
|
+
};
|
|
9
|
+
return (_jsx(AlertDialog, { open: isOpen, onOpenChange: setOpen, children: _jsxs(AlertDialogContent, { className: 'sm:max-w-[425px]', children: [_jsxs(AlertDialogHeader, { children: [_jsxs(AlertDialogTitle, { className: 'flex items-center gap-2 text-red-600', children: [_jsx(AlertTriangle, { className: 'h-5 w-5' }), "Confirm Deletion"] }), _jsx(AlertDialogDescription, { className: 'text-base', children: deleteMessage })] }), _jsx("div", { className: 'mt-4 rounded-md bg-muted p-4 text-sm text-muted-foreground', children: customWarning
|
|
10
|
+
? customWarning
|
|
11
|
+
: 'This action cannot be undone and may result in data deletion.' }), _jsxs(AlertDialogFooter, { className: 'mt-6 flex-col-reverse sm:flex-row', children: [_jsx(AlertDialogCancel, { onClick: () => handleClick(false), className: 'mt-3 sm:mt-0', children: "Cancel" }), _jsx(AlertDialogAction, { onClick: () => handleClick(true), className: 'bg-red-600 hover:bg-red-700 text-white', children: "Delete" })] })] }) }));
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=DeleteConfirmationDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeleteConfirmationDialog.js","sourceRoot":"","sources":["../../src/components/DeleteConfirmationDialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAU5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EACjC,MAAM,EACN,OAAO,EACP,aAAa,EACb,aAAa,EACb,OAAO,GACiB,EAAE,EAAE;IAC5B,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,EAAE;QACrC,OAAO,CAAC,KAAK,CAAC,CAAA;QACd,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,OAAO,CACL,KAAC,WAAW,IAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,YAC9C,MAAC,kBAAkB,IAAC,SAAS,EAAC,kBAAkB,aAC9C,MAAC,iBAAiB,eAChB,MAAC,gBAAgB,IAAC,SAAS,EAAC,sCAAsC,aAChE,KAAC,aAAa,IAAC,SAAS,EAAC,SAAS,GAAG,wBAEpB,EACnB,KAAC,sBAAsB,IAAC,SAAS,EAAC,WAAW,YAAE,aAAa,GAA0B,IACpE,EACpB,cAAK,SAAS,EAAC,4DAA4D,YACxE,aAAa;wBACZ,CAAC,CAAC,aAAa;wBACf,CAAC,CAAC,+DAA+D,GAC/D,EACN,MAAC,iBAAiB,IAAC,SAAS,EAAC,mCAAmC,aAC9D,KAAC,iBAAiB,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,EAAC,cAAc,uBAE1D,EACpB,KAAC,iBAAiB,IAChB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAChC,SAAS,EAAC,wCAAwC,uBAGhC,IACF,IACD,GACT,CACf,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Button } from '@/components/ui/button';
|
|
3
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card';
|
|
4
|
+
import { AlertCircle, LogOut, RefreshCw } from 'lucide-react';
|
|
5
|
+
export const ErrorPage = ({ title = 'Error', description = 'An error occurred', message = `We apologize for the inconvenience. This could be due to a network issue or a problem with our servers.
|
|
6
|
+
You can try to refresh or try again later.`, onRetry, onLogout, }) => {
|
|
7
|
+
return (_jsx("div", { className: 'flex items-center justify-center min-h-screen', children: _jsx("div", { className: 'container max-w-sm mx-auto p-4', children: _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: 'flex items-center text-destructive', children: [_jsx(AlertCircle, { className: 'mr-2 h-5 w-5' }), title] }), _jsx(CardDescription, { children: description })] }), _jsxs(CardContent, { children: [_jsx("p", { className: 'text-sm text-muted-foreground mb-4', children: message }), onRetry && (_jsx(_Fragment, { children: _jsxs(Button, { onClick: onRetry, className: 'w-full mb-2', children: [_jsx(RefreshCw, { className: 'mr-2 h-4 w-4' }), " Retry"] }) })), onLogout && (_jsxs(Button, { onClick: onLogout, variant: 'outline', className: 'w-full', children: [_jsx(LogOut, { className: 'mr-2 h-4 w-4' }), " Logout"] }))] })] }) }) }));
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=ErrorPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorPage.js","sourceRoot":"","sources":["../../src/components/ErrorPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChG,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAU7D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACxB,KAAK,GAAG,OAAO,EACf,WAAW,GAAG,mBAAmB,EACjC,OAAO,GAAG;6CACiC,EAC3C,OAAO,EACP,QAAQ,GACO,EAAE,EAAE;IACnB,OAAO,CACL,cAAK,SAAS,EAAC,+CAA+C,YAC5D,cAAK,SAAS,EAAC,gCAAgC,YAC7C,MAAC,IAAI,eACH,MAAC,UAAU,eACT,MAAC,SAAS,IAAC,SAAS,EAAC,oCAAoC,aACvD,KAAC,WAAW,IAAC,SAAS,EAAC,cAAc,GAAG,EACvC,KAAK,IACI,EACZ,KAAC,eAAe,cAAE,WAAW,GAAmB,IACrC,EACb,MAAC,WAAW,eACV,YAAG,SAAS,EAAC,oCAAoC,YAAE,OAAO,GAAK,EAC9D,OAAO,IAAI,CACV,4BACE,MAAC,MAAM,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,aAAa,aAC/C,KAAC,SAAS,IAAC,SAAS,EAAC,cAAc,GAAG,cAC/B,GACR,CACJ,EACA,QAAQ,IAAI,CACX,MAAC,MAAM,IAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,QAAQ,aAC7D,KAAC,MAAM,IAAC,SAAS,EAAC,cAAc,GAAG,eAC5B,CACV,IACW,IACT,GACH,GACF,CACP,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table';
|
|
4
|
+
import { AlignLeft, CheckSquare } from 'lucide-react';
|
|
5
|
+
import { Badge } from './ui/badge';
|
|
6
|
+
export const ExportedApplicationAnswerTable = ({ applicationAnswers, }) => {
|
|
7
|
+
const orderedAnswers = useMemo(() => {
|
|
8
|
+
if (!applicationAnswers)
|
|
9
|
+
return [];
|
|
10
|
+
return applicationAnswers?.sort((a, b) => a.orderNum - b.orderNum);
|
|
11
|
+
}, [applicationAnswers]);
|
|
12
|
+
return (_jsx("div", { className: 'overflow-x-auto', children: _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { className: 'w-1/12', children: "Type" }), _jsx(TableHead, { className: 'w-1/5', children: "Key" }), _jsx(TableHead, { children: "Answer" })] }) }), _jsx(TableBody, { children: orderedAnswers.map((answer, index) => {
|
|
13
|
+
return (_jsxs(TableRow, { className: index % 2 === 0 ? 'bg-muted/50' : '', children: [_jsx(TableCell, { children: answer.type === 'multiselect' ? (_jsx(CheckSquare, { className: 'h-4 w-4 text-muted-foreground' })) : (_jsx(AlignLeft, { className: 'h-4 w-4 text-muted-foreground' })) }), _jsx(TableCell, { className: 'font-medium', children: _jsx("div", { className: 'flex items-center space-x-2', children: _jsx("span", { children: answer.key }) }) }), _jsx(TableCell, { children: Array.isArray(answer.answer) ? (_jsx("div", { children: answer.answer.map((item, idx) => (_jsx(Badge, { className: 'mr-1', children: item }, idx))) })) : (_jsx("p", { className: 'whitespace-pre-wrap break-words', children: answer.answer })) })] }, answer.key));
|
|
14
|
+
}) })] }) }));
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=ExportedApplicationAnswerTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExportedApplicationAnswerTable.js","sourceRoot":"","sources":["../../src/components/ExportedApplicationAnswerTable.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAMlC,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,EAC7C,kBAAkB,GACkB,EAAE,EAAE;IACxC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,IAAI,CAAC,kBAAkB;YAAE,OAAO,EAAE,CAAA;QAClC,OAAO,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;IACpE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAA;IAExB,OAAO,CACL,cAAK,SAAS,EAAC,iBAAiB,YAC9B,MAAC,KAAK,eACJ,KAAC,WAAW,cACV,MAAC,QAAQ,eACP,KAAC,SAAS,IAAC,SAAS,EAAC,QAAQ,qBAAiB,EAC9C,KAAC,SAAS,IAAC,SAAS,EAAC,OAAO,oBAAgB,EAC5C,KAAC,SAAS,yBAAmB,IACpB,GACC,EACd,KAAC,SAAS,cACP,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBACpC,OAAO,CACL,MAAC,QAAQ,IAAkB,SAAS,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aACxE,KAAC,SAAS,cACP,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAC/B,KAAC,WAAW,IAAC,SAAS,EAAC,+BAA+B,GAAG,CAC1D,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IAAC,SAAS,EAAC,+BAA+B,GAAG,CACxD,GACS,EAEZ,KAAC,SAAS,IAAC,SAAS,EAAC,aAAa,YAChC,cAAK,SAAS,EAAC,6BAA6B,YAC1C,yBAAO,MAAM,CAAC,GAAG,GAAQ,GACrB,GACI,EACZ,KAAC,SAAS,cACP,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAC9B,wBACG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,KAAC,KAAK,IAAW,SAAS,EAAC,MAAM,YAC9B,IAAI,IADK,GAAG,CAEP,CACT,CAAC,GACE,CACP,CAAC,CAAC,CAAC,CACF,YAAG,SAAS,EAAC,iCAAiC,YAAE,MAAM,CAAC,MAAM,GAAK,CACnE,GACS,KA1BC,MAAM,CAAC,GAAG,CA2Bd,CACZ,CAAA;oBACH,CAAC,CAAC,GACQ,IACN,GACJ,CACP,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Loader2 } from 'lucide-react';
|
|
3
|
+
export const LoadingPage = () => {
|
|
4
|
+
return (_jsx("div", { className: 'flex h-screen w-screen items-center justify-center', children: _jsx(Loader2, { className: 'h-12 w-12 animate-spin text-primary' }) }));
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=LoadingPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingPage.js","sourceRoot":"","sources":["../../src/components/LoadingPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAG,GAAgB,EAAE;IAC3C,OAAO,CACL,cAAK,SAAS,EAAC,oDAAoD,YACjE,KAAC,OAAO,IAAC,SAAS,EAAC,qCAAqC,GAAG,GACvD,CACP,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManagementPageHeader.js","sourceRoot":"","sources":["../../src/components/ManagementPageHeader.tsx"],"names":[],"mappings":";AAIA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAE,QAAQ,EAA6B,EAAe,EAAE;IAC3F,OAAO,aAAI,SAAS,EAAC,yBAAyB,YAAE,QAAQ,GAAM,CAAA;AAChE,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
|
|
3
|
+
import { Button } from '@/components/ui/button';
|
|
4
|
+
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
|
|
5
|
+
import { AlertTriangle } from 'lucide-react';
|
|
6
|
+
import { useNavigate } from 'react-router-dom';
|
|
7
|
+
export const MissingConfig = ({ elements }) => {
|
|
8
|
+
const navigate = useNavigate();
|
|
9
|
+
return (_jsx(_Fragment, { children: elements.length > 0 && (_jsxs(Card, { className: 'mb-6 border-l-4 border-l-yellow-400', children: [_jsx(CardHeader, { children: _jsxs(CardTitle, { className: 'flex items-center', children: [_jsx(AlertTriangle, { className: 'mr-2 text-yellow-500' }), "Missing Configurations"] }) }), _jsx(CardContent, { children: _jsx("div", { className: 'space-y-2', children: elements.map((config) => (_jsxs(Alert, { className: 'flex items-start', children: [_jsx("div", { className: 'flex-grow', children: _jsxs("div", { className: 'flex items-center', children: [_jsx(config.icon, { className: 'h-4 w-4 text-yellow-500 mr-2 mt-1' }), _jsxs("div", { children: [_jsxs(AlertTitle, { className: 'mb-1', children: ["Missing: ", config.title] }), _jsx(AlertDescription, { children: config.description ||
|
|
10
|
+
`Please configure the ${config.title.toLowerCase()} to ensure proper functionality.` })] })] }) }), config.hide && (_jsx(Button, { variant: 'outline', size: 'sm', onClick: config.hide, className: 'ml-4 mt-1 whitespace-nowrap', children: "Hide Warning" })), _jsx(Button, { variant: 'outline', size: 'sm', onClick: () => navigate(config.link), className: 'ml-4 mt-1 whitespace-nowrap', children: "Configure" })] }, config.title))) }) })] })) }));
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=MissingConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MissingConfig.js","sourceRoot":"","sources":["../../src/components/MissingConfig.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAc9C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAE,QAAQ,EAAsB,EAAe,EAAE;IAC7E,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,OAAO,CACL,4BACG,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,MAAC,IAAI,IAAC,SAAS,EAAC,qCAAqC,aACnD,KAAC,UAAU,cACT,MAAC,SAAS,IAAC,SAAS,EAAC,mBAAmB,aACtC,KAAC,aAAa,IAAC,SAAS,EAAC,sBAAsB,GAAG,8BAExC,GACD,EACb,KAAC,WAAW,cACV,cAAK,SAAS,EAAC,WAAW,YACvB,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACxB,MAAC,KAAK,IAAoB,SAAS,EAAC,kBAAkB,aACpD,cAAK,SAAS,EAAC,WAAW,YACxB,eAAK,SAAS,EAAC,mBAAmB,aAChC,KAAC,MAAM,CAAC,IAAI,IAAC,SAAS,EAAC,mCAAmC,GAAG,EAC7D,0BACE,MAAC,UAAU,IAAC,SAAS,EAAC,MAAM,0BAAW,MAAM,CAAC,KAAK,IAAc,EACjE,KAAC,gBAAgB,cACd,MAAM,CAAC,WAAW;4DACjB,wBAAwB,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,kCAAkC,GACrE,IACf,IACF,GACF,EACL,MAAM,CAAC,IAAI,IAAI,CACd,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,CAAC,IAAI,EACpB,SAAS,EAAC,6BAA6B,6BAGhC,CACV,EACD,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EACpC,SAAS,EAAC,6BAA6B,0BAGhC,KA9BC,MAAM,CAAC,KAAK,CA+BhB,CACT,CAAC,GACE,GACM,IACT,CACR,GACA,CACJ,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
// src/components/multi-select.tsx
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { CheckIcon, XCircle, ChevronDown, XIcon, WandSparkles } from 'lucide-react';
|
|
6
|
+
import { cn } from '@/lib/utils';
|
|
7
|
+
import { Separator } from '@/components/ui/separator';
|
|
8
|
+
import { Button } from '@/components/ui/button';
|
|
9
|
+
import { Badge } from '@/components/ui/badge';
|
|
10
|
+
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';
|
|
11
|
+
import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, } from '@/components/ui/command';
|
|
12
|
+
/**
|
|
13
|
+
* Variants for the multi-select component to handle different styles.
|
|
14
|
+
* Uses class-variance-authority (cva) to define different styles based on "variant" prop.
|
|
15
|
+
*/
|
|
16
|
+
const multiSelectVariants = cva('m-1 transition ease-in-out delay-150 hover:-translate-y-1 hover:scale-110 duration-300', {
|
|
17
|
+
variants: {
|
|
18
|
+
variant: {
|
|
19
|
+
default: 'border-foreground/10 text-foreground bg-card hover:bg-card/80',
|
|
20
|
+
secondary: 'border-foreground/10 bg-secondary text-secondary-foreground hover:bg-secondary/80',
|
|
21
|
+
destructive: 'border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80',
|
|
22
|
+
inverted: 'inverted',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
defaultVariants: {
|
|
26
|
+
variant: 'default',
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
export const MultiSelect = React.forwardRef(({ options, onValueChange, variant, defaultValue = [], placeholder = 'Select options', animation = 0, maxCount = 3, modalPopover = false, asChild = false, className, ...props }, ref) => {
|
|
30
|
+
const [selectedValues, setSelectedValues] = React.useState(defaultValue);
|
|
31
|
+
const [isPopoverOpen, setIsPopoverOpen] = React.useState(false);
|
|
32
|
+
const [isAnimating, setIsAnimating] = React.useState(false);
|
|
33
|
+
const handleInputKeyDown = (event) => {
|
|
34
|
+
if (event.key === 'Enter') {
|
|
35
|
+
setIsPopoverOpen(true);
|
|
36
|
+
}
|
|
37
|
+
else if (event.key === 'Backspace' && !event.currentTarget.value) {
|
|
38
|
+
const newSelectedValues = [...selectedValues];
|
|
39
|
+
newSelectedValues.pop();
|
|
40
|
+
setSelectedValues(newSelectedValues);
|
|
41
|
+
onValueChange(newSelectedValues);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const toggleOption = (option) => {
|
|
45
|
+
const newSelectedValues = selectedValues.includes(option)
|
|
46
|
+
? selectedValues.filter((value) => value !== option)
|
|
47
|
+
: [...selectedValues, option];
|
|
48
|
+
setSelectedValues(newSelectedValues);
|
|
49
|
+
onValueChange(newSelectedValues);
|
|
50
|
+
};
|
|
51
|
+
const handleClear = () => {
|
|
52
|
+
setSelectedValues([]);
|
|
53
|
+
onValueChange([]);
|
|
54
|
+
};
|
|
55
|
+
const handleTogglePopover = () => {
|
|
56
|
+
setIsPopoverOpen((prev) => !prev);
|
|
57
|
+
};
|
|
58
|
+
const clearExtraOptions = () => {
|
|
59
|
+
const newSelectedValues = selectedValues.slice(0, maxCount);
|
|
60
|
+
setSelectedValues(newSelectedValues);
|
|
61
|
+
onValueChange(newSelectedValues);
|
|
62
|
+
};
|
|
63
|
+
const toggleAll = () => {
|
|
64
|
+
if (selectedValues.length === options.length) {
|
|
65
|
+
handleClear();
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const allValues = options.map((option) => option.value);
|
|
69
|
+
setSelectedValues(allValues);
|
|
70
|
+
onValueChange(allValues);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
return (_jsxs(Popover, { open: isPopoverOpen, onOpenChange: setIsPopoverOpen, modal: modalPopover, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { ref: ref, ...props, onClick: handleTogglePopover, className: cn('flex w-full p-1 rounded-md border min-h-10 h-auto items-center justify-between bg-inherit hover:bg-inherit [&_svg]:pointer-events-auto', className), children: selectedValues.length > 0 ? (_jsxs("div", { className: 'flex justify-between items-center w-full', children: [_jsxs("div", { className: 'flex flex-wrap items-center', children: [selectedValues.slice(0, maxCount).map((value) => {
|
|
74
|
+
const option = options.find((o) => o.value === value);
|
|
75
|
+
const IconComponent = option?.icon;
|
|
76
|
+
return (_jsxs(Badge, { className: cn(isAnimating ? 'animate-bounce' : '', multiSelectVariants({ variant })), style: { animationDuration: `${animation}s` }, children: [IconComponent && _jsx(IconComponent, { className: 'h-4 w-4 mr-2' }), option?.label, _jsx(XCircle, { className: 'ml-2 h-4 w-4 cursor-pointer', onClick: (event) => {
|
|
77
|
+
event.stopPropagation();
|
|
78
|
+
toggleOption(value);
|
|
79
|
+
} })] }, value));
|
|
80
|
+
}), selectedValues.length > maxCount && (_jsxs(Badge, { className: cn('bg-transparent text-foreground border-foreground/1 hover:bg-transparent', isAnimating ? 'animate-bounce' : '', multiSelectVariants({ variant })), style: { animationDuration: `${animation}s` }, children: [`+ ${selectedValues.length - maxCount} more`, _jsx(XCircle, { className: 'ml-2 h-4 w-4 cursor-pointer', onClick: (event) => {
|
|
81
|
+
event.stopPropagation();
|
|
82
|
+
clearExtraOptions();
|
|
83
|
+
} })] }))] }), _jsxs("div", { className: 'flex items-center justify-between', children: [_jsx(XIcon, { className: 'h-4 mx-2 cursor-pointer text-muted-foreground', onClick: (event) => {
|
|
84
|
+
event.stopPropagation();
|
|
85
|
+
handleClear();
|
|
86
|
+
} }), _jsx(Separator, { orientation: 'vertical', className: 'flex min-h-6 h-full' }), _jsx(ChevronDown, { className: 'h-4 mx-2 cursor-pointer text-muted-foreground' })] })] })) : (_jsxs("div", { className: 'flex items-center justify-between w-full mx-auto', children: [_jsx("span", { className: 'text-sm text-muted-foreground mx-3', children: placeholder }), _jsx(ChevronDown, { className: 'h-4 cursor-pointer text-muted-foreground mx-2' })] })) }) }), _jsx(PopoverContent, { className: 'w-auto p-0', align: 'start', onEscapeKeyDown: () => setIsPopoverOpen(false), children: _jsxs(Command, { children: [_jsx(CommandInput, { placeholder: 'Search...', onKeyDown: handleInputKeyDown }), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: "No results found." }), _jsxs(CommandGroup, { children: [_jsxs(CommandItem, { onSelect: toggleAll, className: 'cursor-pointer', children: [_jsx("div", { className: cn('mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary', selectedValues.length === options.length
|
|
87
|
+
? 'bg-primary text-primary-foreground'
|
|
88
|
+
: 'opacity-50 [&_svg]:invisible'), children: _jsx(CheckIcon, { className: 'h-4 w-4' }) }), _jsx("span", { children: "(Select All)" })] }, 'all'), options.map((option) => {
|
|
89
|
+
const isSelected = selectedValues.includes(option.value);
|
|
90
|
+
return (_jsxs(CommandItem, { onSelect: () => toggleOption(option.value), className: 'cursor-pointer', children: [_jsx("div", { className: cn('mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary', isSelected
|
|
91
|
+
? 'bg-primary text-primary-foreground'
|
|
92
|
+
: 'opacity-50 [&_svg]:invisible'), children: _jsx(CheckIcon, { className: 'h-4 w-4' }) }), option.icon && (_jsx(option.icon, { className: 'mr-2 h-4 w-4 text-muted-foreground' })), _jsx("span", { children: option.label })] }, option.value));
|
|
93
|
+
})] }), _jsx(CommandSeparator, {}), _jsx(CommandGroup, { children: _jsxs("div", { className: 'flex items-center justify-between', children: [selectedValues.length > 0 && (_jsxs(_Fragment, { children: [_jsx(CommandItem, { onSelect: handleClear, className: 'flex-1 justify-center cursor-pointer', children: "Clear" }), _jsx(Separator, { orientation: 'vertical', className: 'flex min-h-6 h-full' })] })), _jsx(CommandItem, { onSelect: () => setIsPopoverOpen(false), className: 'flex-1 justify-center cursor-pointer max-w-full', children: "Close" })] }) })] })] }) }), animation > 0 && selectedValues.length > 0 && (_jsx(WandSparkles, { className: cn('cursor-pointer my-2 text-foreground bg-background w-3 h-3', isAnimating ? '' : 'text-muted-foreground'), onClick: () => setIsAnimating(!isAnimating) }))] }));
|
|
94
|
+
});
|
|
95
|
+
MultiSelect.displayName = 'MultiSelect';
|
|
96
|
+
//# sourceMappingURL=MultiSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiSelect.js","sourceRoot":"","sources":["../../src/components/MultiSelect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AlertCircle } from 'lucide-react';
|
|
3
|
+
import { Button } from './ui/button';
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
import { useSidebar } from './ui/sidebar';
|
|
6
|
+
export const SaveChangesAlert = ({ message, handleRevert, saveChanges, onClose, }) => {
|
|
7
|
+
const [isSaving, setIsSaving] = useState(false);
|
|
8
|
+
const [error, setError] = useState(null);
|
|
9
|
+
const { state } = useSidebar();
|
|
10
|
+
const handleSave = async () => {
|
|
11
|
+
setIsSaving(true);
|
|
12
|
+
setError(null);
|
|
13
|
+
try {
|
|
14
|
+
await saveChanges();
|
|
15
|
+
onClose?.();
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
setError(err instanceof Error ? err.message : 'An error occurred while saving');
|
|
19
|
+
}
|
|
20
|
+
finally {
|
|
21
|
+
setIsSaving(false);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
return (_jsxs("div", { className: 'fixed bottom-0 right-0 bg-background border-t border-border p-4 z-50 transition-all duration-300 ease-in-out', style: {
|
|
25
|
+
width: state === 'expanded'
|
|
26
|
+
? 'calc(100% - var(--sidebar-width))'
|
|
27
|
+
: 'calc(100% - var(--sidebar-width-icon))',
|
|
28
|
+
left: state === 'expanded' ? 'var(--sidebar-width)' : 'var(--sidebar-width-icon)',
|
|
29
|
+
}, children: [_jsxs("div", { className: 'max-w-7xl mx-auto flex items-center justify-between', children: [_jsxs("div", { className: 'flex items-center space-x-2', children: [_jsx(AlertCircle, { className: 'h-4 w-4 text-yellow-500' }), _jsx("p", { className: 'text-sm font-medium', children: message })] }), _jsxs("div", { className: 'flex space-x-2', children: [_jsx(Button, { variant: 'outline', size: 'sm', onClick: handleRevert, disabled: isSaving, "aria-label": 'Revert changes', children: "Revert" }), _jsx(Button, { variant: 'default', size: 'sm', onClick: handleSave, disabled: isSaving, "aria-label": 'Save changes', children: isSaving ? 'Saving...' : 'Save' })] })] }), error && (_jsx("p", { className: 'mt-2 text-sm text-destructive text-center', role: 'alert', children: error }))] }));
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=SaveChangesAlert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SaveChangesAlert.js","sourceRoot":"","sources":["../../src/components/SaveChangesAlert.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AASzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,OAAO,EACP,YAAY,EACZ,WAAW,EACX,OAAO,GACe,EAAe,EAAE;IACvC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACvD,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CAAA;IAE9B,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,WAAW,CAAC,IAAI,CAAC,CAAA;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,IAAI,CAAC;YACH,MAAM,WAAW,EAAE,CAAA;YACnB,OAAO,EAAE,EAAE,CAAA;QACb,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAA;QACjF,CAAC;gBAAS,CAAC;YACT,WAAW,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,eACE,SAAS,EAAC,8GAA8G,EACxH,KAAK,EAAE;YACL,KAAK,EACH,KAAK,KAAK,UAAU;gBAClB,CAAC,CAAC,mCAAmC;gBACrC,CAAC,CAAC,wCAAwC;YAC9C,IAAI,EAAE,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,2BAA2B;SAClF,aAED,eAAK,SAAS,EAAC,qDAAqD,aAClE,eAAK,SAAS,EAAC,6BAA6B,aAC1C,KAAC,WAAW,IAAC,SAAS,EAAC,yBAAyB,GAAG,EACnD,YAAG,SAAS,EAAC,qBAAqB,YAAE,OAAO,GAAK,IAC5C,EACN,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,QAAQ,gBACP,gBAAgB,uBAGpB,EACT,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,QAAQ,gBACP,cAAc,YAExB,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,GACzB,IACL,IACF,EACL,KAAK,IAAI,CACR,YAAG,SAAS,EAAC,2CAA2C,EAAC,IAAI,EAAC,OAAO,YAClE,KAAK,GACJ,CACL,IACG,CACP,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { getGenderString, getStudyDegreeString, } from '@tumaet/prompt-shared-state';
|
|
3
|
+
import { Mail, Flag, Book, GraduationCap, Calendar, Hash, Users, KeyRound } from 'lucide-react';
|
|
4
|
+
import { Card, CardContent, CardHeader } from '@/components/ui/card';
|
|
5
|
+
import { Avatar, AvatarFallback } from '@/components/ui/avatar';
|
|
6
|
+
import { getCountryName } from '@/lib/getCountries';
|
|
7
|
+
import translations from '@/lib/translations.json';
|
|
8
|
+
import { AvatarImage } from '@radix-ui/react-avatar';
|
|
9
|
+
import { getGravatarUrl } from '@/lib/getGravatarUrl';
|
|
10
|
+
import { getStatusColor } from '@/lib/getStatusColor';
|
|
11
|
+
export const StudentProfile = ({ student, status }) => {
|
|
12
|
+
return (_jsxs(Card, { className: 'relative overflow-hidden', children: [_jsx("div", { className: `h-16 ${getStatusColor(status)}` }), _jsx("div", { className: 'mb-4', children: _jsxs(Avatar, { className: 'absolute w-24 h-24 border-4 border-background rounded-full transform left-3 -translate-y-1/2', children: [_jsx(AvatarImage, { src: getGravatarUrl(student.email), alt: student.lastName }), _jsxs(AvatarFallback, { className: 'rounded-lg font-bold text-lg', children: [student.firstName[0], student.lastName[0]] })] }) }), _jsx(CardHeader, { children: _jsx("div", { className: 'flex flex-col sm:flex-row items-center', children: _jsxs("div", { className: 'flex-1 text-center sm:text-left', children: [_jsx("div", { className: 'flex flex-col items-center sm:items-start pt-6', children: _jsxs("h1", { className: 'text-2xl font-bold', children: [student.firstName, " ", student.lastName] }) }), _jsxs("div", { className: 'mt-2 grid grid-cols-1 sm:grid-cols-2 gap-2 text-sm text-muted-foreground', children: [_jsxs("div", { className: 'space-y-1', children: [_jsxs("p", { className: 'flex items-center justify-center sm:justify-start', children: [_jsx(Mail, { className: 'w-4 h-4 mr-2' }), _jsx("span", { className: 'truncate', children: student.email })] }), student.nationality && (_jsxs("p", { className: 'flex items-center justify-center sm:justify-start', children: [_jsx(Flag, { className: 'w-4 h-4 mr-2' }), getCountryName(student.nationality)] })), student.gender && (_jsxs("p", { className: 'flex items-center justify-center sm:justify-start', children: [_jsx(Users, { className: 'w-4 h-4 mr-2' }), getGenderString(student.gender)] }))] }), _jsxs("div", { className: 'space-y-1', children: [student.universityLogin && (_jsxs("p", { className: 'flex items-center justify-center sm:justify-start', children: [_jsx(KeyRound, { className: 'w-4 h-4 mr-2' }), _jsxs("strong", { className: 'mr-1', children: [translations.university['login-name'], ":"] }), student.universityLogin] })), student.matriculationNumber && (_jsxs("p", { className: 'flex items-center justify-center sm:justify-start', children: [_jsx(Hash, { className: 'w-4 h-4 mr-2' }), _jsx("strong", { className: 'mr-1', children: "Matriculation:" }), student.matriculationNumber] }))] })] })] }) }) }), _jsx(CardContent, { children: _jsxs("div", { className: 'grid grid-cols-1 sm:grid-cols-3 gap-4 text-sm', children: [_jsxs("div", { className: 'flex items-center', children: [_jsx(Book, { className: 'w-5 h-5 mr-2 text-primary' }), _jsx("strong", { className: 'mr-2', children: "Program:" }), _jsx("span", { className: 'text-muted-foreground', children: student.studyProgram || 'N/A' })] }), _jsxs("div", { className: 'flex items-center', children: [_jsx(GraduationCap, { className: 'w-5 h-5 mr-2 text-primary' }), _jsx("strong", { className: 'mr-2', children: "Degree:" }), _jsx("span", { className: 'text-muted-foreground', children: getStudyDegreeString(student.studyDegree) || 'N/A' })] }), _jsxs("div", { className: 'flex items-center', children: [_jsx(Calendar, { className: 'w-5 h-5 mr-2 text-primary' }), _jsx("strong", { className: 'mr-2', children: "Semester:" }), _jsx("span", { className: 'text-muted-foreground', children: student.currentSemester || 'N/A' })] })] }) })] }));
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=StudentProfile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StudentProfile.js","sourceRoot":"","sources":["../../src/components/StudentProfile.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Moon, Sun, Monitor } from 'lucide-react';
|
|
3
|
+
import { Button } from '@/components/ui/button';
|
|
4
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu';
|
|
5
|
+
import { useDarkMode } from '@/contexts/DarkModeProvider';
|
|
6
|
+
export function ThemeToggle() {
|
|
7
|
+
const { theme, setTheme } = useDarkMode();
|
|
8
|
+
return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(Button, { variant: 'outline', size: 'icon', className: 'w-[120px]', children: [theme === 'light' && _jsx(Sun, { className: 'h-4 w-4' }), theme === 'dark' && _jsx(Moon, { className: 'h-4 w-4' }), theme === 'system' && _jsx(Monitor, { className: 'h-4 w-4' }), _jsx("span", { className: 'ml-2', children: theme?.charAt(0).toUpperCase() + theme?.slice(1) })] }) }), _jsxs(DropdownMenuContent, { align: 'end', children: [_jsxs(DropdownMenuItem, { onClick: () => setTheme('light'), children: [_jsx(Sun, { className: 'mr-2 h-4 w-4' }), _jsx("span", { children: "Light" })] }), _jsxs(DropdownMenuItem, { onClick: () => setTheme('dark'), children: [_jsx(Moon, { className: 'mr-2 h-4 w-4' }), _jsx("span", { children: "Dark" })] }), _jsxs(DropdownMenuItem, { onClick: () => setTheme('system'), children: [_jsx(Monitor, { className: 'mr-2 h-4 w-4' }), _jsx("span", { children: "System" })] })] })] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ThemeToggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeToggle.js","sourceRoot":"","sources":["../../src/components/ThemeToggle.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAA;IAEzC,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,aACxD,KAAK,KAAK,OAAO,IAAI,KAAC,GAAG,IAAC,SAAS,EAAC,SAAS,GAAG,EAChD,KAAK,KAAK,MAAM,IAAI,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,EAChD,KAAK,KAAK,QAAQ,IAAI,KAAC,OAAO,IAAC,SAAS,EAAC,SAAS,GAAG,EACtD,eAAM,SAAS,EAAC,MAAM,YAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAQ,IACzE,GACW,EACtB,MAAC,mBAAmB,IAAC,KAAK,EAAC,KAAK,aAC9B,MAAC,gBAAgB,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,aAChD,KAAC,GAAG,IAAC,SAAS,EAAC,cAAc,GAAG,EAChC,mCAAkB,IACD,EACnB,MAAC,gBAAgB,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,aAC/C,KAAC,IAAI,IAAC,SAAS,EAAC,cAAc,GAAG,EACjC,kCAAiB,IACA,EACnB,MAAC,gBAAgB,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,aACjD,KAAC,OAAO,IAAC,SAAS,EAAC,cAAc,GAAG,EACpC,oCAAmB,IACF,IACC,IACT,CAChB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
|
|
3
|
+
import { Button } from '@/components/ui/button';
|
|
4
|
+
import { Card, CardContent, CardFooter, CardHeader, CardTitle } from '@/components/ui/card';
|
|
5
|
+
import { AlertTriangle, ArrowLeft, LogOut } from 'lucide-react';
|
|
6
|
+
import { useNavigate } from 'react-router-dom';
|
|
7
|
+
export default function UnauthorizedPage({ onLogout, backUrl, customMessage, }) {
|
|
8
|
+
const navigate = useNavigate();
|
|
9
|
+
return (_jsx("div", { className: 'fixed inset-0 bg-background/80 backdrop-blur-sm z-50 flex items-center justify-center p-4', children: _jsxs(Card, { className: 'max-w-md w-full shadow-lg', children: [_jsx(CardHeader, { children: _jsx(CardTitle, { className: 'text-2xl font-bold text-center text-primary', children: "Access Denied" }) }), _jsx(CardContent, { className: 'space-y-4', children: _jsxs(Alert, { variant: 'destructive', className: 'border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive', children: [_jsx(AlertTriangle, { className: 'h-4 w-4' }), _jsx(AlertTitle, { children: "Unauthorized" }), _jsx(AlertDescription, { children: customMessage ? customMessage : 'You do not have permission to access this page.' })] }) }), _jsxs(CardFooter, { className: 'flex justify-center space-x-4', children: [backUrl && (_jsxs(Button, { variant: 'outline', onClick: () => {
|
|
10
|
+
navigate(backUrl);
|
|
11
|
+
}, className: 'w-full sm:w-auto', children: [_jsx(ArrowLeft, { className: 'mr-2 h-4 w-4' }), "Go Back"] })), onLogout && (_jsxs(Button, { variant: 'destructive', onClick: () => onLogout(), className: 'w-full sm:w-auto', children: [_jsx(LogOut, { className: 'mr-2 h-4 w-4' }), "Logout"] }))] })] }) }));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=UnauthorizedPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnauthorizedPage.js","sourceRoot":"","sources":["../../src/components/UnauthorizedPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC3F,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAQ9C,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,QAAQ,EACR,OAAO,EACP,aAAa,GACS;IACtB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,OAAO,CACL,cAAK,SAAS,EAAC,2FAA2F,YACxG,MAAC,IAAI,IAAC,SAAS,EAAC,2BAA2B,aACzC,KAAC,UAAU,cACT,KAAC,SAAS,IAAC,SAAS,EAAC,6CAA6C,8BAEtD,GACD,EACb,KAAC,WAAW,IAAC,SAAS,EAAC,WAAW,YAChC,MAAC,KAAK,IACJ,OAAO,EAAC,aAAa,EACrB,SAAS,EAAC,yFAAyF,aAEnG,KAAC,aAAa,IAAC,SAAS,EAAC,SAAS,GAAG,EACrC,KAAC,UAAU,+BAA0B,EACrC,KAAC,gBAAgB,cACd,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iDAAiD,GACjE,IACb,GACI,EACd,MAAC,UAAU,IAAC,SAAS,EAAC,+BAA+B,aAClD,OAAO,IAAI,CACV,MAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,GAAG,EAAE;gCACZ,QAAQ,CAAC,OAAO,CAAC,CAAA;4BACnB,CAAC,EACD,SAAS,EAAC,kBAAkB,aAE5B,KAAC,SAAS,IAAC,SAAS,EAAC,cAAc,GAAG,eAE/B,CACV,EACA,QAAQ,IAAI,CACX,MAAC,MAAM,IAAC,OAAO,EAAC,aAAa,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAC,kBAAkB,aACnF,KAAC,MAAM,IAAC,SAAS,EAAC,cAAc,GAAG,cAE5B,CACV,IACU,IACR,GACH,CACP,CAAA;AACH,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -1,2 +1,11 @@
|
|
|
1
1
|
export * from './ui';
|
|
2
|
+
export * from './minimal-tiptap';
|
|
3
|
+
export * from './DatePicker';
|
|
4
|
+
export * from './DeleteConfirmationDialog';
|
|
5
|
+
export * from './ErrorPage';
|
|
6
|
+
export * from './LoadingPage';
|
|
7
|
+
export * from './ManagementPageHeader';
|
|
8
|
+
export * from './SaveChangesAlert';
|
|
9
|
+
export * from './UnauthorizedPage';
|
|
10
|
+
export * from './MultiSelect';
|
|
2
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAA;AACpB,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-shadow */
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { BubbleMenu } from '@tiptap/react';
|
|
5
|
+
import { LinkEditBlock } from '../link/link-edit-block';
|
|
6
|
+
import { LinkPopoverBlock } from '../link/link-popover-block';
|
|
7
|
+
export const LinkBubbleMenu = ({ editor }) => {
|
|
8
|
+
const [showEdit, setShowEdit] = React.useState(false);
|
|
9
|
+
const [linkAttrs, setLinkAttrs] = React.useState({ href: '', target: '' });
|
|
10
|
+
const [selectedText, setSelectedText] = React.useState('');
|
|
11
|
+
const updateLinkState = React.useCallback(() => {
|
|
12
|
+
const { from, to } = editor.state.selection;
|
|
13
|
+
const { href, target } = editor.getAttributes('link');
|
|
14
|
+
const text = editor.state.doc.textBetween(from, to, ' ');
|
|
15
|
+
setLinkAttrs({ href, target });
|
|
16
|
+
setSelectedText(text);
|
|
17
|
+
}, [editor]);
|
|
18
|
+
const shouldShow = React.useCallback(({ editor, from, to }) => {
|
|
19
|
+
if (from === to) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
const { href } = editor.getAttributes('link');
|
|
23
|
+
if (href) {
|
|
24
|
+
updateLinkState();
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}, [updateLinkState]);
|
|
29
|
+
const handleEdit = React.useCallback(() => {
|
|
30
|
+
setShowEdit(true);
|
|
31
|
+
}, []);
|
|
32
|
+
const onSetLink = React.useCallback((url, text, openInNewTab) => {
|
|
33
|
+
editor
|
|
34
|
+
.chain()
|
|
35
|
+
.focus()
|
|
36
|
+
.extendMarkRange('link')
|
|
37
|
+
.insertContent({
|
|
38
|
+
type: 'text',
|
|
39
|
+
text: text || url,
|
|
40
|
+
marks: [
|
|
41
|
+
{
|
|
42
|
+
type: 'link',
|
|
43
|
+
attrs: {
|
|
44
|
+
href: url,
|
|
45
|
+
target: openInNewTab ? '_blank' : '',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
})
|
|
50
|
+
.setLink({ href: url, target: openInNewTab ? '_blank' : '' })
|
|
51
|
+
.run();
|
|
52
|
+
setShowEdit(false);
|
|
53
|
+
updateLinkState();
|
|
54
|
+
}, [editor, updateLinkState]);
|
|
55
|
+
const onUnsetLink = React.useCallback(() => {
|
|
56
|
+
editor.chain().focus().extendMarkRange('link').unsetLink().run();
|
|
57
|
+
setShowEdit(false);
|
|
58
|
+
updateLinkState();
|
|
59
|
+
}, [editor, updateLinkState]);
|
|
60
|
+
return (_jsx(BubbleMenu, { editor: editor, shouldShow: shouldShow, tippyOptions: {
|
|
61
|
+
placement: 'bottom-start',
|
|
62
|
+
onHidden: () => setShowEdit(false),
|
|
63
|
+
}, children: showEdit ? (_jsx(LinkEditBlock, { defaultUrl: linkAttrs.href, defaultText: selectedText, defaultIsNewTab: linkAttrs.target === '_blank', onSave: onSetLink, className: 'w-full min-w-80 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none' })) : (_jsx(LinkPopoverBlock, { onClear: onUnsetLink, url: linkAttrs.href, onEdit: handleEdit })) }));
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=link-bubble-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-bubble-menu.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Button } from '@/components/ui/button';
|
|
4
|
+
import { Label } from '@/components/ui/label';
|
|
5
|
+
import { Input } from '@/components/ui/input';
|
|
6
|
+
export const ImageEditBlock = ({ editor, close }) => {
|
|
7
|
+
const fileInputRef = React.useRef(null);
|
|
8
|
+
const [link, setLink] = React.useState('');
|
|
9
|
+
const handleClick = React.useCallback(() => {
|
|
10
|
+
fileInputRef.current?.click();
|
|
11
|
+
}, []);
|
|
12
|
+
const handleFile = React.useCallback(async (e) => {
|
|
13
|
+
const files = e.target.files;
|
|
14
|
+
if (!files?.length)
|
|
15
|
+
return;
|
|
16
|
+
const insertImages = async () => {
|
|
17
|
+
const contentBucket = []; // custom fix for typescript
|
|
18
|
+
const filesArray = Array.from(files);
|
|
19
|
+
for (const file of filesArray) {
|
|
20
|
+
contentBucket.push({ src: file });
|
|
21
|
+
}
|
|
22
|
+
editor.commands.setImages(contentBucket);
|
|
23
|
+
};
|
|
24
|
+
await insertImages();
|
|
25
|
+
close();
|
|
26
|
+
}, [editor, close]);
|
|
27
|
+
const handleSubmit = React.useCallback((e) => {
|
|
28
|
+
e.preventDefault();
|
|
29
|
+
e.stopPropagation();
|
|
30
|
+
if (link) {
|
|
31
|
+
editor.commands.setImages([{ src: link }]);
|
|
32
|
+
close();
|
|
33
|
+
}
|
|
34
|
+
}, [editor, link, close]);
|
|
35
|
+
return (_jsxs("form", { onSubmit: handleSubmit, className: 'space-y-6', children: [_jsxs("div", { className: 'space-y-1', children: [_jsx(Label, { htmlFor: 'image-link', children: "Attach an image link" }), _jsxs("div", { className: 'flex', children: [_jsx(Input, { id: 'image-link', type: 'url', required: true, placeholder: 'https://example.com', value: link, className: 'grow', onChange: (e) => setLink(e.target.value) }), _jsx(Button, { type: 'submit', className: 'ml-2', children: "Submit" })] })] }), _jsx(Button, { type: 'button', className: 'w-full', onClick: handleClick, children: "Upload from your computer" }), _jsx("input", { type: 'file', accept: 'image/*', ref: fileInputRef, multiple: true, className: 'hidden', onChange: handleFile })] }));
|
|
36
|
+
};
|
|
37
|
+
export default ImageEditBlock;
|
|
38
|
+
//# sourceMappingURL=image-edit-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-edit-block.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/image/image-edit-block.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { ImageIcon } from 'lucide-react';
|
|
4
|
+
import { ToolbarButton } from '../toolbar-button';
|
|
5
|
+
import { Dialog, DialogContent, DialogHeader, DialogDescription, DialogTitle, DialogTrigger, } from '@/components/ui/dialog';
|
|
6
|
+
import { ImageEditBlock } from './image-edit-block';
|
|
7
|
+
const ImageEditDialog = ({ editor, size, variant }) => {
|
|
8
|
+
const [open, setOpen] = useState(false);
|
|
9
|
+
return (_jsxs(Dialog, { open: open, onOpenChange: setOpen, children: [_jsx(DialogTrigger, { asChild: true, children: _jsx(ToolbarButton, { isActive: editor.isActive('image'), tooltip: 'Image', "aria-label": 'Image', size: size, variant: variant, children: _jsx(ImageIcon, { className: 'size-5' }) }) }), _jsxs(DialogContent, { className: 'sm:max-w-lg', children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Select image" }), _jsx(DialogDescription, { className: 'sr-only', children: "Upload an image from your computer" })] }), _jsx(ImageEditBlock, { editor: editor, close: () => setOpen(false) })] })] }));
|
|
10
|
+
};
|
|
11
|
+
export { ImageEditDialog };
|
|
12
|
+
//# sourceMappingURL=image-edit-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-edit-dialog.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/image/image-edit-dialog.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EACL,MAAM,EACN,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,aAAa,GACd,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAMnD,MAAM,eAAe,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAwB,EAAE,EAAE;IAC1E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEvC,OAAO,CACL,MAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,aACvC,KAAC,aAAa,IAAC,OAAO,kBACpB,KAAC,aAAa,IACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAClC,OAAO,EAAC,OAAO,gBACJ,OAAO,EAClB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,YAEhB,KAAC,SAAS,IAAC,SAAS,EAAC,QAAQ,GAAG,GAClB,GACF,EAChB,MAAC,aAAa,IAAC,SAAS,EAAC,aAAa,aACpC,MAAC,YAAY,eACX,KAAC,WAAW,+BAA2B,EACvC,KAAC,iBAAiB,IAAC,SAAS,EAAC,SAAS,mDAElB,IACP,EACf,KAAC,cAAc,IAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAI,IACjD,IACT,CACV,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Button } from '@/components/ui/button';
|
|
4
|
+
import { Label } from '@/components/ui/label';
|
|
5
|
+
import { Switch } from '@/components/ui/switch';
|
|
6
|
+
import { Input } from '@/components/ui/input';
|
|
7
|
+
import { cn } from '@/lib/utils';
|
|
8
|
+
export const LinkEditBlock = React.forwardRef(({ onSave, defaultIsNewTab, defaultUrl, defaultText, className }, ref) => {
|
|
9
|
+
const formRef = React.useRef(null);
|
|
10
|
+
const [url, setUrl] = React.useState(defaultUrl || '');
|
|
11
|
+
const [text, setText] = React.useState(defaultText || '');
|
|
12
|
+
const [isNewTab, setIsNewTab] = React.useState(defaultIsNewTab || false);
|
|
13
|
+
const handleSave = React.useCallback((e) => {
|
|
14
|
+
e.preventDefault();
|
|
15
|
+
if (formRef.current) {
|
|
16
|
+
const isValid = Array.from(formRef.current.querySelectorAll('input')).every((input) => input.checkValidity());
|
|
17
|
+
if (isValid) {
|
|
18
|
+
onSave(url, text, isNewTab);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
formRef.current.querySelectorAll('input').forEach((input) => {
|
|
22
|
+
if (!input.checkValidity()) {
|
|
23
|
+
input.reportValidity();
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}, [onSave, url, text, isNewTab]);
|
|
29
|
+
React.useImperativeHandle(ref, () => formRef.current);
|
|
30
|
+
return (_jsx("div", { ref: formRef, children: _jsxs("div", { className: cn('space-y-4', className), children: [_jsxs("div", { className: 'space-y-1', children: [_jsx(Label, { children: "URL" }), _jsx(Input, { type: 'url', required: true, placeholder: 'Enter URL', value: url, onChange: (e) => setUrl(e.target.value) })] }), _jsxs("div", { className: 'space-y-1', children: [_jsx(Label, { children: "Display Text (optional)" }), _jsx(Input, { type: 'text', placeholder: 'Enter display text', value: text, onChange: (e) => setText(e.target.value) })] }), _jsxs("div", { className: 'flex items-center space-x-2', children: [_jsx(Label, { children: "Open in New Tab" }), _jsx(Switch, { checked: isNewTab, onCheckedChange: setIsNewTab })] }), _jsx("div", { className: 'flex justify-end space-x-2', children: _jsx(Button, { type: 'button', onClick: handleSave, children: "Save" }) })] }) }));
|
|
31
|
+
});
|
|
32
|
+
LinkEditBlock.displayName = 'LinkEditBlock';
|
|
33
|
+
export default LinkEditBlock;
|
|
34
|
+
//# sourceMappingURL=link-edit-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-edit-block.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/link/link-edit-block.tsx"],"names":[],"mappings":"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"}
|