react-os-shell 0.6.3 → 0.6.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/{Browser-XZEAEJLW.js → Browser-42ZTL3DQ.js} +4 -4
- package/dist/{Browser-XZEAEJLW.js.map → Browser-42ZTL3DQ.js.map} +1 -1
- package/dist/{Calculator-Y7TKDGFS.js → Calculator-QMC43H6W.js} +5 -5
- package/dist/{Calculator-Y7TKDGFS.js.map → Calculator-QMC43H6W.js.map} +1 -1
- package/dist/{Calendar-LUQWUGFY.js → Calendar-OSPNZXPD.js} +4 -4
- package/dist/{Calendar-LUQWUGFY.js.map → Calendar-OSPNZXPD.js.map} +1 -1
- package/dist/ConfirmDialog-BEALMXZM.js +3 -0
- package/dist/{ConfirmDialog-FKCK45O3.js.map → ConfirmDialog-BEALMXZM.js.map} +1 -1
- package/dist/{CurrencyConverter-GZFBW5PE.js → CurrencyConverter-RQKXZ56O.js} +5 -5
- package/dist/{CurrencyConverter-GZFBW5PE.js.map → CurrencyConverter-RQKXZ56O.js.map} +1 -1
- package/dist/{Documents-IT4EQ5CF.js → Documents-SNNWYPAS.js} +4 -4
- package/dist/{Documents-IT4EQ5CF.js.map → Documents-SNNWYPAS.js.map} +1 -1
- package/dist/{Email-SNA6KIKR.js → Email-QIDYGDSR.js} +4 -4
- package/dist/{Email-SNA6KIKR.js.map → Email-QIDYGDSR.js.map} +1 -1
- package/dist/Files-JUWNFKSF.js +11 -0
- package/dist/{Files-E4XEDYAP.js.map → Files-JUWNFKSF.js.map} +1 -1
- package/dist/{Minesweeper-6GUVR7CV.js → Minesweeper-TZU7VTBR.js} +4 -4
- package/dist/{Minesweeper-6GUVR7CV.js.map → Minesweeper-TZU7VTBR.js.map} +1 -1
- package/dist/{Notepad-PQHDQH2L.js → Notepad-RXDODESR.js} +4 -4
- package/dist/{Notepad-PQHDQH2L.js.map → Notepad-RXDODESR.js.map} +1 -1
- package/dist/{PomodoroTimer-3W7AYUDV.js → PomodoroTimer-YYFTVAAT.js} +5 -5
- package/dist/{PomodoroTimer-3W7AYUDV.js.map → PomodoroTimer-YYFTVAAT.js.map} +1 -1
- package/dist/Preview-HDHGK3QA.js +8 -0
- package/dist/{Preview-BUVU7RTT.js.map → Preview-HDHGK3QA.js.map} +1 -1
- package/dist/Spreadsheet-2ZWIDCBD.js +6 -0
- package/dist/{Spreadsheet-G4HT4C7B.js.map → Spreadsheet-2ZWIDCBD.js.map} +1 -1
- package/dist/{TodoList-QGXCDEIE.js → TodoList-PI4SGVGI.js} +3 -3
- package/dist/{TodoList-QGXCDEIE.js.map → TodoList-PI4SGVGI.js.map} +1 -1
- package/dist/{Weather-CXK57AZW.js → Weather-G7GAZWKB.js} +5 -5
- package/dist/{Weather-CXK57AZW.js.map → Weather-G7GAZWKB.js.map} +1 -1
- package/dist/{WorldClock-LBWQKKOA.js → WorldClock-H3TAHY3V.js} +5 -5
- package/dist/{WorldClock-LBWQKKOA.js.map → WorldClock-H3TAHY3V.js.map} +1 -1
- package/dist/apps/index.js +21 -21
- package/dist/{chunk-MGPY5446.js → chunk-EIMG6KP7.js} +5 -5
- package/dist/{chunk-MGPY5446.js.map → chunk-EIMG6KP7.js.map} +1 -1
- package/dist/{chunk-NVAWKCAI.js → chunk-OMCRYSXD.js} +3 -3
- package/dist/{chunk-NVAWKCAI.js.map → chunk-OMCRYSXD.js.map} +1 -1
- package/dist/{chunk-XNXIIGHP.js → chunk-QWQHSHAX.js} +4 -4
- package/dist/{chunk-XNXIIGHP.js.map → chunk-QWQHSHAX.js.map} +1 -1
- package/dist/{chunk-KSRZU3GT.js → chunk-U7XDTOFD.js} +3 -3
- package/dist/{chunk-KSRZU3GT.js.map → chunk-U7XDTOFD.js.map} +1 -1
- package/dist/{chunk-PLGHQ7QW.js → chunk-UBN4IUDE.js} +16 -6
- package/dist/chunk-UBN4IUDE.js.map +1 -0
- package/dist/{chunk-HG3O6XHN.js → chunk-VIUW7IPZ.js} +3 -3
- package/dist/{chunk-HG3O6XHN.js.map → chunk-VIUW7IPZ.js.map} +1 -1
- package/dist/{chunk-3RQ5TVEL.js → chunk-ZIRRB5P2.js} +4 -4
- package/dist/{chunk-3RQ5TVEL.js.map → chunk-ZIRRB5P2.js.map} +1 -1
- package/dist/index.js +8 -8
- package/package.json +1 -1
- package/dist/ConfirmDialog-FKCK45O3.js +0 -3
- package/dist/Files-E4XEDYAP.js +0 -11
- package/dist/Preview-BUVU7RTT.js +0 -8
- package/dist/Spreadsheet-G4HT4C7B.js +0 -6
- package/dist/chunk-PLGHQ7QW.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -6,17 +6,17 @@ export { setShellMailServer, useMailAuth } from './chunk-VBFB3ZIN.js';
|
|
|
6
6
|
import { subscribePomo, getPomoSnapshot } from './chunk-MK3HLUO4.js';
|
|
7
7
|
import { useShellPrefs } from './chunk-36VM54SC.js';
|
|
8
8
|
export { ShellPrefsProvider, useLocalStoragePrefs, useShellPrefs } from './chunk-36VM54SC.js';
|
|
9
|
-
import { PREVIEW_OPENED_EVENT, openPreviewFile } from './chunk-
|
|
9
|
+
import { PREVIEW_OPENED_EVENT, openPreviewFile } from './chunk-QWQHSHAX.js';
|
|
10
10
|
import { playNotification, playStartup, soundsEnabled, getSoundConfig, SOUND_PACK_KEYS, SOUND_PACKS, SOUND_TYPES, SOUND_TYPE_LABELS, setSoundForType, previewSound, setAllSounds, playLogout } from './chunk-D7PYW2QS.js';
|
|
11
|
-
import { setPdfPreview } from './chunk-
|
|
11
|
+
import { setPdfPreview } from './chunk-VIUW7IPZ.js';
|
|
12
12
|
import './chunk-KUIPWCTJ.js';
|
|
13
13
|
import { toast_default } from './chunk-WIJ45SYD.js';
|
|
14
14
|
export { toast_default as toast } from './chunk-WIJ45SYD.js';
|
|
15
|
-
export { EditableGrid } from './chunk-
|
|
16
|
-
import { useWindowManager, PopupMenu, PopupMenuLabel, PopupMenuDivider, PopupMenuItem, Modal, ModalActions, useIsMobile, useModalActive, client_default, LoadingSpinner, WINDOW_REGISTRY, isPageEntry, ThumbCard, activateModal } from './chunk-
|
|
17
|
-
export { CancelButton, CopyButton, DocFavStar, Modal, ModalActions, PopupMenu, PopupMenuDivider, PopupMenuItem, PopupMenuLabel, WindowManagerProvider, WindowTitle, commitExposeHighlight, exitExposeMode, getActiveWindowRoute, getExposeHighlight, isEntityEntry, isPageEntry, setExposeHighlight, setShellApiClient, setShellWindowRegistry, setWindowDefaultPosition, subscribeExposeHighlight, toggleExposeMode, useModalActive, useWidgetSettings, useWindowManager, useWindowMenuItem, useWindowTitle } from './chunk-
|
|
18
|
-
import { confirm } from './chunk-
|
|
19
|
-
export { ConfirmProvider, confirm, confirmDestructive, prompt } from './chunk-
|
|
15
|
+
export { EditableGrid } from './chunk-OMCRYSXD.js';
|
|
16
|
+
import { useWindowManager, PopupMenu, PopupMenuLabel, PopupMenuDivider, PopupMenuItem, Modal, ModalActions, useIsMobile, useModalActive, client_default, LoadingSpinner, WINDOW_REGISTRY, isPageEntry, ThumbCard, activateModal } from './chunk-ZIRRB5P2.js';
|
|
17
|
+
export { CancelButton, CopyButton, DocFavStar, Modal, ModalActions, PopupMenu, PopupMenuDivider, PopupMenuItem, PopupMenuLabel, WindowManagerProvider, WindowTitle, commitExposeHighlight, exitExposeMode, getActiveWindowRoute, getExposeHighlight, isEntityEntry, isPageEntry, setExposeHighlight, setShellApiClient, setShellWindowRegistry, setWindowDefaultPosition, subscribeExposeHighlight, toggleExposeMode, useModalActive, useWidgetSettings, useWindowManager, useWindowMenuItem, useWindowTitle } from './chunk-ZIRRB5P2.js';
|
|
18
|
+
import { confirm } from './chunk-UBN4IUDE.js';
|
|
19
|
+
export { ConfirmProvider, confirm, confirmDestructive, prompt } from './chunk-UBN4IUDE.js';
|
|
20
20
|
import { useAuth, useShellAuth } from './chunk-ADJ3CERD.js';
|
|
21
21
|
export { ShellAuthProvider, setShellAuthBridge, useShellAuth } from './chunk-ADJ3CERD.js';
|
|
22
22
|
import { glassStyle, startMenuCategories, navSections, isSection, GLASS_INPUT_BG, navIcons, sectionIcons } from './chunk-ZF6AYO4G.js';
|
|
@@ -915,7 +915,7 @@ function StatusBadge({ status }) {
|
|
|
915
915
|
}
|
|
916
916
|
|
|
917
917
|
// src/version.ts
|
|
918
|
-
var VERSION = "0.6.
|
|
918
|
+
var VERSION = "0.6.4" ;
|
|
919
919
|
var APP_VERSION = VERSION;
|
|
920
920
|
|
|
921
921
|
// src/changelog.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-os-shell",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.4",
|
|
4
4
|
"description": "Desktop-style React UI shell — windows, taskbar, start menu, sticky notes, frosted glass theming, and bundled apps. Email + Calendar talk to your own IMAP/SMTP/CalDAV provider via a colocated Node bridge server.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Victor Y. Mau",
|
package/dist/Files-E4XEDYAP.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export { Files as default, openFilesInTrashMode } from './chunk-MGPY5446.js';
|
|
2
|
-
import './chunk-XNXIIGHP.js';
|
|
3
|
-
import './chunk-HG3O6XHN.js';
|
|
4
|
-
import './chunk-KUIPWCTJ.js';
|
|
5
|
-
import './chunk-WIJ45SYD.js';
|
|
6
|
-
import './chunk-NVAWKCAI.js';
|
|
7
|
-
import './chunk-3RQ5TVEL.js';
|
|
8
|
-
import './chunk-PLGHQ7QW.js';
|
|
9
|
-
import './chunk-ZF6AYO4G.js';
|
|
10
|
-
//# sourceMappingURL=Files-E4XEDYAP.js.map
|
|
11
|
-
//# sourceMappingURL=Files-E4XEDYAP.js.map
|
package/dist/Preview-BUVU7RTT.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { Preview as default, setPdfPreview } from './chunk-HG3O6XHN.js';
|
|
2
|
-
import './chunk-KUIPWCTJ.js';
|
|
3
|
-
import './chunk-WIJ45SYD.js';
|
|
4
|
-
import './chunk-3RQ5TVEL.js';
|
|
5
|
-
import './chunk-PLGHQ7QW.js';
|
|
6
|
-
import './chunk-ZF6AYO4G.js';
|
|
7
|
-
//# sourceMappingURL=Preview-BUVU7RTT.js.map
|
|
8
|
-
//# sourceMappingURL=Preview-BUVU7RTT.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { Spreadsheet as default, setSpreadsheetPreview } from './chunk-NVAWKCAI.js';
|
|
2
|
-
import './chunk-3RQ5TVEL.js';
|
|
3
|
-
import './chunk-PLGHQ7QW.js';
|
|
4
|
-
import './chunk-ZF6AYO4G.js';
|
|
5
|
-
//# sourceMappingURL=Spreadsheet-G4HT4C7B.js.map
|
|
6
|
-
//# sourceMappingURL=Spreadsheet-G4HT4C7B.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shell/ConfirmDialog.tsx"],"names":[],"mappings":"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","file":"chunk-PLGHQ7QW.js","sourcesContent":["import { createContext, useContext, useState, useCallback, useRef, useEffect } from 'react';\nimport { Dialog, DialogBackdrop, DialogPanel, DialogTitle } from '@headlessui/react';\nimport { ExclamationTriangleIcon } from '@heroicons/react/24/outline';\n\ninterface ConfirmOptions {\n title?: string;\n message: string;\n confirmLabel?: string;\n cancelLabel?: string;\n variant?: 'danger' | 'warning' | 'info';\n}\n\ntype ConfirmFn = (options: ConfirmOptions | string) => Promise<boolean>;\n\nconst ConfirmContext = createContext<ConfirmFn>(() => Promise.resolve(false));\n\nexport const useConfirm = () => useContext(ConfirmContext);\n\n// Global callable — works without a hook, usable from any click handler\nlet globalConfirmFn: ConfirmFn = () => Promise.resolve(false);\nexport const confirm = (opts: ConfirmOptions | string) => globalConfirmFn(opts);\n\n// Destructive confirm — requires typing a word (case-sensitive) to confirm\ninterface DestructiveConfirmOptions {\n title?: string;\n message: string;\n confirmWord: string; // e.g. \"Delete\" or \"Cancel\" — user must type this exactly\n variant?: 'danger' | 'warning';\n}\ntype DestructiveConfirmFn = (options: DestructiveConfirmOptions) => Promise<boolean>;\nlet globalDestructiveConfirmFn: DestructiveConfirmFn = () => Promise.resolve(false);\nexport const confirmDestructive = (opts: DestructiveConfirmOptions) => globalDestructiveConfirmFn(opts);\n\n// Prompt — windowed replacement for native window.prompt(). Resolves to the\n// trimmed string, or null if the user cancelled. Empty input counts as\n// cancel by default; pass `allowEmpty: true` to opt in.\ninterface PromptOptions {\n title?: string;\n message?: string;\n defaultValue?: string;\n placeholder?: string;\n confirmLabel?: string;\n cancelLabel?: string;\n allowEmpty?: boolean;\n}\ntype PromptFn = (options: PromptOptions | string) => Promise<string | null>;\nlet globalPromptFn: PromptFn = () => Promise.resolve(null);\nexport const prompt = (opts: PromptOptions | string) => globalPromptFn(opts);\n\nexport function ConfirmProvider({ children }: { children: React.ReactNode }) {\n const [open, setOpen] = useState(false);\n const [options, setOptions] = useState<ConfirmOptions>({ message: '' });\n const resolveRef = useRef<(value: boolean) => void>();\n\n const confirmFn: ConfirmFn = useCallback((opts) => {\n const normalized = typeof opts === 'string' ? { message: opts } : opts;\n setOptions(normalized);\n setOpen(true);\n return new Promise<boolean>((resolve) => {\n resolveRef.current = resolve;\n });\n }, []);\n\n // Destructive confirm state\n const [dOpen, setDOpen] = useState(false);\n const [dOptions, setDOptions] = useState<DestructiveConfirmOptions>({ message: '', confirmWord: 'Delete' });\n const [dInput, setDInput] = useState('');\n const dResolveRef = useRef<(value: boolean) => void>();\n\n const destructiveConfirmFn: DestructiveConfirmFn = useCallback((opts) => {\n setDOptions(opts);\n setDInput('');\n setDOpen(true);\n return new Promise<boolean>((resolve) => {\n dResolveRef.current = resolve;\n });\n }, []);\n\n // Prompt state\n const [pOpen, setPOpen] = useState(false);\n const [pOptions, setPOptions] = useState<PromptOptions>({});\n const [pInput, setPInput] = useState('');\n const pResolveRef = useRef<(value: string | null) => void>();\n\n const promptFn: PromptFn = useCallback((opts) => {\n const normalized = typeof opts === 'string' ? { message: opts } : opts;\n setPOptions(normalized);\n setPInput(normalized.defaultValue ?? '');\n setPOpen(true);\n return new Promise<string | null>((resolve) => {\n pResolveRef.current = resolve;\n });\n }, []);\n\n useEffect(() => {\n globalConfirmFn = confirmFn;\n globalDestructiveConfirmFn = destructiveConfirmFn;\n globalPromptFn = promptFn;\n }, [confirmFn, destructiveConfirmFn, promptFn]);\n\n const handleClose = (result: boolean) => {\n setOpen(false);\n resolveRef.current?.(result);\n };\n\n const handleDClose = (result: boolean) => {\n setDOpen(false);\n setDInput('');\n dResolveRef.current?.(result);\n };\n\n const handlePClose = (commit: boolean) => {\n if (commit) {\n const trimmed = pInput.trim();\n if (!trimmed && !pOptions.allowEmpty) {\n // Empty + not opted-in to allow empty: treat Save as Cancel.\n setPOpen(false);\n pResolveRef.current?.(null);\n return;\n }\n setPOpen(false);\n pResolveRef.current?.(trimmed);\n } else {\n setPOpen(false);\n pResolveRef.current?.(null);\n }\n };\n\n const variant = options.variant || (options.confirmLabel?.toLowerCase().includes('delete') || options.message.toLowerCase().includes('delete') ? 'danger' : 'info');\n const confirmBtnClass = variant === 'danger'\n ? 'bg-red-600 hover:bg-red-700 text-white'\n : variant === 'warning'\n ? 'bg-yellow-600 hover:bg-yellow-700 text-white'\n : 'bg-blue-600 hover:bg-blue-700 text-white';\n const iconClass = variant === 'danger'\n ? 'text-red-600 bg-red-100'\n : variant === 'warning'\n ? 'text-yellow-600 bg-yellow-100'\n : 'text-blue-600 bg-blue-100';\n\n return (\n <ConfirmContext.Provider value={confirmFn}>\n {children}\n <Dialog open={open} onClose={() => handleClose(false)} className=\"relative z-[9999]\">\n <DialogBackdrop className=\"fixed inset-0 bg-black/30 transition-opacity\" />\n <div className=\"fixed inset-0 flex items-center justify-center p-4\">\n <DialogPanel className=\"w-full max-w-md rounded-lg bg-white p-6 shadow-xl\">\n <div className=\"flex gap-4\">\n <div className={`shrink-0 w-10 h-10 rounded-full flex items-center justify-center ${iconClass}`}>\n <ExclamationTriangleIcon className=\"h-5 w-5\" />\n </div>\n <div className=\"flex-1\">\n <DialogTitle className=\"text-base font-semibold text-gray-900\">\n {options.title || 'Confirm'}\n </DialogTitle>\n <p className=\"mt-2 text-sm text-gray-600\">{options.message}</p>\n </div>\n </div>\n <div className=\"mt-6 flex justify-end gap-3\">\n <button\n type=\"button\"\n onClick={() => handleClose(false)}\n className=\"bg-white text-gray-700 border border-gray-300 px-4 py-2 text-sm font-medium rounded-lg hover:bg-gray-50\"\n >\n {options.cancelLabel || 'Cancel'}\n </button>\n <button\n type=\"button\"\n onClick={() => handleClose(true)}\n className={`px-4 py-2 text-sm font-medium rounded-lg ${confirmBtnClass}`}\n >\n {options.confirmLabel || 'OK'}\n </button>\n </div>\n </DialogPanel>\n </div>\n </Dialog>\n {/* Destructive Confirm Dialog — requires typing to confirm */}\n <Dialog open={dOpen} onClose={() => handleDClose(false)} className=\"relative z-[9999]\">\n <DialogBackdrop className=\"fixed inset-0 bg-black/30 transition-opacity\" />\n <div className=\"fixed inset-0 flex items-center justify-center p-4\">\n <DialogPanel className=\"w-full max-w-md rounded-lg bg-white p-6 shadow-xl\">\n <div className=\"flex gap-4\">\n <div className={`shrink-0 w-10 h-10 rounded-full flex items-center justify-center ${dOptions.variant === 'warning' ? 'text-yellow-600 bg-yellow-100' : 'text-red-600 bg-red-100'}`}>\n <ExclamationTriangleIcon className=\"h-5 w-5\" />\n </div>\n <div className=\"flex-1\">\n <DialogTitle className=\"text-base font-semibold text-gray-900\">\n {dOptions.title || 'Confirm Action'}\n </DialogTitle>\n <p className=\"mt-2 text-sm text-gray-600\">{dOptions.message}</p>\n <p className=\"mt-3 text-sm text-gray-700\">\n Type <kbd className=\"rounded border border-gray-300 bg-gray-50 px-1.5 py-0.5 text-xs font-bold text-red-600 font-mono\">{dOptions.confirmWord}</kbd> to confirm:\n </p>\n <input\n autoFocus\n type=\"text\"\n value={dInput}\n onChange={e => setDInput(e.target.value)}\n onKeyDown={e => { if (e.key === 'Enter' && dInput === dOptions.confirmWord) handleDClose(true); }}\n placeholder={dOptions.confirmWord}\n className=\"mt-2 w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-red-500 focus:ring-red-500\"\n />\n </div>\n </div>\n <div className=\"mt-6 flex justify-end gap-3\">\n <button type=\"button\" onClick={() => handleDClose(false)}\n className=\"bg-white text-gray-700 border border-gray-300 px-4 py-2 text-sm font-medium rounded-lg hover:bg-gray-50\">\n Cancel\n </button>\n <button type=\"button\" onClick={() => handleDClose(true)}\n disabled={dInput !== dOptions.confirmWord}\n className={`px-4 py-2 text-sm font-medium rounded-lg disabled:opacity-40 ${dOptions.variant === 'warning' ? 'bg-yellow-600 hover:bg-yellow-700 text-white' : 'bg-red-600 hover:bg-red-700 text-white'}`}>\n {dOptions.confirmWord}\n </button>\n </div>\n </DialogPanel>\n </div>\n </Dialog>\n {/* Prompt Dialog — windowed replacement for window.prompt() */}\n <Dialog open={pOpen} onClose={() => handlePClose(false)} className=\"relative z-[9999]\">\n <DialogBackdrop className=\"fixed inset-0 bg-black/30 transition-opacity\" />\n <div className=\"fixed inset-0 flex items-center justify-center p-4\">\n <DialogPanel className=\"w-full max-w-md rounded-lg bg-white p-6 shadow-xl\">\n <DialogTitle className=\"text-base font-semibold text-gray-900\">\n {pOptions.title || 'Enter a value'}\n </DialogTitle>\n {pOptions.message && (\n <p className=\"mt-2 text-sm text-gray-600\">{pOptions.message}</p>\n )}\n <input\n autoFocus\n type=\"text\"\n value={pInput}\n onChange={(e) => setPInput(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') handlePClose(true);\n else if (e.key === 'Escape') handlePClose(false);\n }}\n onFocus={(e) => e.target.select()}\n placeholder={pOptions.placeholder}\n className=\"mt-3 w-full rounded-md border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:ring-1 focus:ring-blue-500 focus:outline-none\"\n />\n <div className=\"mt-6 flex justify-end gap-3\">\n <button\n type=\"button\"\n onClick={() => handlePClose(false)}\n className=\"bg-white text-gray-700 border border-gray-300 px-4 py-2 text-sm font-medium rounded-lg hover:bg-gray-50\"\n >\n {pOptions.cancelLabel || 'Cancel'}\n </button>\n <button\n type=\"button\"\n onClick={() => handlePClose(true)}\n disabled={!pOptions.allowEmpty && !pInput.trim()}\n className=\"bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 text-sm font-medium rounded-lg disabled:opacity-40\"\n >\n {pOptions.confirmLabel || 'OK'}\n </button>\n </div>\n </DialogPanel>\n </div>\n </Dialog>\n </ConfirmContext.Provider>\n );\n}\n"]}
|