@umamichi-ui/common-components 0.3.1 → 0.3.2
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/README.md +112 -112
- package/dist/dialog/AboutDialog.d.ts +1 -1
- package/dist/dialog/AboutDialog.d.ts.map +1 -1
- package/dist/dialog/AboutDialog.js.map +1 -1
- package/dist/dialog/ConfirmDialog.d.ts +1 -1
- package/dist/dialog/ConfirmDialog.d.ts.map +1 -1
- package/dist/dialog/ConfirmDialog.js.map +1 -1
- package/dist/dialog/ConfirmDialogOverlay.d.ts +1 -1
- package/dist/dialog/ConfirmDialogOverlay.d.ts.map +1 -1
- package/dist/icons/ChevronIcons.d.ts +2 -2
- package/dist/icons/ChevronIcons.d.ts.map +1 -1
- package/dist/icons/ChevronIcons.js.map +1 -1
- package/dist/icons/DropdownMenuChevron.d.ts +1 -1
- package/dist/icons/DropdownMenuChevron.d.ts.map +1 -1
- package/dist/icons/DropdownMenuChevron.js.map +1 -1
- package/dist/icons/InfoCircleIcon.d.ts +1 -1
- package/dist/icons/InfoCircleIcon.d.ts.map +1 -1
- package/dist/icons/InfoCircleIcon.js.map +1 -1
- package/dist/menu/FloatingMenu.d.ts +1 -1
- package/dist/menu/FloatingMenu.d.ts.map +1 -1
- package/dist/menu/FloatingMenu.js.map +1 -1
- package/dist/menu/MobileActionSheet.d.ts +1 -1
- package/dist/menu/MobileActionSheet.d.ts.map +1 -1
- package/dist/menu/MobileActionSheet.js.map +1 -1
- package/dist/menu/MobileActionSheetContent.d.ts +1 -1
- package/dist/menu/MobileActionSheetContent.d.ts.map +1 -1
- package/dist/menu/MobileActionSheetContent.js.map +1 -1
- package/dist/menu/computeFloatingMenuGeometry.js.map +1 -1
- package/dist/menu/useFloatingMenuGeometry.js.map +1 -1
- package/dist/overlay/OverlayStackProvider.d.ts +1 -1
- package/dist/overlay/OverlayStackProvider.d.ts.map +1 -1
- package/dist/overlay/OverlayStackProvider.js.map +1 -1
- package/dist/overlay/overlayHistory.js.map +1 -1
- package/dist/overlay/overlayStackTypes.js.map +1 -1
- package/dist/overlay/useOverlayStackEntry.js.map +1 -1
- package/package.json +2 -2
- package/src/styles/about-dialog.css +122 -122
- package/src/styles/index.css +3 -3
- package/src/styles/mobile-action-sheet.css +167 -167
- package/src/styles/overlay.css +61 -61
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayStackProvider.d.ts","sourceRoot":"","sources":["../../src/overlay/OverlayStackProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEnF,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/B,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,2BAA2B,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,4BAA4B,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD,CAAC;AAiBF,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE
|
|
1
|
+
{"version":3,"file":"OverlayStackProvider.d.ts","sourceRoot":"","sources":["../../src/overlay/OverlayStackProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEnF,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC7C,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/B,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,2BAA2B,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,4BAA4B,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD,CAAC;AAiBF,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAuHzE;AAED,wBAAgB,eAAe,6BAQ9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayStackProvider.js","sources":["../../src/overlay/OverlayStackProvider.tsx"],"sourcesContent":["import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from 'react';\nimport { pushOverlayHistoryState } from './overlayHistory';\nimport { computeOverlayZIndex, type OverlayStackEntry } from './overlayStackTypes';\n\ntype OverlayStackContextValue = {\n register: (entry: OverlayStackEntry) => void;\n unregister: (id: string) => void;\n isTop: (id: string) => boolean;\n getZIndex: (id: string) => number;\n pushOverlayHistory: (id: string) => void;\n syncOverlayHistoryOnUiClose: (id: string) => void;\n acknowledgeOverlayHistoryPop: (id: string) => void;\n};\n\nconst OverlayStackContext = createContext<OverlayStackContextValue | null>(null);\n\nconst isEditableTarget = (target: EventTarget | null) => {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n\n return (\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement ||\n target.isContentEditable\n );\n};\n\nexport function OverlayStackProvider({ children }: { children: ReactNode }) {\n const entriesRef = useRef(new Map<string, OverlayStackEntry>());\n const orderRef = useRef<string[]>([]);\n const historyActiveIdsRef = useRef(new Set<string>());\n const ignoreNextPopstateRef = useRef(false);\n const [order, setOrder] = useState<string[]>([]);\n\n orderRef.current = order;\n\n const register = useCallback((entry: OverlayStackEntry) => {\n entriesRef.current.set(entry.id, entry);\n setOrder((prev) => {\n const without = prev.filter((entryId) => entryId !== entry.id);\n return [...without, entry.id];\n });\n }, []);\n\n const unregister = useCallback((id: string) => {\n entriesRef.current.delete(id);\n setOrder((prev) => prev.filter((entryId) => entryId !== id));\n }, []);\n\n const pushOverlayHistory = useCallback((id: string) => {\n if (historyActiveIdsRef.current.has(id)) {\n return;\n }\n\n historyActiveIdsRef.current.add(id);\n pushOverlayHistoryState(id);\n }, []);\n\n const syncOverlayHistoryOnUiClose = useCallback((id: string) => {\n if (!historyActiveIdsRef.current.has(id)) {\n return;\n }\n\n historyActiveIdsRef.current.delete(id);\n ignoreNextPopstateRef.current = true;\n history.back();\n }, []);\n\n const acknowledgeOverlayHistoryPop = useCallback((id: string) => {\n historyActiveIdsRef.current.delete(id);\n }, []);\n\n const topId = order[order.length - 1] ?? null;\n\n const value = useMemo<OverlayStackContextValue>(\n () => ({\n register,\n unregister,\n isTop: (id) => topId === id,\n getZIndex: (id) => {\n const index = order.indexOf(id);\n return computeOverlayZIndex(index < 0 ? 0 : index);\n },\n pushOverlayHistory,\n syncOverlayHistoryOnUiClose,\n acknowledgeOverlayHistoryPop,\n }),\n [\n acknowledgeOverlayHistoryPop,\n order,\n pushOverlayHistory,\n register,\n syncOverlayHistoryOnUiClose,\n topId,\n unregister,\n ],\n );\n\n useEffect(() => {\n const onPopState = () => {\n if (ignoreNextPopstateRef.current) {\n ignoreNextPopstateRef.current = false;\n return;\n }\n\n const top = orderRef.current[orderRef.current.length - 1];\n\n if (!top) {\n return;\n }\n\n const entry = entriesRef.current.get(top);\n\n if (!entry) {\n return;\n }\n\n acknowledgeOverlayHistoryPop(top);\n entry.onDismiss();\n };\n\n window.addEventListener('popstate', onPopState);\n return () => window.removeEventListener('popstate', onPopState);\n }, [acknowledgeOverlayHistoryPop]);\n\n useEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || isEditableTarget(event.target)) {\n return;\n }\n\n const top = topId ? entriesRef.current.get(topId) : undefined;\n\n if (!top || top.dismissOnEscape === false) {\n return;\n }\n\n event.preventDefault();\n top.onDismiss();\n };\n\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [topId]);\n\n return <OverlayStackContext.Provider value={value}>{children}</OverlayStackContext.Provider>;\n}\n\nexport function useOverlayStack() {\n const context = useContext(OverlayStackContext);\n\n if (!context) {\n throw new Error('useOverlayStack must be used within OverlayStackProvider');\n }\n\n return context;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OverlayStackProvider.js","sources":["../../src/overlay/OverlayStackProvider.tsx"],"sourcesContent":["import {\r\n createContext,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n type ReactNode,\r\n} from 'react';\r\nimport { pushOverlayHistoryState } from './overlayHistory';\r\nimport { computeOverlayZIndex, type OverlayStackEntry } from './overlayStackTypes';\r\n\r\ntype OverlayStackContextValue = {\r\n register: (entry: OverlayStackEntry) => void;\r\n unregister: (id: string) => void;\r\n isTop: (id: string) => boolean;\r\n getZIndex: (id: string) => number;\r\n pushOverlayHistory: (id: string) => void;\r\n syncOverlayHistoryOnUiClose: (id: string) => void;\r\n acknowledgeOverlayHistoryPop: (id: string) => void;\r\n};\r\n\r\nconst OverlayStackContext = createContext<OverlayStackContextValue | null>(null);\r\n\r\nconst isEditableTarget = (target: EventTarget | null) => {\r\n if (!(target instanceof HTMLElement)) {\r\n return false;\r\n }\r\n\r\n return (\r\n target instanceof HTMLInputElement ||\r\n target instanceof HTMLTextAreaElement ||\r\n target instanceof HTMLSelectElement ||\r\n target.isContentEditable\r\n );\r\n};\r\n\r\nexport function OverlayStackProvider({ children }: { children: ReactNode }) {\r\n const entriesRef = useRef(new Map<string, OverlayStackEntry>());\r\n const orderRef = useRef<string[]>([]);\r\n const historyActiveIdsRef = useRef(new Set<string>());\r\n const ignoreNextPopstateRef = useRef(false);\r\n const [order, setOrder] = useState<string[]>([]);\r\n\r\n orderRef.current = order;\r\n\r\n const register = useCallback((entry: OverlayStackEntry) => {\r\n entriesRef.current.set(entry.id, entry);\r\n setOrder((prev) => {\r\n const without = prev.filter((entryId) => entryId !== entry.id);\r\n return [...without, entry.id];\r\n });\r\n }, []);\r\n\r\n const unregister = useCallback((id: string) => {\r\n entriesRef.current.delete(id);\r\n setOrder((prev) => prev.filter((entryId) => entryId !== id));\r\n }, []);\r\n\r\n const pushOverlayHistory = useCallback((id: string) => {\r\n if (historyActiveIdsRef.current.has(id)) {\r\n return;\r\n }\r\n\r\n historyActiveIdsRef.current.add(id);\r\n pushOverlayHistoryState(id);\r\n }, []);\r\n\r\n const syncOverlayHistoryOnUiClose = useCallback((id: string) => {\r\n if (!historyActiveIdsRef.current.has(id)) {\r\n return;\r\n }\r\n\r\n historyActiveIdsRef.current.delete(id);\r\n ignoreNextPopstateRef.current = true;\r\n history.back();\r\n }, []);\r\n\r\n const acknowledgeOverlayHistoryPop = useCallback((id: string) => {\r\n historyActiveIdsRef.current.delete(id);\r\n }, []);\r\n\r\n const topId = order[order.length - 1] ?? null;\r\n\r\n const value = useMemo<OverlayStackContextValue>(\r\n () => ({\r\n register,\r\n unregister,\r\n isTop: (id) => topId === id,\r\n getZIndex: (id) => {\r\n const index = order.indexOf(id);\r\n return computeOverlayZIndex(index < 0 ? 0 : index);\r\n },\r\n pushOverlayHistory,\r\n syncOverlayHistoryOnUiClose,\r\n acknowledgeOverlayHistoryPop,\r\n }),\r\n [\r\n acknowledgeOverlayHistoryPop,\r\n order,\r\n pushOverlayHistory,\r\n register,\r\n syncOverlayHistoryOnUiClose,\r\n topId,\r\n unregister,\r\n ],\r\n );\r\n\r\n useEffect(() => {\r\n const onPopState = () => {\r\n if (ignoreNextPopstateRef.current) {\r\n ignoreNextPopstateRef.current = false;\r\n return;\r\n }\r\n\r\n const top = orderRef.current[orderRef.current.length - 1];\r\n\r\n if (!top) {\r\n return;\r\n }\r\n\r\n const entry = entriesRef.current.get(top);\r\n\r\n if (!entry) {\r\n return;\r\n }\r\n\r\n acknowledgeOverlayHistoryPop(top);\r\n entry.onDismiss();\r\n };\r\n\r\n window.addEventListener('popstate', onPopState);\r\n return () => window.removeEventListener('popstate', onPopState);\r\n }, [acknowledgeOverlayHistoryPop]);\r\n\r\n useEffect(() => {\r\n const onKeyDown = (event: KeyboardEvent) => {\r\n if (event.key !== 'Escape' || isEditableTarget(event.target)) {\r\n return;\r\n }\r\n\r\n const top = topId ? entriesRef.current.get(topId) : undefined;\r\n\r\n if (!top || top.dismissOnEscape === false) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n top.onDismiss();\r\n };\r\n\r\n window.addEventListener('keydown', onKeyDown);\r\n return () => window.removeEventListener('keydown', onKeyDown);\r\n }, [topId]);\r\n\r\n return <OverlayStackContext.Provider value={value}>{children}</OverlayStackContext.Provider>;\r\n}\r\n\r\nexport function useOverlayStack() {\r\n const context = useContext(OverlayStackContext);\r\n\r\n if (!context) {\r\n throw new Error('useOverlayStack must be used within OverlayStackProvider');\r\n }\r\n\r\n return context;\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlayHistory.js","sources":["../../src/overlay/overlayHistory.ts"],"sourcesContent":["/** `history.state` 上标记叠层条目的键,用于区分站内叠层与正常导航。 */\nexport const OVERLAY_HISTORY_STATE_KEY = 'overlayStack' as const;\n\nexport type OverlayHistoryState = {\n [OVERLAY_HISTORY_STATE_KEY]: string;\n};\n\nexport function isOverlayHistoryState(state: unknown): state is OverlayHistoryState {\n return (\n typeof state === 'object' &&\n state !== null &&\n OVERLAY_HISTORY_STATE_KEY in state &&\n typeof (state as OverlayHistoryState)[OVERLAY_HISTORY_STATE_KEY] === 'string'\n );\n}\n\nexport function pushOverlayHistoryState(overlayId: string) {\n const next: OverlayHistoryState = { [OVERLAY_HISTORY_STATE_KEY]: overlayId };\n history.pushState(next, '', window.location.href);\n}\n"],"names":[],"mappings":"AACO,MAAM,4BAA4B;AAMlC,SAAS,sBAAsB,OAA8C;AAClF,SACE,OAAO,UAAU,YACjB,UAAU,QACV,6BAA6B,SAC7B,OAAQ,MAA8B,yBAAyB,MAAM;AAEzE;AAEO,SAAS,wBAAwB,WAAmB;AACzD,QAAM,OAA4B,EAAE,CAAC,yBAAyB,GAAG,UAAA;AACjE,UAAQ,UAAU,MAAM,IAAI,OAAO,SAAS,IAAI;AAClD;"}
|
|
1
|
+
{"version":3,"file":"overlayHistory.js","sources":["../../src/overlay/overlayHistory.ts"],"sourcesContent":["/** `history.state` 上标记叠层条目的键,用于区分站内叠层与正常导航。 */\r\nexport const OVERLAY_HISTORY_STATE_KEY = 'overlayStack' as const;\r\n\r\nexport type OverlayHistoryState = {\r\n [OVERLAY_HISTORY_STATE_KEY]: string;\r\n};\r\n\r\nexport function isOverlayHistoryState(state: unknown): state is OverlayHistoryState {\r\n return (\r\n typeof state === 'object' &&\r\n state !== null &&\r\n OVERLAY_HISTORY_STATE_KEY in state &&\r\n typeof (state as OverlayHistoryState)[OVERLAY_HISTORY_STATE_KEY] === 'string'\r\n );\r\n}\r\n\r\nexport function pushOverlayHistoryState(overlayId: string) {\r\n const next: OverlayHistoryState = { [OVERLAY_HISTORY_STATE_KEY]: overlayId };\r\n history.pushState(next, '', window.location.href);\r\n}\r\n"],"names":[],"mappings":"AACO,MAAM,4BAA4B;AAMlC,SAAS,sBAAsB,OAA8C;AAClF,SACE,OAAO,UAAU,YACjB,UAAU,QACV,6BAA6B,SAC7B,OAAQ,MAA8B,yBAAyB,MAAM;AAEzE;AAEO,SAAS,wBAAwB,WAAmB;AACzD,QAAM,OAA4B,EAAE,CAAC,yBAAyB,GAAG,UAAA;AACjE,UAAQ,UAAU,MAAM,IAAI,OAAO,SAAS,IAAI;AAClD;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlayStackTypes.js","sources":["../../src/overlay/overlayStackTypes.ts"],"sourcesContent":["/** 叠层 z-index:1010 + 栈内序号 × 10(序号从 0 起) */\nexport const OVERLAY_Z_BASE = 1010;\nexport const OVERLAY_Z_STEP = 10;\n\nexport type OverlayStackEntry = {\n id: string;\n onDismiss: () => void;\n dismissOnEscape: boolean;\n};\n\nexport const computeOverlayZIndex = (stackIndex: number) => OVERLAY_Z_BASE + stackIndex * OVERLAY_Z_STEP;\n"],"names":[],"mappings":"AACO,MAAM,iBAAiB;AACvB,MAAM,iBAAiB;AAQvB,MAAM,uBAAuB,CAAC,eAAuB,iBAAiB,aAAa;"}
|
|
1
|
+
{"version":3,"file":"overlayStackTypes.js","sources":["../../src/overlay/overlayStackTypes.ts"],"sourcesContent":["/** 叠层 z-index:1010 + 栈内序号 × 10(序号从 0 起) */\r\nexport const OVERLAY_Z_BASE = 1010;\r\nexport const OVERLAY_Z_STEP = 10;\r\n\r\nexport type OverlayStackEntry = {\r\n id: string;\r\n onDismiss: () => void;\r\n dismissOnEscape: boolean;\r\n};\r\n\r\nexport const computeOverlayZIndex = (stackIndex: number) => OVERLAY_Z_BASE + stackIndex * OVERLAY_Z_STEP;\r\n"],"names":[],"mappings":"AACO,MAAM,iBAAiB;AACvB,MAAM,iBAAiB;AAQvB,MAAM,uBAAuB,CAAC,eAAuB,iBAAiB,aAAa;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOverlayStackEntry.js","sources":["../../src/overlay/useOverlayStackEntry.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { useOverlayStack } from './OverlayStackProvider';\n\nexport type UseOverlayStackEntryOptions = {\n id: string;\n open: boolean;\n onDismiss: () => void;\n dismissOnEscape?: boolean;\n};\n\nexport function useOverlayStackEntry({\n id,\n open,\n onDismiss,\n dismissOnEscape = true,\n}: UseOverlayStackEntryOptions) {\n const {\n register,\n unregister,\n isTop,\n getZIndex,\n pushOverlayHistory,\n syncOverlayHistoryOnUiClose,\n } = useOverlayStack();\n const onDismissRef = useRef(onDismiss);\n const openRef = useRef(open);\n onDismissRef.current = onDismiss;\n openRef.current = open;\n\n useEffect(() => {\n if (!open) {\n return;\n }\n\n register({\n id,\n onDismiss: () => onDismissRef.current(),\n dismissOnEscape,\n });\n\n return () => {\n unregister(id);\n };\n }, [dismissOnEscape, id, open, register, unregister]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n\n pushOverlayHistory(id);\n\n return () => {\n queueMicrotask(() => {\n if (!openRef.current) {\n syncOverlayHistoryOnUiClose(id);\n }\n });\n };\n }, [id, open, pushOverlayHistory, syncOverlayHistoryOnUiClose]);\n\n return {\n isBackdropActive: open && isTop(id),\n zIndex: getZIndex(id),\n };\n}\n"],"names":[],"mappings":";;AAUO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AACpB,GAAgC;AAC9B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE,gBAAA;AACJ,QAAM,eAAe,OAAO,SAAS;AACrC,QAAM,UAAU,OAAO,IAAI;AAC3B,eAAa,UAAU;AACvB,UAAQ,UAAU;AAElB,YAAU,MAAM;AACd,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AAEA,aAAS;AAAA,MACP;AAAA,MACA,WAAW,MAAM,aAAa,QAAA;AAAA,MAC9B;AAAA,IAAA,CACD;AAED,WAAO,MAAM;AACX,iBAAW,EAAE;AAAA,IACf;AAAA,EACF,GAAG,CAAC,iBAAiB,IAAI,MAAM,UAAU,UAAU,CAAC;AAEpD,YAAU,MAAM;AACd,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AAEA,uBAAmB,EAAE;AAErB,WAAO,MAAM;AACX,qBAAe,MAAM;AACnB,YAAI,CAAC,QAAQ,SAAS;AACpB,sCAA4B,EAAE;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,IAAI,MAAM,oBAAoB,2BAA2B,CAAC;AAE9D,SAAO;AAAA,IACL,kBAAkB,QAAQ,MAAM,EAAE;AAAA,IAClC,QAAQ,UAAU,EAAE;AAAA,EAAA;AAExB;"}
|
|
1
|
+
{"version":3,"file":"useOverlayStackEntry.js","sources":["../../src/overlay/useOverlayStackEntry.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\r\nimport { useOverlayStack } from './OverlayStackProvider';\r\n\r\nexport type UseOverlayStackEntryOptions = {\r\n id: string;\r\n open: boolean;\r\n onDismiss: () => void;\r\n dismissOnEscape?: boolean;\r\n};\r\n\r\nexport function useOverlayStackEntry({\r\n id,\r\n open,\r\n onDismiss,\r\n dismissOnEscape = true,\r\n}: UseOverlayStackEntryOptions) {\r\n const {\r\n register,\r\n unregister,\r\n isTop,\r\n getZIndex,\r\n pushOverlayHistory,\r\n syncOverlayHistoryOnUiClose,\r\n } = useOverlayStack();\r\n const onDismissRef = useRef(onDismiss);\r\n const openRef = useRef(open);\r\n onDismissRef.current = onDismiss;\r\n openRef.current = open;\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n return;\r\n }\r\n\r\n register({\r\n id,\r\n onDismiss: () => onDismissRef.current(),\r\n dismissOnEscape,\r\n });\r\n\r\n return () => {\r\n unregister(id);\r\n };\r\n }, [dismissOnEscape, id, open, register, unregister]);\r\n\r\n useEffect(() => {\r\n if (!open) {\r\n return;\r\n }\r\n\r\n pushOverlayHistory(id);\r\n\r\n return () => {\r\n queueMicrotask(() => {\r\n if (!openRef.current) {\r\n syncOverlayHistoryOnUiClose(id);\r\n }\r\n });\r\n };\r\n }, [id, open, pushOverlayHistory, syncOverlayHistoryOnUiClose]);\r\n\r\n return {\r\n isBackdropActive: open && isTop(id),\r\n zIndex: getZIndex(id),\r\n };\r\n}\r\n"],"names":[],"mappings":";;AAUO,SAAS,qBAAqB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AACpB,GAAgC;AAC9B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE,gBAAA;AACJ,QAAM,eAAe,OAAO,SAAS;AACrC,QAAM,UAAU,OAAO,IAAI;AAC3B,eAAa,UAAU;AACvB,UAAQ,UAAU;AAElB,YAAU,MAAM;AACd,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AAEA,aAAS;AAAA,MACP;AAAA,MACA,WAAW,MAAM,aAAa,QAAA;AAAA,MAC9B;AAAA,IAAA,CACD;AAED,WAAO,MAAM;AACX,iBAAW,EAAE;AAAA,IACf;AAAA,EACF,GAAG,CAAC,iBAAiB,IAAI,MAAM,UAAU,UAAU,CAAC;AAEpD,YAAU,MAAM;AACd,QAAI,CAAC,MAAM;AACT;AAAA,IACF;AAEA,uBAAmB,EAAE;AAErB,WAAO,MAAM;AACX,qBAAe,MAAM;AACnB,YAAI,CAAC,QAAQ,SAAS;AACpB,sCAA4B,EAAE;AAAA,QAChC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,IAAI,MAAM,oBAAoB,2BAA2B,CAAC;AAE9D,SAAO;AAAA,IACL,kBAAkB,QAAQ,MAAM,EAAE;AAAA,IAClC,QAAQ,UAAU,EAAE;AAAA,EAAA;AAExB;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umamichi-ui/common-components",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Reusable React UI components for Umamichi sites (overlay stack, dialogs, menus)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"devDependencies": {
|
|
71
71
|
"@types/react": "^19.2.2",
|
|
72
72
|
"@types/react-dom": "^19.2.2",
|
|
73
|
-
"@umamichi-ui/common-css": "^0.
|
|
73
|
+
"@umamichi-ui/common-css": "^0.18.0",
|
|
74
74
|
"@vitejs/plugin-react": "^5.1.0",
|
|
75
75
|
"react": "^19.2.0",
|
|
76
76
|
"react-dom": "^19.2.0",
|
|
@@ -1,122 +1,122 @@
|
|
|
1
|
-
.about-dialog {
|
|
2
|
-
width: min(calc(100vw - 48px), 36rem);
|
|
3
|
-
max-width: min(calc(100vw - 48px), 36rem);
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.about-dialog-body {
|
|
7
|
-
display: flex;
|
|
8
|
-
flex-direction: column;
|
|
9
|
-
gap: 0;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
.about-dialog-product {
|
|
13
|
-
text-align: center;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.about-dialog-app-name {
|
|
17
|
-
margin: 0 0 6px;
|
|
18
|
-
font-size: 1.05rem;
|
|
19
|
-
font-weight: var(--site-weight-regular);
|
|
20
|
-
line-height: 1.35;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.about-dialog-version {
|
|
24
|
-
margin: 0 0 10px;
|
|
25
|
-
color: var(--site-muted-fg);
|
|
26
|
-
font-size: 0.875rem;
|
|
27
|
-
font-weight: var(--site-weight-regular);
|
|
28
|
-
line-height: 1.4;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.about-dialog-channel {
|
|
32
|
-
color: var(--site-subtle-fg);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.about-dialog-tagline {
|
|
36
|
-
margin: 0;
|
|
37
|
-
color: var(--site-content-fg);
|
|
38
|
-
font-size: 0.9rem;
|
|
39
|
-
font-weight: var(--site-weight-regular);
|
|
40
|
-
line-height: 1.55;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.about-dialog-copyright {
|
|
44
|
-
margin: 14px 0 0;
|
|
45
|
-
text-align: center;
|
|
46
|
-
color: var(--site-muted-fg);
|
|
47
|
-
font-size: 0.86rem;
|
|
48
|
-
font-weight: var(--site-weight-regular);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.about-dialog-divider {
|
|
52
|
-
margin: 16px 0;
|
|
53
|
-
border: 0;
|
|
54
|
-
border-top: 1px solid var(--site-border);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.about-dialog-section + .about-dialog-section {
|
|
58
|
-
margin-top: 14px;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.about-dialog-section-title {
|
|
62
|
-
margin: 0 0 6px;
|
|
63
|
-
font-size: 0.82rem;
|
|
64
|
-
font-weight: var(--site-weight-semibold);
|
|
65
|
-
letter-spacing: 0.04em;
|
|
66
|
-
color: var(--site-subtle-fg);
|
|
67
|
-
text-transform: uppercase;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
.about-dialog-section-text {
|
|
71
|
-
margin: 0;
|
|
72
|
-
font-size: 0.9rem;
|
|
73
|
-
font-weight: var(--site-weight-regular);
|
|
74
|
-
line-height: 1.55;
|
|
75
|
-
color: var(--site-content-fg);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
.about-dialog-meta {
|
|
79
|
-
margin: 14px 0 0;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.about-dialog-meta-row {
|
|
83
|
-
display: grid;
|
|
84
|
-
grid-template-columns: 5.5rem minmax(0, 1fr);
|
|
85
|
-
gap: 8px 12px;
|
|
86
|
-
align-items: baseline;
|
|
87
|
-
font-size: 0.875rem;
|
|
88
|
-
font-weight: var(--site-weight-regular);
|
|
89
|
-
line-height: 1.45;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
.about-dialog-meta-row + .about-dialog-meta-row {
|
|
93
|
-
margin-top: 8px;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
.about-dialog-meta dt {
|
|
97
|
-
margin: 0;
|
|
98
|
-
color: var(--site-muted-fg);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
.about-dialog-meta dd {
|
|
102
|
-
margin: 0;
|
|
103
|
-
overflow-wrap: anywhere;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
.about-dialog-meta-row:first-child dd a {
|
|
107
|
-
white-space: nowrap;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
@media (max-width: 560px) {
|
|
111
|
-
.about-dialog-meta-row:first-child dd a {
|
|
112
|
-
white-space: normal;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.about-dialog-actions {
|
|
117
|
-
justify-content: center;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
.about-dialog-actions .primary-button {
|
|
121
|
-
min-width: 6.5rem;
|
|
122
|
-
}
|
|
1
|
+
.about-dialog {
|
|
2
|
+
width: min(calc(100vw - 48px), 36rem);
|
|
3
|
+
max-width: min(calc(100vw - 48px), 36rem);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.about-dialog-body {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
gap: 0;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.about-dialog-product {
|
|
13
|
+
text-align: center;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.about-dialog-app-name {
|
|
17
|
+
margin: 0 0 6px;
|
|
18
|
+
font-size: 1.05rem;
|
|
19
|
+
font-weight: var(--site-weight-regular);
|
|
20
|
+
line-height: 1.35;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.about-dialog-version {
|
|
24
|
+
margin: 0 0 10px;
|
|
25
|
+
color: var(--site-muted-fg);
|
|
26
|
+
font-size: 0.875rem;
|
|
27
|
+
font-weight: var(--site-weight-regular);
|
|
28
|
+
line-height: 1.4;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.about-dialog-channel {
|
|
32
|
+
color: var(--site-subtle-fg);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.about-dialog-tagline {
|
|
36
|
+
margin: 0;
|
|
37
|
+
color: var(--site-content-fg);
|
|
38
|
+
font-size: 0.9rem;
|
|
39
|
+
font-weight: var(--site-weight-regular);
|
|
40
|
+
line-height: 1.55;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.about-dialog-copyright {
|
|
44
|
+
margin: 14px 0 0;
|
|
45
|
+
text-align: center;
|
|
46
|
+
color: var(--site-muted-fg);
|
|
47
|
+
font-size: 0.86rem;
|
|
48
|
+
font-weight: var(--site-weight-regular);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.about-dialog-divider {
|
|
52
|
+
margin: 16px 0;
|
|
53
|
+
border: 0;
|
|
54
|
+
border-top: 1px solid var(--site-border);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.about-dialog-section + .about-dialog-section {
|
|
58
|
+
margin-top: 14px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.about-dialog-section-title {
|
|
62
|
+
margin: 0 0 6px;
|
|
63
|
+
font-size: 0.82rem;
|
|
64
|
+
font-weight: var(--site-weight-semibold);
|
|
65
|
+
letter-spacing: 0.04em;
|
|
66
|
+
color: var(--site-subtle-fg);
|
|
67
|
+
text-transform: uppercase;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.about-dialog-section-text {
|
|
71
|
+
margin: 0;
|
|
72
|
+
font-size: 0.9rem;
|
|
73
|
+
font-weight: var(--site-weight-regular);
|
|
74
|
+
line-height: 1.55;
|
|
75
|
+
color: var(--site-content-fg);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.about-dialog-meta {
|
|
79
|
+
margin: 14px 0 0;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.about-dialog-meta-row {
|
|
83
|
+
display: grid;
|
|
84
|
+
grid-template-columns: 5.5rem minmax(0, 1fr);
|
|
85
|
+
gap: 8px 12px;
|
|
86
|
+
align-items: baseline;
|
|
87
|
+
font-size: 0.875rem;
|
|
88
|
+
font-weight: var(--site-weight-regular);
|
|
89
|
+
line-height: 1.45;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.about-dialog-meta-row + .about-dialog-meta-row {
|
|
93
|
+
margin-top: 8px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.about-dialog-meta dt {
|
|
97
|
+
margin: 0;
|
|
98
|
+
color: var(--site-muted-fg);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.about-dialog-meta dd {
|
|
102
|
+
margin: 0;
|
|
103
|
+
overflow-wrap: anywhere;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.about-dialog-meta-row:first-child dd a {
|
|
107
|
+
white-space: nowrap;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@media (max-width: 560px) {
|
|
111
|
+
.about-dialog-meta-row:first-child dd a {
|
|
112
|
+
white-space: normal;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.about-dialog-actions {
|
|
117
|
+
justify-content: center;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.about-dialog-actions .primary-button {
|
|
121
|
+
min-width: 6.5rem;
|
|
122
|
+
}
|
package/src/styles/index.css
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
@import './overlay.css';
|
|
2
|
-
@import './mobile-action-sheet.css';
|
|
3
|
-
@import './about-dialog.css';
|
|
1
|
+
@import './overlay.css';
|
|
2
|
+
@import './mobile-action-sheet.css';
|
|
3
|
+
@import './about-dialog.css';
|