@boyernick/standard-ui-react 0.4.2-canary.54 → 0.4.2-canary.56

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boyernick/standard-ui-react",
3
- "version": "0.4.2-canary.54",
3
+ "version": "0.4.2-canary.56",
4
4
  "description": "React components for StandardUI",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/carousel.tsx CHANGED
@@ -80,7 +80,8 @@ export type CarouselDotsProps = ComponentProps<"div">
80
80
 
81
81
  const carouselControlClassName = cn(
82
82
  "absolute z-20 !size-6 glass text-fg-primary [&_svg:not([class*='size-'])]:!size-3.5",
83
- "hover:brightness-105 hover:text-fg-primary",
83
+ // The ghost button's page-grey hover fill would show through the lens.
84
+ "hover:bg-transparent hover:brightness-105 hover:text-fg-primary",
84
85
  "disabled:pointer-events-none disabled:opacity-0",
85
86
  motion.colors,
86
87
  )
package/src/modal.tsx CHANGED
@@ -51,8 +51,10 @@ import {
51
51
  const TRACKPAD_LABEL =
52
52
  "Swipe, use the arrow keys, or use the controls to navigate"
53
53
 
54
+ // Glass takes a glass hover: the lens brightens. The ghost button's own
55
+ // hover fill is a page grey and is cleared, or it shows through the body.
54
56
  const modalControlClassName =
55
- "glass glass-dark text-fg-scrim hover:text-fg-scrim outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-offset-1 focus-visible:ring-offset-surface-scrim focus-visible:ring-ring/20"
57
+ "glass glass-dark hover:bg-transparent hover:brightness-150 text-fg-scrim hover:text-fg-scrim outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-offset-1 focus-visible:ring-offset-surface-scrim focus-visible:ring-ring/20"
56
58
 
57
59
  export const modalContentVariants = cva(
58
60
  "h-dvh max-h-dvh w-screen max-w-none gap-0 overflow-hidden rounded-none border-0 bg-transparent p-0 shadow-none max-sm:max-w-none",
package/src/table.tsx CHANGED
@@ -72,7 +72,9 @@ export const Table = ({
72
72
  }: TableProps) => (
73
73
  <div
74
74
  className={cn(
75
- "w-full overflow-auto rounded-lg border border-border-primary bg-surface",
75
+ // rounded-2xl, the image frame's radius, so a table and an image on the
76
+ // same page share one corner.
77
+ "w-full overflow-auto rounded-2xl border border-border-primary bg-surface",
76
78
  containerClassName,
77
79
  )}
78
80
  >
@@ -43,10 +43,13 @@ const formatTime = (seconds: number) => {
43
43
  * could lean on the bar for presence and sat at 28.
44
44
  *
45
45
  * No hover background: the material *is* the background, and a translucent
46
- * white wash over it fights the fill and the rim. Brightness lifts the whole
47
- * object instead, the way a lit surface actually behaves. */
46
+ * white wash over it fights the fill and the rim. The lens brightens instead,
47
+ * by the same step as the image modal's glass controls.
48
+ *
49
+ * No drop shadow on any glass here: the material draws its shape with the
50
+ * rim, and `shadow-lg` would add its own hairline ring over it. */
48
51
  const overlayControl =
49
- "glass glass-dark [--glass-alpha:52%] inline-flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-full text-white/85 outline-none transition-[filter,color,transform] duration-[var(--duration-sm)] ease-enter hover:text-white hover:brightness-110 active:scale-95 focus-visible:text-white focus-visible:ring-2 focus-visible:ring-white/50 motion-reduce:transition-none motion-reduce:active:scale-100"
52
+ "glass glass-dark [--glass-alpha:52%] inline-flex size-9 shrink-0 cursor-pointer items-center justify-center rounded-full text-white/85 outline-none transition-[filter,color,transform] duration-[var(--duration-sm)] ease-enter hover:text-white hover:brightness-150 active:scale-95 focus-visible:text-white focus-visible:ring-2 focus-visible:ring-white/50 motion-reduce:transition-none motion-reduce:active:scale-100"
50
53
 
51
54
  /** The scrubber and its two timecodes travel together as one object. */
52
55
  const overlayTrack =
@@ -289,7 +292,11 @@ export const VideoPlayer = ({
289
292
  // `group` drives the chrome: it hides while playing and comes back on
290
293
  // hover or when anything inside takes focus.
291
294
  className={cn(
292
- "group relative isolate overflow-hidden rounded-xl bg-black shadow-lg ring-1 ring-border-primary data-[fullscreen]:h-screen data-[fullscreen]:w-screen data-[fullscreen]:rounded-none data-[fullscreen]:ring-0 fullscreen:h-screen fullscreen:w-screen fullscreen:rounded-none fullscreen:ring-0",
295
+ // One edge: the 5% ring, with --shadow-300 alone for depth. shadow-lg
296
+ // carries its own hairline ring and doubled the frame. Black only in
297
+ // fullscreen, where letterboxing needs it: behind the rounded clip it
298
+ // bled through the video's anti-aliased corners as a dark stroke.
299
+ "group relative isolate overflow-hidden rounded-xl shadow-[var(--shadow-300)] ring-1 ring-border-primary data-[fullscreen]:h-screen data-[fullscreen]:w-screen data-[fullscreen]:rounded-none data-[fullscreen]:bg-black data-[fullscreen]:ring-0 fullscreen:h-screen fullscreen:w-screen fullscreen:rounded-none fullscreen:bg-black fullscreen:ring-0",
293
300
  className,
294
301
  )}
295
302
  aria-busy={loading || buffering || undefined}
@@ -311,7 +318,7 @@ export const VideoPlayer = ({
311
318
  {failed ? (
312
319
  <div
313
320
  role="alert"
314
- className="mx-6 flex max-w-sm flex-col items-center gap-2 rounded-xl glass glass-dark px-5 py-4 text-center text-white shadow-lg"
321
+ className="mx-6 flex max-w-sm flex-col items-center gap-2 rounded-xl glass glass-dark px-5 py-4 text-center text-white"
315
322
  >
316
323
  <IconExclamationTriangle
317
324
  size={22}
@@ -327,7 +334,7 @@ export const VideoPlayer = ({
327
334
  ) : loading || buffering ? (
328
335
  <div
329
336
  role="status"
330
- className="flex size-14 items-center justify-center rounded-full glass glass-dark text-white shadow-lg"
337
+ className="flex size-14 items-center justify-center rounded-full glass glass-dark text-white"
331
338
  >
332
339
  <span className="size-6 animate-spin rounded-full border-2 border-white/30 border-t-white motion-reduce:animate-none" />
333
340
  <span className="sr-only">
@@ -337,7 +344,7 @@ export const VideoPlayer = ({
337
344
  ) : !playing ? (
338
345
  <div
339
346
  className={cn(
340
- "flex items-center justify-center rounded-full glass glass-dark text-white shadow-lg",
347
+ "flex items-center justify-center rounded-full glass glass-dark text-white",
341
348
  ended ? "h-8 gap-1 px-2.5" : "size-11",
342
349
  )}
343
350
  >