@optilogic/core 1.4.0 → 1.5.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/index.cjs CHANGED
@@ -2129,7 +2129,9 @@ function Modal({
2129
2129
  size = "md",
2130
2130
  zIndex = 50,
2131
2131
  className,
2132
- contentClassName
2132
+ contentClassName,
2133
+ responsive = false,
2134
+ forceMobile = false
2133
2135
  }) {
2134
2136
  React20__namespace.useEffect(() => {
2135
2137
  if (!isOpen) return;
@@ -2160,10 +2162,18 @@ function Modal({
2160
2162
  "2xl": "max-w-6xl",
2161
2163
  full: "max-w-[95vw]"
2162
2164
  };
2165
+ const responsiveOuter = "[@media(pointer:coarse)and(hover:none)]:!p-0";
2166
+ const responsiveFrame = "[@media(pointer:coarse)and(hover:none)]:!w-screen [@media(pointer:coarse)and(hover:none)]:!h-[100dvh] [@media(pointer:coarse)and(hover:none)]:!max-h-[100dvh] [@media(pointer:coarse)and(hover:none)]:!max-w-none [@media(pointer:coarse)and(hover:none)]:!rounded-none [@media(pointer:coarse)and(hover:none)]:!border-0";
2167
+ const forcedOuter = "!p-0";
2168
+ const forcedFrame = "!w-screen !h-[100dvh] !max-h-[100dvh] !max-w-none !rounded-none !border-0";
2163
2169
  return /* @__PURE__ */ jsxRuntime.jsxs(
2164
2170
  "div",
2165
2171
  {
2166
- className: "fixed inset-0 flex items-center justify-center p-4",
2172
+ className: cn(
2173
+ "fixed inset-0 flex items-center justify-center p-4",
2174
+ responsive && responsiveOuter,
2175
+ forceMobile && forcedOuter
2176
+ ),
2167
2177
  style: { zIndex },
2168
2178
  onClick: onClose,
2169
2179
  children: [
@@ -2177,6 +2187,8 @@ function Modal({
2177
2187
  "flex flex-col",
2178
2188
  "max-h-[90vh]",
2179
2189
  sizeClasses[size],
2190
+ responsive && responsiveFrame,
2191
+ forceMobile && forcedFrame,
2180
2192
  contentClassName
2181
2193
  ),
2182
2194
  onClick: (e) => e.stopPropagation(),
@@ -2222,6 +2234,27 @@ function ModalButton({
2222
2234
  }
2223
2235
  );
2224
2236
  }
2237
+ var mobileSheetContentClasses = [
2238
+ "[@media(pointer:coarse)and(hover:none)]:!top-auto",
2239
+ "[@media(pointer:coarse)and(hover:none)]:!bottom-0",
2240
+ "[@media(pointer:coarse)and(hover:none)]:!left-0",
2241
+ "[@media(pointer:coarse)and(hover:none)]:!translate-x-0",
2242
+ "[@media(pointer:coarse)and(hover:none)]:!translate-y-0",
2243
+ "[@media(pointer:coarse)and(hover:none)]:!w-screen",
2244
+ "[@media(pointer:coarse)and(hover:none)]:!max-w-none",
2245
+ "[@media(pointer:coarse)and(hover:none)]:!rounded-t-xl",
2246
+ "[@media(pointer:coarse)and(hover:none)]:!rounded-b-none",
2247
+ "[@media(pointer:coarse)and(hover:none)]:!pb-[calc(1.5rem+env(safe-area-inset-bottom))]"
2248
+ ].join(" ");
2249
+ var mobileSheetFooterClasses = [
2250
+ // Stack buttons full-width with comfortable tap targets on touch devices.
2251
+ "[@media(pointer:coarse)and(hover:none)]:!flex-col",
2252
+ "[@media(pointer:coarse)and(hover:none)]:!gap-2"
2253
+ ].join(" ");
2254
+ var mobileSheetActionClasses = [
2255
+ "[@media(pointer:coarse)and(hover:none)]:!w-full",
2256
+ "[@media(pointer:coarse)and(hover:none)]:!min-h-11"
2257
+ ].join(" ");
2225
2258
  function ConfirmationModal({
2226
2259
  open,
2227
2260
  onOpenChange,
@@ -2241,18 +2274,28 @@ function ConfirmationModal({
2241
2274
  onConfirm();
2242
2275
  onOpenChange(false);
2243
2276
  };
2244
- return /* @__PURE__ */ jsxRuntime.jsx(AlertDialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(AlertDialogContent, { children: [
2277
+ return /* @__PURE__ */ jsxRuntime.jsx(AlertDialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(AlertDialogContent, { className: mobileSheetContentClasses, children: [
2245
2278
  /* @__PURE__ */ jsxRuntime.jsxs(AlertDialogHeader, { children: [
2246
2279
  /* @__PURE__ */ jsxRuntime.jsx(AlertDialogTitle, { children: title }),
2247
2280
  /* @__PURE__ */ jsxRuntime.jsx(AlertDialogDescription, { children: description })
2248
2281
  ] }),
2249
- /* @__PURE__ */ jsxRuntime.jsxs(AlertDialogFooter, { children: [
2250
- /* @__PURE__ */ jsxRuntime.jsx(AlertDialogCancel, { onClick: handleCancel, children: cancelLabel }),
2282
+ /* @__PURE__ */ jsxRuntime.jsxs(AlertDialogFooter, { className: mobileSheetFooterClasses, children: [
2283
+ /* @__PURE__ */ jsxRuntime.jsx(
2284
+ AlertDialogCancel,
2285
+ {
2286
+ onClick: handleCancel,
2287
+ className: mobileSheetActionClasses,
2288
+ children: cancelLabel
2289
+ }
2290
+ ),
2251
2291
  /* @__PURE__ */ jsxRuntime.jsx(
2252
2292
  AlertDialogAction,
2253
2293
  {
2254
2294
  onClick: handleConfirm,
2255
- className: destructive ? "bg-destructive text-destructive-foreground hover:bg-destructive/90" : void 0,
2295
+ className: [
2296
+ destructive ? "bg-destructive text-destructive-foreground hover:bg-destructive/90" : "",
2297
+ mobileSheetActionClasses
2298
+ ].filter(Boolean).join(" "),
2256
2299
  children: confirmLabel
2257
2300
  }
2258
2301
  )