@once-ui-system/core 1.7.12 → 1.7.13

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.
Files changed (80) hide show
  1. package/AGENTS.md +53 -0
  2. package/README.md +27 -0
  3. package/agent/once-ui-codegen.mdc +27 -0
  4. package/ai/catalog.json +2 -2
  5. package/ai/components/ContextMenu.json +2 -2
  6. package/ai/components/Table.json +17 -2
  7. package/ai/manifest.json +2 -2
  8. package/ai/spec.json +22 -7
  9. package/dist/AGENTS.md +53 -0
  10. package/dist/README.md +27 -0
  11. package/dist/agent/once-ui-codegen.mdc +27 -0
  12. package/dist/ai/catalog.json +2 -2
  13. package/dist/ai/components/ContextMenu.json +2 -2
  14. package/dist/ai/components/Table.json +17 -2
  15. package/dist/ai/manifest.json +2 -2
  16. package/dist/ai/spec.json +22 -7
  17. package/dist/components/ContextMenu.d.ts +2 -2
  18. package/dist/components/ContextMenu.d.ts.map +1 -1
  19. package/dist/components/ContextMenu.js +3 -3
  20. package/dist/components/ContextMenu.js.map +1 -1
  21. package/dist/components/ElementType.d.ts.map +1 -1
  22. package/dist/components/ElementType.js +6 -4
  23. package/dist/components/ElementType.js.map +1 -1
  24. package/dist/components/Media.d.ts.map +1 -1
  25. package/dist/components/Media.js +6 -3
  26. package/dist/components/Media.js.map +1 -1
  27. package/dist/components/MediaVideoPlayer.d.ts +12 -0
  28. package/dist/components/MediaVideoPlayer.d.ts.map +1 -0
  29. package/dist/components/MediaVideoPlayer.js +246 -0
  30. package/dist/components/MediaVideoPlayer.js.map +1 -0
  31. package/dist/components/MediaVideoPlayer.module.scss +90 -0
  32. package/dist/components/Table.d.ts +34 -6
  33. package/dist/components/Table.d.ts.map +1 -1
  34. package/dist/components/Table.js +114 -30
  35. package/dist/components/Table.js.map +1 -1
  36. package/dist/components/Table.module.scss +174 -3
  37. package/dist/components/ThemeInit.d.ts.map +1 -1
  38. package/dist/components/ThemeInit.js +2 -1
  39. package/dist/components/ThemeInit.js.map +1 -1
  40. package/dist/components/Timeline.d.ts +1 -1
  41. package/dist/components/Timeline.d.ts.map +1 -1
  42. package/dist/components/Timeline.js +16 -52
  43. package/dist/components/Timeline.js.map +1 -1
  44. package/dist/data/emoji-data.json +8 -0
  45. package/dist/icons.d.ts.map +1 -1
  46. package/dist/icons.js +7 -2
  47. package/dist/icons.js.map +1 -1
  48. package/dist/index.d.ts +0 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +0 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/modules/code/CodeBlock.impl.d.ts.map +1 -1
  53. package/dist/modules/code/CodeBlock.impl.js +11 -5
  54. package/dist/modules/code/CodeBlock.impl.js.map +1 -1
  55. package/dist/modules/seo/Schema.d.ts.map +1 -1
  56. package/dist/modules/seo/Schema.js +3 -4
  57. package/dist/modules/seo/Schema.js.map +1 -1
  58. package/dist/package.json +22 -3
  59. package/dist/server/og-url-validation.d.ts +10 -0
  60. package/dist/server/og-url-validation.d.ts.map +1 -0
  61. package/dist/server/og-url-validation.js +234 -0
  62. package/dist/server/og-url-validation.js.map +1 -0
  63. package/dist/server/og-utils.d.ts +5 -2
  64. package/dist/server/og-utils.d.ts.map +1 -1
  65. package/dist/server/og-utils.js +39 -14
  66. package/dist/server/og-utils.js.map +1 -1
  67. package/dist/utils/index.d.ts +1 -0
  68. package/dist/utils/index.d.ts.map +1 -1
  69. package/dist/utils/index.js +1 -0
  70. package/dist/utils/index.js.map +1 -1
  71. package/dist/utils/safe-html.d.ts +19 -0
  72. package/dist/utils/safe-html.d.ts.map +1 -0
  73. package/dist/utils/safe-html.js +43 -0
  74. package/dist/utils/safe-html.js.map +1 -0
  75. package/package.json +23 -3
  76. package/scripts/copy-files.js +103 -0
  77. package/scripts/generate-ai-spec.js +464 -0
  78. package/scripts/generate-emoji-data.js +128 -0
  79. package/scripts/init-agent.js +156 -0
  80. package/scripts/validate-ai-code.js +149 -0
@@ -2,13 +2,14 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { useState, useRef, useEffect } from "react";
4
4
  import { Column, Flex, Row, Skeleton, ScrollLock } from ".";
5
+ import { MediaVideoPlayer } from "./MediaVideoPlayer";
5
6
  import Image from "next/image";
6
7
  import classNames from "classnames";
7
8
  const Media = ({ src, alt = "", fillWidth = true, fill = false, loading = false, enlarge = false, unoptimized = false, objectFit = "cover", sizes = "100vw", aspectRatio = "original", height, priority, caption, loop = true, autoplay = true, sound = false, controls = false, style, className, ...rest }) => {
8
9
  const [isEnlarged, setIsEnlarged] = useState(false);
9
10
  const imageRef = useRef(null);
10
11
  const handleImageClick = () => {
11
- if (enlarge) {
12
+ if (canEnlarge) {
12
13
  if (!isEnlarged) {
13
14
  setIsEnlarged(true);
14
15
  }
@@ -83,10 +84,12 @@ const Media = ({ src, alt = "", fillWidth = true, fill = false, loading = false,
83
84
  };
84
85
  const isVideo = isVideoUrl(src);
85
86
  const isYouTube = isYouTubeVideo(src);
87
+ const useCustomVideoControls = isVideo && controls;
88
+ const canEnlarge = enlarge && !useCustomVideoControls;
86
89
  const resolvedSizes = typeof sizes === "number"
87
90
  ? `(max-width: ${sizes}px) 100vw, ${sizes}px`
88
91
  : sizes;
89
- return (_jsxs(_Fragment, { children: [_jsx(ScrollLock, { enabled: isEnlarged }), isEnlarged && enlarge && typeof document !== 'undefined' && (_jsx(Flex, { center: true, position: "fixed", background: "overlay", pointerEvents: "auto", onClick: handleOverlayClick, top: "0", left: "0", zIndex: 9, opacity: 100, cursor: "interactive", transition: "macro-medium", className: "cursor-interactive", style: {
92
+ return (_jsxs(_Fragment, { children: [_jsx(ScrollLock, { enabled: isEnlarged }), isEnlarged && canEnlarge && typeof document !== 'undefined' && (_jsx(Flex, { center: true, position: "fixed", background: "overlay", pointerEvents: "auto", onClick: handleOverlayClick, top: "0", left: "0", zIndex: 9, opacity: 100, cursor: "interactive", transition: "macro-medium", className: "cursor-interactive", style: {
90
93
  backdropFilter: "blur(0.5rem)",
91
94
  width: "100vw",
92
95
  height: "100vh",
@@ -98,7 +101,7 @@ const Media = ({ src, alt = "", fillWidth = true, fill = false, loading = false,
98
101
  borderRadius: isEnlarged ? "0" : undefined,
99
102
  ...calculateTransform(),
100
103
  ...style,
101
- }, onClick: handleImageClick, className: classNames(enlarge && !isEnlarged ? "cursor-zoom-in" : enlarge && isEnlarged ? "cursor-zoom-out" : undefined, className), ...rest, children: [loading && _jsx(Skeleton, { shape: "block", radius: rest.radius }), !loading && isVideo && (_jsx("video", { src: src, autoPlay: autoplay, loop: loop, muted: !sound, playsInline: true, style: {
104
+ }, onClick: handleImageClick, className: classNames(canEnlarge && !isEnlarged ? "cursor-zoom-in" : canEnlarge && isEnlarged ? "cursor-zoom-out" : undefined, className), ...rest, children: [loading && _jsx(Skeleton, { shape: "block", radius: rest.radius }), !loading && isVideo && useCustomVideoControls && (_jsx(MediaVideoPlayer, { src: src, autoplay: autoplay, loop: loop, muted: !sound, objectFit: objectFit })), !loading && isVideo && !useCustomVideoControls && (_jsx("video", { src: src, autoPlay: autoplay, loop: loop, muted: !sound, playsInline: true, style: {
102
105
  width: "100%",
103
106
  height: "100%",
104
107
  objectFit: objectFit,
@@ -1 +1 @@
1
- {"version":3,"file":"Media.js","sourceRoot":"","sources":["../../src/components/Media.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAiB,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC;AAC5D,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,UAAU,MAAM,YAAY,CAAC;AAwBpC,MAAM,KAAK,GAAyB,CAAC,EACnC,GAAG,EACH,GAAG,GAAG,EAAE,EACR,SAAS,GAAG,IAAI,EAChB,IAAI,GAAG,KAAK,EACZ,OAAO,GAAG,KAAK,EACf,OAAO,GAAG,KAAK,EACf,WAAW,GAAG,KAAK,EACnB,SAAS,GAAG,OAAO,EACnB,KAAK,GAAG,OAAO,EACf,WAAW,GAAG,UAAU,EACxB,MAAM,EACN,QAAQ,EACR,OAAO,EACP,IAAI,GAAG,IAAI,EACX,QAAQ,GAAG,IAAI,EACf,KAAK,GAAG,KAAK,EACb,QAAQ,GAAG,KAAK,EAChB,KAAK,EACL,SAAS,EACT,GAAG,IAAI,EACR,EAAE,EAAE;IACH,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE9C,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,aAAa,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,IAAI,UAAU,EAAE,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC5C,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,UAAU,EAAE,CAAC;gBACzC,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,CAAC,KAAiB,EAAE,EAAE;YACxC,IAAI,UAAU,EAAE,CAAC;gBACf,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACnD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjE,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YACtD,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACnD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAEjC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC;QAE7C,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACpE,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;QAErE,OAAO;YACL,SAAS,EAAE,UAAU;gBACnB,CAAC,CAAC,aAAa,UAAU,OAAO,UAAU,aAAa,KAAK,GAAG;gBAC/D,CAAC,CAAC,0BAA0B;YAC9B,UAAU,EAAE,sBAAsB;YAClC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;SACpC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE;QACrC,MAAM,YAAY,GAChB,sGAAsG,CAAC;QACzG,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE;QACzC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CACrB,sGAAsG,CACvG,CAAC;QACF,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,QAAQ,GAAG,iCAAiC,EAAE,yBAAyB,CAAC;QAE5E,IAAI,CAAC,QAAQ;YAAE,QAAQ,IAAI,aAAa,CAAC;QACzC,IAAI,QAAQ;YAAE,QAAQ,IAAI,aAAa,CAAC;QACxC,IAAI,CAAC,KAAK;YAAE,QAAQ,IAAI,SAAS,CAAC;QAClC,IAAI,IAAI;YAAE,QAAQ,IAAI,oBAAoB,EAAE,EAAE,CAAC;QAE/C,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;QACjC,MAAM,eAAe,GAAG,2DAA2D,CAAC;QACpF,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,aAAa,GACjB,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,eAAe,KAAK,cAAc,KAAK,IAAI;QAC7C,CAAC,CAAC,KAAK,CAAC;IAEZ,OAAO,CACL,8BACE,KAAC,UAAU,IAAC,OAAO,EAAE,UAAU,GAAI,EAClC,UAAU,IAAI,OAAO,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,CAC3D,KAAC,IAAI,IACH,MAAM,QACN,QAAQ,EAAC,OAAO,EAChB,UAAU,EAAC,SAAS,EACpB,aAAa,EAAC,MAAM,EACpB,OAAO,EAAE,kBAAkB,EAC3B,GAAG,EAAC,GAAG,EACP,IAAI,EAAC,GAAG,EACR,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,GAAG,EACZ,MAAM,EAAC,aAAa,EACpB,UAAU,EAAC,cAAc,EACzB,SAAS,EAAC,oBAAoB,EAC9B,KAAK,EAAE;oBACL,cAAc,EAAE,cAAc;oBAC9B,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,OAAO;iBAChB,GACD,CACH,EACD,8BACE,MAAC,MAAM,IACL,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAClC,GAAG,EAAE,QAAQ,EACb,SAAS,QACT,QAAQ,EAAC,QAAQ,EACjB,MAAM,EAAE,CAAC,EACT,MAAM,EAAC,GAAG,EACV,KAAK,EAAE;4BACL,OAAO,EAAE,MAAM;4BACf,SAAS,EAAE,SAAS;4BACpB,MAAM,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,MAAM;4BACpG,WAAW,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;4BACjE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;4BAC1C,GAAG,kBAAkB,EAAE;4BACvB,GAAG,KAAK;yBACT,EACD,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,KAC/H,IAAI,aAEP,OAAO,IAAI,KAAC,QAAQ,IAAC,KAAK,EAAC,OAAO,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAI,EAC1D,CAAC,OAAO,IAAI,OAAO,IAAI,CACtB,gBACE,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,CAAC,KAAK,EACb,WAAW,QACX,KAAK,EAAE;oCACL,KAAK,EAAE,MAAM;oCACb,MAAM,EAAE,MAAM;oCACd,SAAS,EAAE,SAAS;iCACrB,GACD,CACH,EACA,CAAC,OAAO,IAAI,SAAS,IAAI,CACxB,iBACE,KAAK,EAAC,MAAM,EACZ,MAAM,EAAC,MAAM,EACb,GAAG,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAC5B,WAAW,EAAC,GAAG,EACf,KAAK,EAAC,0FAA0F,EAChG,eAAe,QACf,KAAK,EAAE;oCACL,SAAS,EAAE,SAAS;iCACrB,GACD,CACH,EACA,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,IAAI,CACrC,KAAC,KAAK,IACJ,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAC3C,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,EAC1B,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAC3B,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAC5B,KAAK,EAAE;oCACL,SAAS,EAAE,SAAS;oCACpB,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;oCAC3C,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;oCACvC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;iCACzC,GACD,CACH,IACM,EACR,OAAO,IAAI,CACV,KAAC,GAAG,IACF,EAAE,EAAC,YAAY,EACf,SAAS,QACT,WAAW,EAAC,iBAAiB,EAC7B,YAAY,EAAC,cAAc,EAC3B,QAAQ,EAAC,IAAI,EACb,QAAQ,EAAC,IAAI,EACb,UAAU,EAAC,QAAQ,EACnB,KAAK,EAAC,QAAQ,YAEb,OAAO,GACJ,CACP,IACA,IACF,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"Media.js","sourceRoot":"","sources":["../../src/components/Media.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React, { CSSProperties } from "react";
2
+ interface MediaVideoPlayerProps {
3
+ src: string;
4
+ autoplay?: boolean;
5
+ loop?: boolean;
6
+ muted?: boolean;
7
+ objectFit?: CSSProperties["objectFit"];
8
+ className?: string;
9
+ }
10
+ declare const MediaVideoPlayer: React.FC<MediaVideoPlayerProps>;
11
+ export { MediaVideoPlayer };
12
+ //# sourceMappingURL=MediaVideoPlayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaVideoPlayer.d.ts","sourceRoot":"","sources":["../../src/components/MediaVideoPlayer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,aAAa,EAA4C,MAAM,OAAO,CAAC;AAKvF,UAAU,qBAAqB;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA2YrD,CAAC;AAGF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,246 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useEffect, useRef, useState } from "react";
4
+ import classNames from "classnames";
5
+ import { Flex, IconButton, Row, Text } from ".";
6
+ import styles from "./MediaVideoPlayer.module.scss";
7
+ const formatTime = (seconds) => {
8
+ if (!Number.isFinite(seconds) || seconds < 0) {
9
+ return "0:00";
10
+ }
11
+ const totalSeconds = Math.floor(seconds);
12
+ const minutes = Math.floor(totalSeconds / 60);
13
+ const remainingSeconds = totalSeconds % 60;
14
+ return `${minutes}:${remainingSeconds.toString().padStart(2, "0")}`;
15
+ };
16
+ const MediaVideoPlayer = ({ src, autoplay = false, loop = false, muted: mutedProp = true, objectFit = "cover", className, }) => {
17
+ const containerRef = useRef(null);
18
+ const videoRef = useRef(null);
19
+ const progressRef = useRef(null);
20
+ const hideControlsTimeoutRef = useRef(undefined);
21
+ const isSeekingRef = useRef(false);
22
+ const [isPlaying, setIsPlaying] = useState(autoplay);
23
+ const [isMuted, setIsMuted] = useState(mutedProp);
24
+ const [isFullscreen, setIsFullscreen] = useState(false);
25
+ const [controlsVisible, setControlsVisible] = useState(true);
26
+ const [currentTime, setCurrentTime] = useState(0);
27
+ const [duration, setDuration] = useState(0);
28
+ const [progress, setProgress] = useState(0);
29
+ const clearHideControlsTimeout = useCallback(() => {
30
+ if (hideControlsTimeoutRef.current) {
31
+ clearTimeout(hideControlsTimeoutRef.current);
32
+ hideControlsTimeoutRef.current = undefined;
33
+ }
34
+ }, []);
35
+ const scheduleHideControls = useCallback(() => {
36
+ clearHideControlsTimeout();
37
+ if (!videoRef.current || videoRef.current.paused) {
38
+ setControlsVisible(true);
39
+ return;
40
+ }
41
+ hideControlsTimeoutRef.current = setTimeout(() => {
42
+ setControlsVisible(false);
43
+ }, 2500);
44
+ }, [clearHideControlsTimeout]);
45
+ const revealControls = useCallback(() => {
46
+ setControlsVisible(true);
47
+ scheduleHideControls();
48
+ }, [scheduleHideControls]);
49
+ const syncPlaybackState = useCallback(() => {
50
+ const video = videoRef.current;
51
+ if (!video) {
52
+ return;
53
+ }
54
+ setIsPlaying(!video.paused);
55
+ setCurrentTime(video.currentTime);
56
+ setDuration(video.duration || 0);
57
+ setProgress(video.duration ? (video.currentTime / video.duration) * 100 : 0);
58
+ }, []);
59
+ const togglePlay = useCallback(async () => {
60
+ const video = videoRef.current;
61
+ if (!video) {
62
+ return;
63
+ }
64
+ if (video.paused) {
65
+ try {
66
+ await video.play();
67
+ }
68
+ catch {
69
+ return;
70
+ }
71
+ }
72
+ else {
73
+ video.pause();
74
+ }
75
+ syncPlaybackState();
76
+ revealControls();
77
+ }, [revealControls, syncPlaybackState]);
78
+ const toggleMute = useCallback(() => {
79
+ const video = videoRef.current;
80
+ if (!video) {
81
+ return;
82
+ }
83
+ video.muted = !video.muted;
84
+ setIsMuted(video.muted);
85
+ revealControls();
86
+ }, [revealControls]);
87
+ const toggleFullscreen = useCallback(async () => {
88
+ const container = containerRef.current;
89
+ if (!container) {
90
+ return;
91
+ }
92
+ try {
93
+ if (document.fullscreenElement) {
94
+ await document.exitFullscreen();
95
+ }
96
+ else {
97
+ await container.requestFullscreen();
98
+ }
99
+ }
100
+ catch {
101
+ return;
102
+ }
103
+ revealControls();
104
+ }, [revealControls]);
105
+ const seekToPosition = useCallback((clientX) => {
106
+ const video = videoRef.current;
107
+ const progressTrack = progressRef.current;
108
+ if (!video || !progressTrack || !video.duration) {
109
+ return;
110
+ }
111
+ const rect = progressTrack.getBoundingClientRect();
112
+ const ratio = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));
113
+ video.currentTime = ratio * video.duration;
114
+ syncPlaybackState();
115
+ }, [syncPlaybackState]);
116
+ const handleProgressPointerDown = (event) => {
117
+ event.stopPropagation();
118
+ isSeekingRef.current = true;
119
+ progressRef.current?.setPointerCapture(event.pointerId);
120
+ seekToPosition(event.clientX);
121
+ revealControls();
122
+ };
123
+ const handleProgressPointerMove = (event) => {
124
+ if (!isSeekingRef.current) {
125
+ return;
126
+ }
127
+ seekToPosition(event.clientX);
128
+ };
129
+ const handleProgressPointerUp = (event) => {
130
+ if (!isSeekingRef.current) {
131
+ return;
132
+ }
133
+ isSeekingRef.current = false;
134
+ progressRef.current?.releasePointerCapture(event.pointerId);
135
+ scheduleHideControls();
136
+ };
137
+ const handleContainerClick = (event) => {
138
+ if (event.target.closest("[data-video-control]")) {
139
+ return;
140
+ }
141
+ togglePlay();
142
+ };
143
+ const handleKeyDown = (event) => {
144
+ switch (event.key) {
145
+ case " ":
146
+ case "k":
147
+ event.preventDefault();
148
+ togglePlay();
149
+ break;
150
+ case "m":
151
+ event.preventDefault();
152
+ toggleMute();
153
+ break;
154
+ case "f":
155
+ event.preventDefault();
156
+ toggleFullscreen();
157
+ break;
158
+ case "ArrowLeft":
159
+ event.preventDefault();
160
+ if (videoRef.current) {
161
+ videoRef.current.currentTime = Math.max(0, videoRef.current.currentTime - 5);
162
+ syncPlaybackState();
163
+ revealControls();
164
+ }
165
+ break;
166
+ case "ArrowRight":
167
+ event.preventDefault();
168
+ if (videoRef.current) {
169
+ videoRef.current.currentTime = Math.min(videoRef.current.duration || 0, videoRef.current.currentTime + 5);
170
+ syncPlaybackState();
171
+ revealControls();
172
+ }
173
+ break;
174
+ default:
175
+ break;
176
+ }
177
+ };
178
+ useEffect(() => {
179
+ const video = videoRef.current;
180
+ if (!video) {
181
+ return;
182
+ }
183
+ video.muted = mutedProp;
184
+ const handleLoadedMetadata = () => syncPlaybackState();
185
+ const handleTimeUpdate = () => syncPlaybackState();
186
+ const handlePlay = () => {
187
+ setIsPlaying(true);
188
+ scheduleHideControls();
189
+ };
190
+ const handlePause = () => {
191
+ setIsPlaying(false);
192
+ setControlsVisible(true);
193
+ clearHideControlsTimeout();
194
+ };
195
+ const handleVolumeChange = () => setIsMuted(video.muted);
196
+ video.addEventListener("loadedmetadata", handleLoadedMetadata);
197
+ video.addEventListener("timeupdate", handleTimeUpdate);
198
+ video.addEventListener("play", handlePlay);
199
+ video.addEventListener("pause", handlePause);
200
+ video.addEventListener("volumechange", handleVolumeChange);
201
+ if (autoplay) {
202
+ video.play().catch(() => {
203
+ setIsPlaying(false);
204
+ setControlsVisible(true);
205
+ });
206
+ }
207
+ return () => {
208
+ video.removeEventListener("loadedmetadata", handleLoadedMetadata);
209
+ video.removeEventListener("timeupdate", handleTimeUpdate);
210
+ video.removeEventListener("play", handlePlay);
211
+ video.removeEventListener("pause", handlePause);
212
+ video.removeEventListener("volumechange", handleVolumeChange);
213
+ };
214
+ }, [autoplay, clearHideControlsTimeout, mutedProp, scheduleHideControls, syncPlaybackState]);
215
+ useEffect(() => {
216
+ const handleFullscreenChange = () => {
217
+ setIsFullscreen(Boolean(document.fullscreenElement));
218
+ };
219
+ document.addEventListener("fullscreenchange", handleFullscreenChange);
220
+ return () => {
221
+ document.removeEventListener("fullscreenchange", handleFullscreenChange);
222
+ };
223
+ }, []);
224
+ useEffect(() => {
225
+ return () => {
226
+ clearHideControlsTimeout();
227
+ };
228
+ }, [clearHideControlsTimeout]);
229
+ const showCenterPlay = !isPlaying && controlsVisible;
230
+ return (_jsxs("div", { ref: containerRef, className: classNames(styles.container, className), tabIndex: 0, role: "group", "aria-label": "Video player", onMouseMove: revealControls, onTouchStart: revealControls, onClick: handleContainerClick, onKeyDown: handleKeyDown, children: [_jsx("video", { ref: videoRef, className: styles.video, src: src, loop: loop, muted: isMuted, playsInline: true, preload: "metadata", style: { objectFit } }), _jsxs("div", { className: classNames(styles.overlay, controlsVisible || !isPlaying ? styles.visible : styles.hidden), children: [_jsx("div", { className: styles.gradient }), showCenterPlay && (_jsx("div", { className: styles.centerPlay, "data-video-control": true, children: _jsx(Flex, { center: true, radius: "full", className: styles.centerPlayButton, style: { width: "4rem", height: "4rem" }, children: _jsx(IconButton, { variant: "ghost", icon: "play", tooltip: "Play", tooltipPosition: "top", onClick: (event) => {
231
+ event.stopPropagation();
232
+ togglePlay();
233
+ }, "data-video-control": true }) }) })), _jsxs(Flex, { fillWidth: true, direction: "column", gap: "8", paddingX: "12", paddingBottom: "12", className: styles.controls, "data-video-control": true, children: [_jsx(Row, { ref: progressRef, fillWidth: true, radius: "full", className: styles.progressTrack, style: { background: "rgba(255, 255, 255, 0.25)" }, onPointerDown: handleProgressPointerDown, onPointerMove: handleProgressPointerMove, onPointerUp: handleProgressPointerUp, onPointerCancel: handleProgressPointerUp, role: "slider", "aria-label": "Seek", "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": Math.round(progress), children: _jsx(Row, { radius: "full", fillHeight: true, className: styles.progressFill, style: { width: `${progress}%`, background: "var(--brand-solid-strong)" } }) }), _jsxs(Row, { fillWidth: true, vertical: "center", horizontal: "between", gap: "8", children: [_jsxs(Row, { vertical: "center", gap: "4", children: [_jsx(IconButton, { variant: "ghost", icon: isPlaying ? "pause" : "play", tooltip: isPlaying ? "Pause" : "Play", tooltipPosition: "top", onClick: (event) => {
234
+ event.stopPropagation();
235
+ togglePlay();
236
+ } }), _jsxs(Text, { variant: "label-default-xs", onSolid: "neutral-weak", className: styles.time, children: [formatTime(currentTime), " / ", formatTime(duration)] })] }), _jsxs(Row, { vertical: "center", gap: "4", children: [_jsx(IconButton, { variant: "ghost", icon: isMuted ? "volumeOff" : "volume", tooltip: isMuted ? "Unmute" : "Mute", tooltipPosition: "top", onClick: (event) => {
237
+ event.stopPropagation();
238
+ toggleMute();
239
+ } }), _jsx(IconButton, { variant: "ghost", icon: isFullscreen ? "minimize" : "maximize", tooltip: isFullscreen ? "Exit fullscreen" : "Fullscreen", tooltipPosition: "top", onClick: (event) => {
240
+ event.stopPropagation();
241
+ toggleFullscreen();
242
+ } })] })] })] })] })] }));
243
+ };
244
+ MediaVideoPlayer.displayName = "MediaVideoPlayer";
245
+ export { MediaVideoPlayer };
246
+ //# sourceMappingURL=MediaVideoPlayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaVideoPlayer.js","sourceRoot":"","sources":["../../src/components/MediaVideoPlayer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ .container {
2
+ position: relative;
3
+ width: 100%;
4
+ height: 100%;
5
+ background: var(--neutral-solid-strong);
6
+ outline: none;
7
+
8
+ &:fullscreen,
9
+ &:-webkit-full-screen {
10
+ .video {
11
+ object-fit: contain;
12
+ }
13
+ }
14
+ }
15
+
16
+ .video {
17
+ width: 100%;
18
+ height: 100%;
19
+ display: block;
20
+ }
21
+
22
+ .overlay {
23
+ position: absolute;
24
+ inset: 0;
25
+ display: flex;
26
+ flex-direction: column;
27
+ justify-content: flex-end;
28
+ pointer-events: none;
29
+ transition: opacity var(--transition-micro-medium);
30
+
31
+ &.visible {
32
+ opacity: 1;
33
+ }
34
+
35
+ &.hidden {
36
+ opacity: 0;
37
+ }
38
+ }
39
+
40
+ .gradient {
41
+ position: absolute;
42
+ inset: 0;
43
+ background: linear-gradient(
44
+ to top,
45
+ rgba(0, 0, 0, 0.75) 0%,
46
+ rgba(0, 0, 0, 0.25) 35%,
47
+ transparent 65%
48
+ );
49
+ pointer-events: none;
50
+ }
51
+
52
+ .centerPlay {
53
+ position: absolute;
54
+ inset: 0;
55
+ display: flex;
56
+ align-items: center;
57
+ justify-content: center;
58
+ pointer-events: auto;
59
+ }
60
+
61
+ .centerPlayButton {
62
+ backdrop-filter: blur(0.5rem);
63
+ background: rgba(0, 0, 0, 0.45);
64
+ border: 1px solid rgba(255, 255, 255, 0.12);
65
+ }
66
+
67
+ .controls {
68
+ position: relative;
69
+ z-index: 1;
70
+ pointer-events: auto;
71
+ }
72
+
73
+ .progressTrack {
74
+ height: 0.1875rem;
75
+ cursor: pointer;
76
+ transition: height var(--transition-micro-short);
77
+
78
+ &:hover {
79
+ height: 0.3125rem;
80
+ }
81
+ }
82
+
83
+ .progressFill {
84
+ transition: width 0.05s linear;
85
+ }
86
+
87
+ .time {
88
+ font-variant-numeric: tabular-nums;
89
+ user-select: none;
90
+ }
@@ -1,16 +1,44 @@
1
1
  import { Flex } from ".";
2
2
  import { ReactNode } from "react";
3
+ type TableHeader = {
4
+ content: ReactNode;
5
+ key: string;
6
+ sortable?: boolean;
7
+ width?: string;
8
+ align?: "left" | "center" | "right";
9
+ };
10
+ type TableAction = {
11
+ icon: string;
12
+ label?: string;
13
+ tooltip?: string;
14
+ variant?: "primary" | "secondary" | "tertiary" | "danger";
15
+ onClick: (rowIndex: number) => void;
16
+ disabled?: (rowIndex: number) => boolean;
17
+ };
3
18
  type TableProps = React.ComponentProps<typeof Flex> & {
4
19
  data: {
5
- headers: {
6
- content: ReactNode;
7
- key: string;
8
- sortable?: boolean;
9
- }[];
20
+ headers: TableHeader[];
10
21
  rows: ReactNode[][];
11
22
  };
12
23
  onRowClick?: (rowIndex: number) => void;
24
+ searchable?: boolean;
25
+ searchPlaceholder?: string;
26
+ striped?: boolean;
27
+ hoverable?: boolean;
28
+ compact?: boolean;
29
+ loading?: boolean;
30
+ emptyState?: ReactNode;
31
+ actions?: TableAction[];
32
+ stickyHeader?: boolean;
33
+ maxHeight?: string;
34
+ rowClassName?: (rowIndex: number) => string;
35
+ cellClassName?: (rowIndex: number, cellIndex: number) => string;
36
+ paginated?: boolean;
37
+ defaultPageSize?: number;
38
+ pageSizeOptions?: number[];
39
+ loadingState?: ReactNode;
13
40
  };
14
- declare function Table({ data, onRowClick, ...flex }: TableProps): import("react/jsx-runtime").JSX.Element;
41
+ declare function Table({ data, onRowClick, searchable, searchPlaceholder, striped, hoverable, compact, loading, emptyState, actions, stickyHeader, maxHeight, rowClassName, cellClassName, paginated, defaultPageSize, pageSizeOptions, loadingState, ...flex }: TableProps): import("react/jsx-runtime").JSX.Element;
15
42
  export { Table };
43
+ export type { TableProps, TableHeader, TableAction };
16
44
  //# sourceMappingURL=Table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/components/Table.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAmB,MAAM,GAAG,CAAC;AAC1C,OAAO,EAAY,SAAS,EAAE,MAAM,OAAO,CAAC;AAG5C,KAAK,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,GAAG;IACpD,IAAI,EAAE;QACJ,OAAO,EAAE;YACP,OAAO,EAAE,SAAS,CAAC;YACnB,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;SACpB,EAAE,CAAC;QACJ,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF,iBAAS,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,2CAgHvD;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../src/components/Table.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAC,IAAI,EAA+E,MAAM,GAAG,CAAC;AACrG,OAAO,EAAqB,SAAS,EAAE,MAAM,OAAO,CAAC;AAIrD,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,SAAS,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACrC,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1D,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1C,CAAC;AAEF,KAAK,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,GAAG;IACpD,IAAI,EAAE;QACJ,OAAO,EAAE,WAAW,EAAE,CAAC;QACvB,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAChE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAC;AAYF,iBAAS,KAAK,CAAC,EACb,IAAI,EACJ,UAAU,EACV,UAAkB,EAClB,iBAA+B,EAC/B,OAAe,EACf,SAAgB,EAChB,OAAe,EACf,OAAe,EACf,UAAU,EACV,OAAO,EACP,YAAoB,EACpB,SAAS,EACT,YAAY,EACZ,aAAa,EACb,SAAiB,EACjB,eAAoB,EACpB,eAAiC,EACjC,YAAY,EACZ,GAAG,IAAI,EACR,EAAE,UAAU,2CAgXZ;AAED,OAAO,EAAE,KAAK,EAAE,CAAC;AACjB,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC"}