@omerdlw/base-framework 1.0.6 → 2.0.0
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/atoms/index.js +1 -103
- package/dist/atoms/index.js.map +1 -1
- package/dist/chunk-3BUP64Q6.js +105 -0
- package/dist/chunk-3BUP64Q6.js.map +1 -0
- package/dist/chunk-3MSK4XGK.js +9888 -0
- package/dist/chunk-3MSK4XGK.js.map +1 -0
- package/dist/chunk-4GMQKD6F.js +353 -0
- package/dist/chunk-4GMQKD6F.js.map +1 -0
- package/dist/chunk-65ZB4QTQ.js +888 -0
- package/dist/chunk-65ZB4QTQ.js.map +1 -0
- package/dist/chunk-6SG7V77J.js +577 -0
- package/dist/chunk-6SG7V77J.js.map +1 -0
- package/dist/chunk-7HQMXTNP.js +419 -0
- package/dist/chunk-7HQMXTNP.js.map +1 -0
- package/dist/chunk-7TAVYJ3A.js +371 -0
- package/dist/chunk-7TAVYJ3A.js.map +1 -0
- package/dist/chunk-AQ4BNXA2.js +349 -0
- package/dist/chunk-AQ4BNXA2.js.map +1 -0
- package/dist/chunk-CGHZSSFR.js +2166 -0
- package/dist/chunk-CGHZSSFR.js.map +1 -0
- package/dist/chunk-DGCQWQLZ.js +61 -0
- package/dist/chunk-DGCQWQLZ.js.map +1 -0
- package/dist/chunk-FIMPHODX.js +67 -0
- package/dist/chunk-FIMPHODX.js.map +1 -0
- package/dist/chunk-GF7TUX5I.js +1889 -0
- package/dist/chunk-GF7TUX5I.js.map +1 -0
- package/dist/chunk-JELG4JLT.js +454 -0
- package/dist/chunk-JELG4JLT.js.map +1 -0
- package/dist/chunk-K676GL7Z.js +51 -0
- package/dist/chunk-K676GL7Z.js.map +1 -0
- package/dist/chunk-KKQT46TP.js +26 -0
- package/dist/chunk-KKQT46TP.js.map +1 -0
- package/dist/chunk-QI3ALLIB.js +38 -0
- package/dist/chunk-QI3ALLIB.js.map +1 -0
- package/dist/chunk-QXR55VVS.js +1139 -0
- package/dist/chunk-QXR55VVS.js.map +1 -0
- package/dist/chunk-R2YGFJDJ.js +408 -0
- package/dist/chunk-R2YGFJDJ.js.map +1 -0
- package/dist/chunk-RFZQWLC5.js +27 -0
- package/dist/chunk-RFZQWLC5.js.map +1 -0
- package/dist/chunk-SYAVGTOX.js +521 -0
- package/dist/chunk-SYAVGTOX.js.map +1 -0
- package/dist/chunk-TV3WEF5G.js +784 -0
- package/dist/chunk-TV3WEF5G.js.map +1 -0
- package/dist/chunk-XASQT4CQ.js +280 -0
- package/dist/chunk-XASQT4CQ.js.map +1 -0
- package/dist/error/index.js +5 -682
- package/dist/error/index.js.map +1 -1
- package/dist/error/reporter.d.ts.map +1 -1
- package/dist/error/theme.d.ts +1 -1
- package/dist/error/theme.d.ts.map +1 -1
- package/dist/events.js +1 -7
- package/dist/events.js.map +1 -1
- package/dist/hooks/index.js +1 -358
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-global-event.d.ts +1 -1
- package/dist/index.js +18 -20029
- package/dist/index.js.map +1 -1
- package/dist/kernel/index.js +2 -2035
- package/dist/kernel/index.js.map +1 -1
- package/dist/kernel/types.d.ts +1 -1
- package/dist/modules/ambient/analyze.d.ts +46 -0
- package/dist/modules/ambient/analyze.d.ts.map +1 -0
- package/dist/modules/ambient/constants.d.ts +1 -5
- package/dist/modules/ambient/constants.d.ts.map +1 -1
- package/dist/modules/ambient/context.d.ts.map +1 -1
- package/dist/modules/ambient/dom.d.ts +11 -12
- package/dist/modules/ambient/dom.d.ts.map +1 -1
- package/dist/modules/ambient/extractor.d.ts +10 -10
- package/dist/modules/ambient/extractor.d.ts.map +1 -1
- package/dist/modules/ambient/hooks.d.ts +1 -1
- package/dist/modules/ambient/hooks.d.ts.map +1 -1
- package/dist/modules/ambient/index.d.ts +6 -4
- package/dist/modules/ambient/index.d.ts.map +1 -1
- package/dist/modules/ambient/index.js +7 -762
- package/dist/modules/ambient/index.js.map +1 -1
- package/dist/modules/ambient/module.d.ts +1 -1
- package/dist/modules/ambient/module.d.ts.map +1 -1
- package/dist/modules/ambient/oklab.d.ts +36 -0
- package/dist/modules/ambient/oklab.d.ts.map +1 -0
- package/dist/modules/ambient/pipeline.d.ts +28 -0
- package/dist/modules/ambient/pipeline.d.ts.map +1 -0
- package/dist/modules/ambient/quantize.d.ts +22 -0
- package/dist/modules/ambient/quantize.d.ts.map +1 -0
- package/dist/modules/ambient/server/address.d.ts +8 -0
- package/dist/modules/ambient/server/address.d.ts.map +1 -0
- package/dist/modules/ambient/server/index.d.ts +53 -0
- package/dist/modules/ambient/server/index.d.ts.map +1 -0
- package/dist/modules/ambient/server/index.js +221 -0
- package/dist/modules/ambient/server/index.js.map +1 -0
- package/dist/modules/ambient/settings.d.ts +19 -0
- package/dist/modules/ambient/settings.d.ts.map +1 -0
- package/dist/modules/ambient/types.d.ts +105 -9
- package/dist/modules/ambient/types.d.ts.map +1 -1
- package/dist/modules/ambient/worker/index.d.ts +15 -0
- package/dist/modules/ambient/worker/index.d.ts.map +1 -0
- package/dist/modules/ambient/worker/index.js +114 -0
- package/dist/modules/ambient/worker/index.js.map +1 -0
- package/dist/modules/background/constants.d.ts +2 -2
- package/dist/modules/background/constants.d.ts.map +1 -1
- package/dist/modules/background/hooks.d.ts +1 -1
- package/dist/modules/background/index.js +6 -3078
- package/dist/modules/background/index.js.map +1 -1
- package/dist/modules/background/motion.d.ts +9 -7
- package/dist/modules/background/motion.d.ts.map +1 -1
- package/dist/modules/background/overlay.d.ts +3 -8
- package/dist/modules/background/overlay.d.ts.map +1 -1
- package/dist/modules/background/types.d.ts +16 -2
- package/dist/modules/background/types.d.ts.map +1 -1
- package/dist/modules/context-menu/constants.d.ts +2 -2
- package/dist/modules/context-menu/constants.d.ts.map +1 -1
- package/dist/modules/context-menu/hooks.d.ts +1 -1
- package/dist/modules/context-menu/index.js +10 -1896
- package/dist/modules/context-menu/index.js.map +1 -1
- package/dist/modules/context-menu/motion.d.ts +1 -8
- package/dist/modules/context-menu/motion.d.ts.map +1 -1
- package/dist/modules/context-menu/overlay.d.ts.map +1 -1
- package/dist/modules/context-menu/types.d.ts +16 -2
- package/dist/modules/context-menu/types.d.ts.map +1 -1
- package/dist/modules/controls/constants.d.ts +1 -1
- package/dist/modules/controls/constants.d.ts.map +1 -1
- package/dist/modules/controls/entries.d.ts +1 -1
- package/dist/modules/controls/hooks.d.ts +1 -1
- package/dist/modules/controls/index.js +4 -1110
- package/dist/modules/controls/index.js.map +1 -1
- package/dist/modules/controls/overlay.d.ts +1 -1
- package/dist/modules/controls/types.d.ts +2 -2
- package/dist/modules/dock/cards.d.ts +708 -24
- package/dist/modules/dock/cards.d.ts.map +1 -1
- package/dist/modules/dock/constants.d.ts +2 -2
- package/dist/modules/dock/constants.d.ts.map +1 -1
- package/dist/modules/dock/helpers.d.ts +2 -2
- package/dist/modules/dock/hooks.d.ts +2 -2
- package/dist/modules/dock/index.d.ts +1 -1
- package/dist/modules/dock/index.d.ts.map +1 -1
- package/dist/modules/dock/index.js +9 -12132
- package/dist/modules/dock/index.js.map +1 -1
- package/dist/modules/dock/module.d.ts +1 -1
- package/dist/modules/dock/motion.d.ts +41 -915
- package/dist/modules/dock/motion.d.ts.map +1 -1
- package/dist/modules/dock/overlay.d.ts.map +1 -1
- package/dist/modules/dock/runtime/dock.d.ts +1 -23
- package/dist/modules/dock/runtime/dock.d.ts.map +1 -1
- package/dist/modules/dock/styles.d.ts +4 -4
- package/dist/modules/dock/surface/hooks.d.ts +5 -20
- package/dist/modules/dock/surface/hooks.d.ts.map +1 -1
- package/dist/modules/dock/surface/machine.d.ts +4 -3
- package/dist/modules/dock/surface/machine.d.ts.map +1 -1
- package/dist/modules/dock/surface/stack.d.ts.map +1 -1
- package/dist/modules/dock/types.d.ts +158 -3
- package/dist/modules/dock/types.d.ts.map +1 -1
- package/dist/modules/index.js +16 -17883
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/loading/constants.d.ts +1 -1
- package/dist/modules/loading/constants.d.ts.map +1 -1
- package/dist/modules/loading/context.d.ts +1 -1
- package/dist/modules/loading/hooks.d.ts +1 -1
- package/dist/modules/loading/index.js +5 -1153
- package/dist/modules/loading/index.js.map +1 -1
- package/dist/modules/loading/types.d.ts +2 -2
- package/dist/modules/media/context.d.ts +1 -1
- package/dist/modules/media/index.js +3 -570
- package/dist/modules/media/index.js.map +1 -1
- package/dist/modules/media/types.d.ts +2 -2
- package/dist/modules/modal/constants.d.ts +2 -2
- package/dist/modules/modal/constants.d.ts.map +1 -1
- package/dist/modules/modal/context.d.ts +1 -1
- package/dist/modules/modal/hooks.d.ts +3 -3
- package/dist/modules/modal/index.js +8 -2355
- package/dist/modules/modal/index.js.map +1 -1
- package/dist/modules/modal/motion.d.ts +3 -8
- package/dist/modules/modal/motion.d.ts.map +1 -1
- package/dist/modules/modal/overlay.d.ts.map +1 -1
- package/dist/modules/modal/types.d.ts +21 -0
- package/dist/modules/modal/types.d.ts.map +1 -1
- package/dist/modules/notification/constants.d.ts +2 -2
- package/dist/modules/notification/constants.d.ts.map +1 -1
- package/dist/modules/notification/context.d.ts +1 -1
- package/dist/modules/notification/hooks.d.ts +1 -1
- package/dist/modules/notification/index.js +4 -828
- package/dist/modules/notification/index.js.map +1 -1
- package/dist/modules/notification/motion.d.ts +1 -7
- package/dist/modules/notification/motion.d.ts.map +1 -1
- package/dist/modules/notification/overlay.d.ts.map +1 -1
- package/dist/modules/notification/types.d.ts +9 -1
- package/dist/modules/notification/types.d.ts.map +1 -1
- package/dist/overlay-TZ6L52A5.js +9 -0
- package/dist/overlay-TZ6L52A5.js.map +1 -0
- package/dist/provider.d.ts +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +6 -1968
- package/dist/provider.js.map +1 -1
- package/dist/result.js +2 -63
- package/dist/result.js.map +1 -1
- package/dist/theme.d.ts +45 -8
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +3 -41
- package/dist/theme.js.map +1 -1
- package/dist/tokens/index.d.ts +1 -0
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +126 -155
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/motion-config.d.ts +44 -0
- package/dist/tokens/motion-config.d.ts.map +1 -0
- package/dist/tokens/motion.d.ts +23 -174
- package/dist/tokens/motion.d.ts.map +1 -1
- package/dist/utils/index.js +4 -82
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/report.d.ts.map +1 -1
- package/docs/README.md +1 -0
- package/docs/architecture-and-rules.md +4 -3
- package/docs/core-engine.md +7 -10
- package/docs/getting-started.md +4 -2
- package/docs/modules/ambient.md +194 -80
- package/docs/modules/background.md +3 -3
- package/docs/modules/context-menu.md +2 -2
- package/docs/modules/dock.md +8 -5
- package/docs/modules/modal.md +2 -2
- package/docs/modules/notification.md +2 -2
- package/docs/theming.md +81 -9
- package/package.json +22 -5
- package/templates/AGENTS.md +1 -1
- package/templates/motion/background.ts +17 -0
- package/templates/motion/context-menu.ts +63 -0
- package/templates/motion/dock.ts +327 -0
- package/templates/motion/modal.ts +79 -0
- package/templates/motion/notification.ts +27 -0
- package/templates/motion/tokens.ts +47 -0
- package/templates/tsconfig.json +7 -0
- package/dist/modules/ambient/color.d.ts +0 -21
- package/dist/modules/ambient/color.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/modules/notification/constants.ts","../src/result.ts","../src/modules/notification/state.ts","../src/modules/notification/context.tsx","../src/modules/notification/hooks.ts","../src/modules/notification/motion.ts","../src/modules/notification/overlay.tsx","../src/modules/notification/module.tsx"],"names":["useMemo","useCallback","jsx"],"mappings":"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","file":"chunk-SYAVGTOX.js","sourcesContent":["import { USER_MESSAGES } from \"@/utils\";\nimport { defineThemeSpec } from \"@/theme\";\nimport {\n type NotificationActions,\n type NotificationState,\n type NotificationMotion,\n type NotificationThemeSlot,\n} from \"./types\";\n\nexport const TOAST_DURATIONS = Object.freeze({\n DEFAULT: 2000,\n SHORT: 1500,\n} as const);\n\nexport const SESSION_EXPIRED_MESSAGE = USER_MESSAGES.unauthorized;\n\nexport const DOCK_STACK_ELEMENT_ID = \"dock-card-stack\";\n\nexport const notificationTheme =\n defineThemeSpec<NotificationThemeSlot, NotificationMotion>(\"notification\");\n\nexport const INITIAL_NOTIFICATION_STATE: NotificationState = Object.freeze({\n notifications: {},\n});\n\nexport const INERT_NOTIFICATION_ACTIONS: NotificationActions = Object.freeze({\n dismissAllNotifications: () => {},\n dismissNotification: () => {},\n showNotification: () => null,\n});\n\n","import { UserError, toUserMessage } from \"./utils/user-message\";\nimport { report } from \"./utils/report\";\n\nexport interface SuccessResult<T> {\n readonly code?: string;\n readonly data: T;\n readonly error?: never;\n readonly success: true;\n}\n\nexport interface ErrorResult<E = string> {\n readonly code?: string;\n readonly data?: never;\n readonly error: E;\n readonly success: false;\n}\n\nexport type Result<T, E = string> = SuccessResult<T> | ErrorResult<E>;\n\nexport function ok<T>(data: T, code?: string): SuccessResult<T> {\n return { data, success: true, ...(code ? { code } : {}) };\n}\n\nexport function err<E = string>(error: E, code?: string): ErrorResult<E> {\n return { error, success: false, ...(code ? { code } : {}) };\n}\n\nexport function isResult(value: unknown): value is Result<unknown, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"success\" in value &&\n typeof (value as { success: unknown }).success === \"boolean\" &&\n ((\"data\" in value && (value as { success: boolean }).success === true) ||\n (\"error\" in value && (value as { success: boolean }).success === false))\n );\n}\n\nexport function isOk<T, E = string>(\n result: Result<T, E>,\n): result is SuccessResult<T> {\n return result.success === true;\n}\n\nexport function isErr<T, E = string>(\n result: Result<T, E>,\n): result is ErrorResult<E> {\n return result.success === false;\n}\n\nexport function unwrap<T, E = string>(result: Result<T, E>): T {\n if (result.success) {\n return result.data;\n }\n if (result.error instanceof Error) {\n throw result.error;\n }\n throw new Error(\n typeof result.error === \"string\" ? result.error : String(result.error),\n );\n}\n\nexport function unwrapOr<T, E = string>(result: Result<T, E>, fallback: T): T {\n return result.success ? result.data : fallback;\n}\n\nexport function map<T, U, E = string>(\n result: Result<T, E>,\n fn: (data: T) => U,\n): Result<U, E> {\n return result.success ? ok(fn(result.data), result.code) : result;\n}\n\nexport function mapErr<T, E, F>(\n result: Result<T, E>,\n fn: (error: E) => F,\n): Result<T, F> {\n return result.success ? result : err(fn(result.error), result.code);\n}\n\nexport function match<T, E, R>(\n result: Result<T, E>,\n branches: { ok: (data: T) => R; err: (error: E) => R },\n): R {\n return result.success ? branches.ok(result.data) : branches.err(result.error);\n}\n\nfunction mapCaught<E>(error: unknown, mapError?: (error: unknown) => E): E {\n if (!(error instanceof UserError)) report(\"Result\", error);\n return mapError ? mapError(error) : (toUserMessage(error) as unknown as E);\n}\n\nexport async function tryCatch<T, E = string>(\n promiseOrFn: Promise<T> | (() => Promise<T>),\n mapError?: (error: unknown) => E,\n): Promise<Result<T, E>> {\n try {\n const data =\n typeof promiseOrFn === \"function\"\n ? await promiseOrFn()\n : await promiseOrFn;\n return ok(data);\n } catch (error) {\n return err(mapCaught(error, mapError));\n }\n}\n\ninterface SafeActionSchema<TParsed> {\n safeParse: (input: unknown) =>\n | { data: TParsed; success: true }\n | {\n error?: {\n issues?: Array<{ message?: string }>;\n message?: string;\n };\n success: false;\n };\n}\n\nexport interface SafeActionOptions<TArgs extends unknown[], E = string> {\n errorCode?: string;\n mapError?: (error: unknown) => E;\n schema?: SafeActionSchema<TArgs[0]>;\n validate?: (\n ...args: TArgs\n ) => Result<unknown, E> | string | boolean | null | undefined;\n}\n\nexport function createSafeAction<TArgs extends unknown[], TOutput, E = string>(\n handler: (\n ...args: TArgs\n ) => Promise<Result<TOutput, E> | TOutput> | Result<TOutput, E> | TOutput,\n options: SafeActionOptions<TArgs, E> = {},\n): (...args: TArgs) => Promise<Result<TOutput, E>> {\n const { errorCode, mapError, schema, validate } = options;\n\n return async (...args: TArgs): Promise<Result<TOutput, E>> => {\n try {\n let effectiveArgs = args;\n\n if (schema) {\n const parsed = schema.safeParse(args[0]);\n if (!parsed.success) {\n const issueMessage =\n parsed.error?.issues?.[0]?.message ||\n parsed.error?.message ||\n \"Invalid input\";\n return err(\n mapError ? mapError(issueMessage) : (issueMessage as unknown as E),\n errorCode ?? \"VALIDATION_ERROR\",\n );\n }\n effectiveArgs = [parsed.data, ...args.slice(1)] as TArgs;\n }\n\n if (validate) {\n const validationResult = validate(...effectiveArgs);\n if (isResult(validationResult)) {\n if (isErr(validationResult)) {\n return validationResult as ErrorResult<E>;\n }\n } else if (validationResult === false) {\n return err(\n mapError\n ? mapError(\"Validation failed\")\n : (\"Validation failed\" as unknown as E),\n errorCode ?? \"VALIDATION_ERROR\",\n );\n } else if (\n typeof validationResult === \"string\" &&\n validationResult.length > 0\n ) {\n return err(\n mapError\n ? mapError(validationResult)\n : (validationResult as unknown as E),\n errorCode ?? \"VALIDATION_ERROR\",\n );\n }\n }\n\n const output = await handler(...effectiveArgs);\n if (isResult(output)) {\n return output as Result<TOutput, E>;\n }\n return ok(output as TOutput);\n } catch (error) {\n return err(mapCaught(error, mapError), errorCode);\n }\n };\n}\n","import { type ReactNode } from \"react\";\nimport { isObject, toUserMessage } from \"@/utils\";\nimport { isResult } from \"@/result\";\nimport { TOAST_DURATIONS } from \"./constants\";\nimport {\n type NotificationData,\n type NotificationEntry,\n type NotificationOptions,\n type ToastOptionsInput,\n type ToastPromiseMessages,\n} from \"./types\";\n\nexport function normalizeFeedbackText<T = unknown>(value: T): T {\n if (typeof value !== \"string\") return value;\n return value.trim().replace(/[.\\s]+$/, \"\") as T;\n}\n\nexport function getActiveNotification(\n notifications: Record<string, NotificationEntry>,\n): NotificationEntry | null {\n let active: NotificationEntry | null = null;\n for (const entry of Object.values(notifications)) {\n if (!active || entry.timestamp >= active.timestamp) active = entry;\n }\n return active;\n}\n\nexport function normalizeToastOptions(\n options?: ToastOptionsInput,\n): NotificationOptions {\n return typeof options === \"number\" ? { duration: options } : options || {};\n}\n\nexport function normalizeDuration(value: unknown): number | null {\n if (value === null) return null;\n if (value === undefined) return TOAST_DURATIONS.DEFAULT;\n const duration = Number(value);\n return Number.isFinite(duration) && duration > 0 ? duration : null;\n}\n\nexport function withDefaultDuration(\n duration: number,\n options?: ToastOptionsInput,\n): NotificationOptions & { duration: number | null } {\n const normalized = normalizeToastOptions(options);\n return {\n ...normalized,\n duration:\n normalized.duration !== undefined ? normalized.duration : duration,\n };\n}\n\nexport function isNotificationDataObject(\n value: unknown,\n): value is NotificationData {\n return isObject(value) && \"message\" in value;\n}\n\nexport function resolveMessage<A>(\n message: ReactNode | ((arg: A) => ReactNode),\n arg: A,\n): ReactNode {\n return typeof message === \"function\" ? message(arg) : message;\n}\n\nexport function getOutcomeMessage<T, E>(\n value: unknown,\n messages: ToastPromiseMessages<T, E>,\n): ReactNode {\n if (!isResult(value)) return resolveMessage(messages.success, value as T);\n return value.success\n ? resolveMessage(messages.success, value.data as T)\n : resolveMessage(messages.error, value.error as E) ||\n toUserMessage(value.error);\n}\n\nexport function createNotificationEntry(\n messageOrData: ReactNode | NotificationData,\n options?: ToastOptionsInput,\n fallbackId?: string,\n): { entry: NotificationEntry; duration: number | null } | null {\n const normalizedOptions = normalizeToastOptions(options);\n const payload: NotificationData = isNotificationDataObject(messageOrData)\n ? { ...normalizedOptions, ...messageOrData }\n : { ...normalizedOptions, message: messageOrData };\n\n const normalizedMessage = normalizeFeedbackText(payload.message);\n if (\n normalizedMessage === null ||\n normalizedMessage === undefined ||\n normalizedMessage === \"\"\n ) {\n return null;\n }\n\n const id =\n payload.dedupeKey ||\n payload.id ||\n (typeof normalizedMessage === \"string\"\n ? normalizedMessage.slice(0, 64)\n : fallbackId || `notification-${Date.now()}`);\n\n const entry: NotificationEntry = {\n dedupeKey: payload.dedupeKey,\n duration: payload.duration,\n id,\n message: normalizedMessage,\n timestamp: Date.now(),\n };\n\n return {\n duration: normalizeDuration(payload.duration),\n entry,\n };\n}\n","\"use client\";\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport { getOrCreateGlobalContext } from \"@/kernel\";\nimport { createStore } from \"@/utils\";\nimport {\n INITIAL_NOTIFICATION_STATE,\n} from \"./constants\";\nimport { createNotificationEntry } from \"./state\";\nimport {\n type NotificationActions,\n type NotificationContextValue,\n type NotificationData,\n type NotificationProviderProps,\n type NotificationState,\n type ToastOptionsInput,\n} from \"./types\";\n\nexport const NotificationContext =\n getOrCreateGlobalContext<NotificationContextValue | null>(\n \"NotificationContext\",\n null,\n );\n\nexport const NOOP_NOTIFICATION_STORE = createStore<NotificationState>(\n INITIAL_NOTIFICATION_STATE,\n);\n\nlet notificationIdCounter = 0;\n\nexport const NotificationProvider = ({\n children,\n}: NotificationProviderProps) => {\n const [store] = useState(() =>\n createStore<NotificationState>(INITIAL_NOTIFICATION_STATE, {\n freezeSnapshots: false,\n }),\n );\n const timersRef = useRef<Map<string, ReturnType<typeof setTimeout>>>(\n new Map(),\n );\n\n const clearTimers = useCallback(() => {\n timersRef.current.forEach(clearTimeout);\n timersRef.current.clear();\n }, []);\n\n useEffect(() => clearTimers, [clearTimers]);\n\n const dismissNotification = useCallback(\n (id: string) => {\n clearTimeout(timersRef.current.get(id));\n timersRef.current.delete(id);\n\n store.publish((prev) => {\n if (!Object.hasOwn(prev.notifications, id)) return prev;\n const notifications = { ...prev.notifications };\n delete notifications[id];\n return { notifications };\n });\n },\n [store],\n );\n\n const dismissAllNotifications = useCallback(() => {\n clearTimers();\n store.publish((prev) =>\n Object.keys(prev.notifications).length === 0\n ? prev\n : { notifications: {} },\n );\n }, [clearTimers, store]);\n\n const showNotification = useCallback(\n (\n messageOrData: ReactNode | NotificationData,\n options?: ToastOptionsInput,\n ): string | null => {\n const fallbackId = `notification-${++notificationIdCounter}`;\n const result = createNotificationEntry(\n messageOrData,\n options,\n fallbackId,\n );\n if (!result) return null;\n\n const { entry, duration } = result;\n const { id } = entry;\n\n clearTimers();\n store.publish({ notifications: { [id]: entry } });\n\n if (duration) {\n timersRef.current.set(\n id,\n setTimeout(() => dismissNotification(id), duration),\n );\n }\n\n return id;\n },\n [clearTimers, dismissNotification, store],\n );\n\n const actions = useMemo<NotificationActions>(\n () => ({\n dismissAllNotifications,\n dismissNotification,\n showNotification,\n }),\n [dismissAllNotifications, dismissNotification, showNotification],\n );\n\n const value = useMemo<NotificationContextValue>(\n () => ({ actions, store }),\n [actions, store],\n );\n\n return <NotificationContext value={value}>{children}</NotificationContext>;\n};\n","\"use client\";\n\nimport {\n useCallback,\n useContext,\n useMemo,\n useSyncExternalStore,\n type ReactNode,\n} from \"react\";\nimport { EVENT_TYPES } from \"@/events\";\nimport { useGlobalEvent, useRequiredContext, useStore } from \"@/hooks\";\nimport { useModuleTheme } from \"@/theme\";\nimport { toUserMessage } from \"@/utils\";\nimport {\n INERT_NOTIFICATION_ACTIONS,\n SESSION_EXPIRED_MESSAGE,\n TOAST_DURATIONS,\n notificationTheme,\n} from \"./constants\";\nimport {\n NotificationContext,\n NOOP_NOTIFICATION_STORE,\n} from \"./context\";\nimport {\n getActiveNotification,\n getOutcomeMessage,\n normalizeToastOptions,\n resolveMessage,\n withDefaultDuration,\n} from \"./state\";\nimport {\n type NotificationActions,\n type NotificationState,\n type ToastController,\n type ToastOptionsInput,\n type ToastPromiseMessages,\n} from \"./types\";\n\nlet toastPromiseIdCounter = 0;\n\nexport function useNotificationActions(): NotificationActions {\n return useRequiredContext(\n NotificationContext,\n \"useNotificationActions\",\n \"NotificationProvider\",\n ).actions;\n}\n\nexport function useNotificationState(): NotificationState {\n const { store } = useRequiredContext(\n NotificationContext,\n \"useNotificationState\",\n \"NotificationProvider\",\n );\n return useStore(store);\n}\n\nexport function useNotification(): NotificationState & NotificationActions {\n const actions = useNotificationActions();\n const state = useNotificationState();\n return useMemo(() => ({ ...actions, ...state }), [actions, state]);\n}\n\nexport function useOptionalNotificationState(): NotificationState;\nexport function useOptionalNotificationState<T>(\n selector: (state: NotificationState) => T,\n isEqual?: (a: T, b: T) => boolean,\n): T;\nexport function useOptionalNotificationState<T = NotificationState>(\n selector?: (state: NotificationState) => T,\n isEqual?: (a: T, b: T) => boolean,\n): T {\n const ctx = useContext(NotificationContext);\n return useStore(\n ctx?.store ?? NOOP_NOTIFICATION_STORE,\n selector as (state: NotificationState) => T,\n isEqual,\n );\n}\n\nexport function useOptionalNotificationActions(): NotificationActions {\n const ctx = useContext(NotificationContext);\n return ctx?.actions ?? INERT_NOTIFICATION_ACTIONS;\n}\n\nexport function useNotificationVisible(): boolean {\n return useOptionalNotificationState(\n ({ notifications }) => Object.keys(notifications).length > 0,\n );\n}\n\nexport function useToast(defaultDuration?: number | null): ToastController {\n const { dismissAllNotifications, dismissNotification, showNotification } =\n useNotificationActions();\n\n const resolvedDefaultDuration = defaultDuration ?? TOAST_DURATIONS.DEFAULT;\n\n const triggerToast = useCallback(\n (message: ReactNode, options?: ToastOptionsInput): string | null =>\n showNotification(\n message,\n withDefaultDuration(resolvedDefaultDuration, options),\n ),\n [resolvedDefaultDuration, showNotification],\n );\n\n const dismiss = useCallback(\n (id?: string) => {\n if (id) dismissNotification(id);\n else dismissAllNotifications();\n },\n [dismissAllNotifications, dismissNotification],\n );\n\n const fromResult = useCallback(\n <T = unknown, E = unknown, R = unknown>(\n result: R,\n messages: ToastPromiseMessages<T, E> = {},\n options?: ToastOptionsInput,\n ) => {\n const message = getOutcomeMessage(result, messages);\n if (message) triggerToast(message, options);\n return result;\n },\n [triggerToast],\n );\n\n const promise = useCallback(\n async <T = unknown, E = unknown>(\n promiseOrFn: Promise<T> | (() => Promise<T>),\n messages: ToastPromiseMessages<T, E> = {},\n options?: ToastOptionsInput,\n ): Promise<T> => {\n const normalized = normalizeToastOptions(options);\n const id =\n normalized.id ||\n normalized.dedupeKey ||\n `toast-promise-${++toastPromiseIdCounter}`;\n const sharedOptions = { ...normalized, id };\n\n if (messages.loading) {\n showNotification(messages.loading, {\n ...sharedOptions,\n duration: null,\n });\n }\n\n try {\n const resolved = await (typeof promiseOrFn === \"function\"\n ? promiseOrFn()\n : promiseOrFn);\n const message = getOutcomeMessage(resolved, messages);\n if (message) triggerToast(message, sharedOptions);\n else if (messages.loading) dismiss(id);\n return resolved;\n } catch (error) {\n triggerToast(\n resolveMessage(messages.error, error as E) || toUserMessage(error),\n sharedOptions,\n );\n throw error;\n }\n },\n [dismiss, showNotification, triggerToast],\n );\n\n return useMemo<ToastController>(\n () =>\n Object.assign(\n (message: ReactNode, options?: ToastOptionsInput) =>\n triggerToast(message, options),\n { dismiss, dismissAll: dismissAllNotifications, fromResult, promise },\n ),\n [dismiss, dismissAllNotifications, fromResult, promise, triggerToast],\n );\n}\n\nconst emptySubscribe = () => () => {};\n\nexport function NotificationListener(): null {\n const { showNotification } = useNotificationActions();\n\n useGlobalEvent(EVENT_TYPES.API_UNAUTHORIZED, (data?: { source?: string }) => {\n if (data?.source && data.source !== \"app\") return;\n showNotification(SESSION_EXPIRED_MESSAGE);\n });\n\n useGlobalEvent(\n EVENT_TYPES.APP_ERROR,\n (data?: { message?: string; notify?: boolean }) => {\n if (!data?.notify || !data.message) return;\n showNotification(data.message);\n },\n );\n\n useGlobalEvent(\n EVENT_TYPES.STATE_CHANGE,\n (data?: { message?: string; notify?: boolean }) => {\n if (!data?.notify || !data.message) return;\n showNotification(data.message);\n },\n );\n\n return null;\n}\n\nexport function useNotificationContainerModel() {\n const { notifications } = useNotificationState();\n const { dismissNotification } = useNotificationActions();\n const isHydrated = useSyncExternalStore(\n emptySubscribe,\n () => true,\n () => false,\n );\n const activeEntry = useMemo(\n () => getActiveNotification(notifications),\n [notifications],\n );\n\n const theme = useModuleTheme(notificationTheme);\n\n return { dismissNotification, isHydrated, activeEntry, theme };\n}\n","import { useModuleMotion } from \"@/theme\";\nimport { notificationTheme } from \"./constants\";\n\nexport const NOTIFICATION_COMPOSITOR_STYLE = Object.freeze({\n WebkitBackfaceVisibility: \"hidden\" as const,\n WebkitFontSmoothing: \"antialiased\" as const,\n backfaceVisibility: \"hidden\" as const,\n transform: \"translateZ(0)\",\n willChange: \"transform, opacity, filter\",\n});\n\nexport function useNotificationMotion() {\n return useModuleMotion(notificationTheme);\n}\n","\"use client\";\n\nimport { type KeyboardEvent, type MouseEvent } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { type CSSProperties } from \"react\";\nimport { cn } from \"@/utils\";\nimport { DOCK_STACK_ELEMENT_ID } from \"./constants\";\nimport { type NotificationEntry } from \"./types\";\nimport { NOTIFICATION_COMPOSITOR_STYLE, useNotificationMotion } from \"./motion\";\nimport { useNotificationContainerModel, NotificationListener } from \"./hooks\";\n\nfunction Toast({\n className,\n entry,\n messageClassName,\n onDismiss,\n polite,\n style,\n}: {\n className: string;\n entry: NotificationEntry;\n messageClassName: string;\n onDismiss: () => void;\n polite?: boolean;\n style?: CSSProperties;\n}) {\n const toastMotion = useNotificationMotion();\n return (\n <motion.div\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live={polite ? \"polite\" : undefined}\n aria-keyshortcuts=\"Escape\"\n tabIndex={0}\n variants={toastMotion.toast}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"exit\"\n transition={toastMotion.transition}\n style={{ ...NOTIFICATION_COMPOSITOR_STYLE, ...style }}\n className={className}\n onClick={(event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n onDismiss();\n }}\n onKeyDown={(event: KeyboardEvent<HTMLElement>) => {\n if (event.key !== \"Escape\") return;\n event.preventDefault();\n event.stopPropagation();\n onDismiss();\n }}\n >\n <div className={messageClassName}>{entry.message}</div>\n </motion.div>\n );\n}\n\nexport function NotificationContainer() {\n const { dismissNotification, isHydrated, activeEntry, theme } =\n useNotificationContainerModel();\n if (!isHydrated) return null;\n const dockElement = document.getElementById(DOCK_STACK_ELEMENT_ID);\n const toast = (className: string, polite?: boolean) => (\n <AnimatePresence mode=\"wait\">\n {activeEntry && (\n <Toast\n key={activeEntry.id}\n className={className}\n entry={activeEntry}\n messageClassName={theme.slots.toastMessage}\n polite={polite}\n style={theme.styles.toast}\n onDismiss={() => dismissNotification(activeEntry.id)}\n />\n )}\n </AnimatePresence>\n );\n if (dockElement) {\n return createPortal(\n toast(cn(theme.slots.toast, theme.slots.toastDocked), true),\n dockElement,\n );\n }\n return createPortal(\n <div\n aria-atomic=\"true\"\n aria-live=\"polite\"\n className={theme.slots.layer}\n style={theme.styles.layer}\n >\n {toast(theme.slots.toast)}\n </div>,\n document.body,\n );\n}\n\nexport function NotificationLayer() {\n return (\n <>\n <NotificationListener />\n <NotificationContainer />\n </>\n );\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport {\n defineModule,\n type PageConfig,\n type PageModuleApi,\n} from \"@/kernel\";\nimport { NotificationContext, NotificationProvider } from \"./context\";\nimport { useToast } from \"./hooks\";\nimport { NotificationLayer } from \"./overlay\";\nimport { type NotificationPageApi, type NotificationPageConfig } from \"./types\";\n\nfunction selectToastDuration(config: PageConfig): number | null {\n const notification = config.notification;\n if (typeof notification === \"number\") return notification;\n return notification?.duration ?? null;\n}\n\nfunction useNotificationPage(\n duration: number | null,\n page: PageModuleApi,\n): NotificationPageApi {\n const toast = useToast(duration);\n return useMemo(\n () => ({\n set: (notification: NotificationPageConfig) => page.set({ notification }),\n toast,\n }),\n [page, toast],\n );\n}\n\nexport const notificationModule = defineModule({\n id: \"notification\",\n context: NotificationContext,\n Provider: NotificationProvider,\n Overlay: NotificationLayer,\n page: {\n select: selectToastDuration,\n use: useNotificationPage,\n },\n});\n\ndeclare module \"@omerdlw/base-framework/kernel\" {\n interface CoreModules {\n notification: typeof notificationModule;\n }\n interface PageConfig {\n notification?: NotificationPageConfig;\n }\n}\n"]}
|