@sudobility/entertainment-components 1.0.9

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.
@@ -0,0 +1,33 @@
1
+ /**
2
+ * UaudioUwaveform Component
3
+ *
4
+ * A reusable UaudioUwaveform component with full dark mode support.
5
+ * Optimized for accessibility and AI-assisted development.
6
+ *
7
+ * @component
8
+ * @example
9
+ * ```tsx
10
+ * <UaudioUwaveform className="custom-class" />
11
+ * ```
12
+ *
13
+ * @remarks
14
+ * This component supports:
15
+ * - Light and dark themes automatically
16
+ * - Responsive design
17
+ * - Accessibility features
18
+ * - TypeScript type safety
19
+ *
20
+ * @see {@link https://docs.example.com/components/audio-waveform}
21
+ */
22
+ export interface UaudioUwaveformProps {
23
+ /** Additional CSS classes */
24
+ className?: string;
25
+ /** Component children */
26
+ children?: React.ReactNode;
27
+ /** Disabled state */
28
+ disabled?: boolean;
29
+ /** Callback when component is interacted with */
30
+ onClick?: () => void;
31
+ }
32
+ export declare const UaudioUwaveform: ({ className, children, disabled, onClick, }: UaudioUwaveformProps) => import("react/jsx-runtime").JSX.Element;
33
+ //# sourceMappingURL=audio-waveform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-waveform.d.ts","sourceRoot":"","sources":["../src/audio-waveform.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,GAAI,6CAK7B,oBAAoB,4CAmBtB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Entertainment Components
3
+ *
4
+ * Specialized components for entertainment domain
5
+ */
6
+ export * from './audio-waveform';
7
+ export * from './live-stream';
8
+ export * from './media-playlist';
9
+ export * from './media-uploader';
10
+ export * from './playlist-manager';
11
+ export * from './streaming-stats';
12
+ export * from './video-editor';
13
+ export * from './video-thumbnail';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,567 @@
1
+ import te, { useState as H, useRef as ae } from "react";
2
+ import { cn as v } from "@sudobility/components";
3
+ var D = { exports: {} }, T = {};
4
+ var Z;
5
+ function oe() {
6
+ if (Z) return T;
7
+ Z = 1;
8
+ var n = Symbol.for("react.transitional.element"), l = Symbol.for("react.fragment");
9
+ function o(d, u, f) {
10
+ var p = null;
11
+ if (f !== void 0 && (p = "" + f), u.key !== void 0 && (p = "" + u.key), "key" in u) {
12
+ f = {};
13
+ for (var m in u)
14
+ m !== "key" && (f[m] = u[m]);
15
+ } else f = u;
16
+ return u = f.ref, {
17
+ $$typeof: n,
18
+ type: d,
19
+ key: p,
20
+ ref: u !== void 0 ? u : null,
21
+ props: f
22
+ };
23
+ }
24
+ return T.Fragment = l, T.jsx = o, T.jsxs = o, T;
25
+ }
26
+ var N = {};
27
+ var Q;
28
+ function ne() {
29
+ return Q || (Q = 1, process.env.NODE_ENV !== "production" && (function() {
30
+ function n(e) {
31
+ if (e == null) return null;
32
+ if (typeof e == "function")
33
+ return e.$$typeof === R ? null : e.displayName || e.name || null;
34
+ if (typeof e == "string") return e;
35
+ switch (e) {
36
+ case x:
37
+ return "Fragment";
38
+ case P:
39
+ return "Profiler";
40
+ case $:
41
+ return "StrictMode";
42
+ case C:
43
+ return "Suspense";
44
+ case Y:
45
+ return "SuspenseList";
46
+ case F:
47
+ return "Activity";
48
+ }
49
+ if (typeof e == "object")
50
+ switch (typeof e.tag == "number" && console.error(
51
+ "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
52
+ ), e.$$typeof) {
53
+ case M:
54
+ return "Portal";
55
+ case b:
56
+ return e.displayName || "Context";
57
+ case t:
58
+ return (e._context.displayName || "Context") + ".Consumer";
59
+ case w:
60
+ var r = e.render;
61
+ return e = e.displayName, e || (e = r.displayName || r.name || "", e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef"), e;
62
+ case g:
63
+ return r = e.displayName || null, r !== null ? r : n(e.type) || "Memo";
64
+ case _:
65
+ r = e._payload, e = e._init;
66
+ try {
67
+ return n(e(r));
68
+ } catch {
69
+ }
70
+ }
71
+ return null;
72
+ }
73
+ function l(e) {
74
+ return "" + e;
75
+ }
76
+ function o(e) {
77
+ try {
78
+ l(e);
79
+ var r = !1;
80
+ } catch {
81
+ r = !0;
82
+ }
83
+ if (r) {
84
+ r = console;
85
+ var s = r.error, i = typeof Symbol == "function" && Symbol.toStringTag && e[Symbol.toStringTag] || e.constructor.name || "Object";
86
+ return s.call(
87
+ r,
88
+ "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
89
+ i
90
+ ), l(e);
91
+ }
92
+ }
93
+ function d(e) {
94
+ if (e === x) return "<>";
95
+ if (typeof e == "object" && e !== null && e.$$typeof === _)
96
+ return "<...>";
97
+ try {
98
+ var r = n(e);
99
+ return r ? "<" + r + ">" : "<...>";
100
+ } catch {
101
+ return "<...>";
102
+ }
103
+ }
104
+ function u() {
105
+ var e = j.A;
106
+ return e === null ? null : e.getOwner();
107
+ }
108
+ function f() {
109
+ return Error("react-stack-top-frame");
110
+ }
111
+ function p(e) {
112
+ if (z.call(e, "key")) {
113
+ var r = Object.getOwnPropertyDescriptor(e, "key").get;
114
+ if (r && r.isReactWarning) return !1;
115
+ }
116
+ return e.key !== void 0;
117
+ }
118
+ function m(e, r) {
119
+ function s() {
120
+ q || (q = !0, console.error(
121
+ "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
122
+ r
123
+ ));
124
+ }
125
+ s.isReactWarning = !0, Object.defineProperty(e, "key", {
126
+ get: s,
127
+ configurable: !0
128
+ });
129
+ }
130
+ function S() {
131
+ var e = n(this.type);
132
+ return B[e] || (B[e] = !0, console.error(
133
+ "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
134
+ )), e = this.props.ref, e !== void 0 ? e : null;
135
+ }
136
+ function L(e, r, s, i, U, W) {
137
+ var c = s.ref;
138
+ return e = {
139
+ $$typeof: O,
140
+ type: e,
141
+ key: r,
142
+ props: s,
143
+ _owner: i
144
+ }, (c !== void 0 ? c : null) !== null ? Object.defineProperty(e, "ref", {
145
+ enumerable: !1,
146
+ get: S
147
+ }) : Object.defineProperty(e, "ref", { enumerable: !1, value: null }), e._store = {}, Object.defineProperty(e._store, "validated", {
148
+ configurable: !1,
149
+ enumerable: !1,
150
+ writable: !0,
151
+ value: 0
152
+ }), Object.defineProperty(e, "_debugInfo", {
153
+ configurable: !1,
154
+ enumerable: !1,
155
+ writable: !0,
156
+ value: null
157
+ }), Object.defineProperty(e, "_debugStack", {
158
+ configurable: !1,
159
+ enumerable: !1,
160
+ writable: !0,
161
+ value: U
162
+ }), Object.defineProperty(e, "_debugTask", {
163
+ configurable: !1,
164
+ enumerable: !1,
165
+ writable: !0,
166
+ value: W
167
+ }), Object.freeze && (Object.freeze(e.props), Object.freeze(e)), e;
168
+ }
169
+ function h(e, r, s, i, U, W) {
170
+ var c = r.children;
171
+ if (c !== void 0)
172
+ if (i)
173
+ if (ee(c)) {
174
+ for (i = 0; i < c.length; i++)
175
+ E(c[i]);
176
+ Object.freeze && Object.freeze(c);
177
+ } else
178
+ console.error(
179
+ "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
180
+ );
181
+ else E(c);
182
+ if (z.call(r, "key")) {
183
+ c = n(e);
184
+ var k = Object.keys(r).filter(function(re) {
185
+ return re !== "key";
186
+ });
187
+ i = 0 < k.length ? "{key: someKey, " + k.join(": ..., ") + ": ...}" : "{key: someKey}", X[c + i] || (k = 0 < k.length ? "{" + k.join(": ..., ") + ": ...}" : "{}", console.error(
188
+ `A props object containing a "key" prop is being spread into JSX:
189
+ let props = %s;
190
+ <%s {...props} />
191
+ React keys must be passed directly to JSX without using spread:
192
+ let props = %s;
193
+ <%s key={someKey} {...props} />`,
194
+ i,
195
+ c,
196
+ k,
197
+ c
198
+ ), X[c + i] = !0);
199
+ }
200
+ if (c = null, s !== void 0 && (o(s), c = "" + s), p(r) && (o(r.key), c = "" + r.key), "key" in r) {
201
+ s = {};
202
+ for (var V in r)
203
+ V !== "key" && (s[V] = r[V]);
204
+ } else s = r;
205
+ return c && m(
206
+ s,
207
+ typeof e == "function" ? e.displayName || e.name || "Unknown" : e
208
+ ), L(
209
+ e,
210
+ c,
211
+ s,
212
+ u(),
213
+ U,
214
+ W
215
+ );
216
+ }
217
+ function E(e) {
218
+ A(e) ? e._store && (e._store.validated = 1) : typeof e == "object" && e !== null && e.$$typeof === _ && (e._payload.status === "fulfilled" ? A(e._payload.value) && e._payload.value._store && (e._payload.value._store.validated = 1) : e._store && (e._store.validated = 1));
219
+ }
220
+ function A(e) {
221
+ return typeof e == "object" && e !== null && e.$$typeof === O;
222
+ }
223
+ var y = te, O = Symbol.for("react.transitional.element"), M = Symbol.for("react.portal"), x = Symbol.for("react.fragment"), $ = Symbol.for("react.strict_mode"), P = Symbol.for("react.profiler"), t = Symbol.for("react.consumer"), b = Symbol.for("react.context"), w = Symbol.for("react.forward_ref"), C = Symbol.for("react.suspense"), Y = Symbol.for("react.suspense_list"), g = Symbol.for("react.memo"), _ = Symbol.for("react.lazy"), F = Symbol.for("react.activity"), R = Symbol.for("react.client.reference"), j = y.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, z = Object.prototype.hasOwnProperty, ee = Array.isArray, I = console.createTask ? console.createTask : function() {
224
+ return null;
225
+ };
226
+ y = {
227
+ react_stack_bottom_frame: function(e) {
228
+ return e();
229
+ }
230
+ };
231
+ var q, B = {}, J = y.react_stack_bottom_frame.bind(
232
+ y,
233
+ f
234
+ )(), G = I(d(f)), X = {};
235
+ N.Fragment = x, N.jsx = function(e, r, s) {
236
+ var i = 1e4 > j.recentlyCreatedOwnerStacks++;
237
+ return h(
238
+ e,
239
+ r,
240
+ s,
241
+ !1,
242
+ i ? Error("react-stack-top-frame") : J,
243
+ i ? I(d(e)) : G
244
+ );
245
+ }, N.jsxs = function(e, r, s) {
246
+ var i = 1e4 > j.recentlyCreatedOwnerStacks++;
247
+ return h(
248
+ e,
249
+ r,
250
+ s,
251
+ !0,
252
+ i ? Error("react-stack-top-frame") : J,
253
+ i ? I(d(e)) : G
254
+ );
255
+ };
256
+ })()), N;
257
+ }
258
+ var K;
259
+ function se() {
260
+ return K || (K = 1, process.env.NODE_ENV === "production" ? D.exports = oe() : D.exports = ne()), D.exports;
261
+ }
262
+ var a = se();
263
+ const ce = ({
264
+ className: n,
265
+ children: l,
266
+ disabled: o = !1,
267
+ onClick: d
268
+ }) => /* @__PURE__ */ a.jsx(
269
+ "div",
270
+ {
271
+ className: v(
272
+ "p-4 rounded-lg border transition-colors",
273
+ "bg-white dark:bg-gray-900",
274
+ "border-gray-200 dark:border-gray-700",
275
+ "text-gray-900 dark:text-white",
276
+ o && "opacity-50 cursor-not-allowed",
277
+ "hover:bg-gray-50 dark:hover:bg-gray-800",
278
+ n
279
+ ),
280
+ onClick: o ? void 0 : d,
281
+ role: "region",
282
+ "aria-label": "UaudioUwaveform",
283
+ children: l || "UaudioUwaveform Component"
284
+ }
285
+ ), ue = ({
286
+ className: n,
287
+ children: l,
288
+ disabled: o
289
+ }) => /* @__PURE__ */ a.jsx(
290
+ "div",
291
+ {
292
+ className: v(
293
+ "p-4 rounded-lg border transition-colors",
294
+ "bg-white dark:bg-gray-900",
295
+ "border-gray-200 dark:border-gray-700",
296
+ "text-gray-900 dark:text-white",
297
+ o && "opacity-50 cursor-not-allowed",
298
+ n
299
+ ),
300
+ role: "region",
301
+ "aria-label": "LiveStream",
302
+ children: l || "LiveStream Component"
303
+ }
304
+ ), de = ({
305
+ className: n,
306
+ children: l,
307
+ disabled: o = !1,
308
+ onClick: d
309
+ }) => /* @__PURE__ */ a.jsx(
310
+ "div",
311
+ {
312
+ className: v(
313
+ "p-4 rounded-lg border transition-colors",
314
+ "bg-white dark:bg-gray-900",
315
+ "border-gray-200 dark:border-gray-700",
316
+ "text-gray-900 dark:text-white",
317
+ o && "opacity-50 cursor-not-allowed",
318
+ "hover:bg-gray-50 dark:hover:bg-gray-800",
319
+ n
320
+ ),
321
+ onClick: o ? void 0 : d,
322
+ role: "region",
323
+ "aria-label": "UmediaUplaylist",
324
+ children: l || "UmediaUplaylist Component"
325
+ }
326
+ ), fe = ({
327
+ accept: n = ["image/*", "video/*", "audio/*"],
328
+ maxSize: l = 50 * 1024 * 1024,
329
+ // 50MB default
330
+ maxFiles: o = 10,
331
+ multiple: d = !0,
332
+ onUpload: u,
333
+ onRemove: f,
334
+ className: p
335
+ }) => {
336
+ const [m, S] = H([]), [L, h] = H(!1), E = ae(null), A = (t) => {
337
+ t.preventDefault(), h(!0);
338
+ }, y = (t) => {
339
+ t.preventDefault(), h(!1);
340
+ }, O = (t) => {
341
+ t.preventDefault(), h(!1);
342
+ const b = Array.from(t.dataTransfer.files);
343
+ x(b);
344
+ }, M = (t) => {
345
+ if (t.target.files) {
346
+ const b = Array.from(t.target.files);
347
+ x(b);
348
+ }
349
+ }, x = (t) => {
350
+ const b = t.filter((g) => {
351
+ const _ = n.some((R) => {
352
+ if (R.endsWith("/*")) {
353
+ const j = R.split("/")[0];
354
+ return g.type.startsWith(j);
355
+ }
356
+ return g.type === R;
357
+ }), F = g.size <= l;
358
+ return _ && F;
359
+ }), w = o - m.length, C = b.slice(0, w), Y = C.map((g) => ({
360
+ id: `${Date.now()}-${Math.random()}`,
361
+ file: g,
362
+ preview: g.type.startsWith("image/") ? URL.createObjectURL(g) : void 0,
363
+ status: "pending"
364
+ }));
365
+ S((g) => [...g, ...Y]), u && u(C);
366
+ }, $ = (t) => {
367
+ S((b) => b.filter((w) => w.id !== t)), f && f(t);
368
+ }, P = (t) => t < 1024 ? `${t} B` : t < 1024 * 1024 ? `${(t / 1024).toFixed(1)} KB` : `${(t / (1024 * 1024)).toFixed(1)} MB`;
369
+ return /* @__PURE__ */ a.jsxs("div", { className: v("space-y-4", p), children: [
370
+ /* @__PURE__ */ a.jsxs(
371
+ "div",
372
+ {
373
+ onDragEnter: A,
374
+ onDragOver: (t) => t.preventDefault(),
375
+ onDragLeave: y,
376
+ onDrop: O,
377
+ onClick: () => E.current?.click(),
378
+ className: v(
379
+ "border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-colors",
380
+ L ? "border-blue-500 bg-blue-50 dark:bg-blue-900/20" : "border-gray-300 dark:border-gray-700 hover:border-gray-400 dark:hover:border-gray-600"
381
+ ),
382
+ children: [
383
+ /* @__PURE__ */ a.jsx(
384
+ "svg",
385
+ {
386
+ className: "w-12 h-12 mx-auto mb-4 text-gray-400 dark:text-gray-600",
387
+ fill: "none",
388
+ stroke: "currentColor",
389
+ viewBox: "0 0 24 24",
390
+ children: /* @__PURE__ */ a.jsx(
391
+ "path",
392
+ {
393
+ strokeLinecap: "round",
394
+ strokeLinejoin: "round",
395
+ strokeWidth: 2,
396
+ d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"
397
+ }
398
+ )
399
+ }
400
+ ),
401
+ /* @__PURE__ */ a.jsx("p", { className: "text-gray-700 dark:text-gray-300 mb-2", children: "Drag and drop files here, or click to browse" }),
402
+ /* @__PURE__ */ a.jsxs("p", { className: "text-sm text-gray-500 dark:text-gray-400", children: [
403
+ "Max ",
404
+ o,
405
+ " files, ",
406
+ P(l),
407
+ " each"
408
+ ] }),
409
+ /* @__PURE__ */ a.jsx(
410
+ "input",
411
+ {
412
+ ref: E,
413
+ type: "file",
414
+ multiple: d,
415
+ accept: n.join(","),
416
+ onChange: M,
417
+ className: "hidden"
418
+ }
419
+ )
420
+ ]
421
+ }
422
+ ),
423
+ m.length > 0 && /* @__PURE__ */ a.jsx("div", { className: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4", children: m.map((t) => /* @__PURE__ */ a.jsxs(
424
+ "div",
425
+ {
426
+ className: "relative aspect-square rounded-lg overflow-hidden bg-gray-100 dark:bg-gray-800",
427
+ children: [
428
+ t.preview ? /* @__PURE__ */ a.jsx(
429
+ "img",
430
+ {
431
+ src: t.preview,
432
+ alt: t.file.name,
433
+ className: "w-full h-full object-cover"
434
+ }
435
+ ) : /* @__PURE__ */ a.jsx("div", { className: "w-full h-full flex items-center justify-center", children: /* @__PURE__ */ a.jsx(
436
+ "svg",
437
+ {
438
+ className: "w-12 h-12 text-gray-400",
439
+ fill: "currentColor",
440
+ viewBox: "0 0 24 24",
441
+ children: /* @__PURE__ */ a.jsx("path", { d: "M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6zm4 18H6V4h7v5h5v11z" })
442
+ }
443
+ ) }),
444
+ /* @__PURE__ */ a.jsx(
445
+ "button",
446
+ {
447
+ onClick: () => $(t.id),
448
+ className: "absolute top-2 right-2 w-6 h-6 rounded-full bg-red-500 text-white flex items-center justify-center hover:bg-red-600 transition-colors",
449
+ children: /* @__PURE__ */ a.jsx(
450
+ "svg",
451
+ {
452
+ className: "w-4 h-4",
453
+ fill: "none",
454
+ stroke: "currentColor",
455
+ viewBox: "0 0 24 24",
456
+ children: /* @__PURE__ */ a.jsx(
457
+ "path",
458
+ {
459
+ strokeLinecap: "round",
460
+ strokeLinejoin: "round",
461
+ strokeWidth: 2,
462
+ d: "M6 18L18 6M6 6l12 12"
463
+ }
464
+ )
465
+ }
466
+ )
467
+ }
468
+ ),
469
+ /* @__PURE__ */ a.jsxs("div", { className: "absolute bottom-0 left-0 right-0 bg-black/70 text-white text-xs p-2", children: [
470
+ /* @__PURE__ */ a.jsx("p", { className: "truncate", children: t.file.name }),
471
+ /* @__PURE__ */ a.jsx("p", { className: "text-gray-300", children: P(t.file.size) })
472
+ ] })
473
+ ]
474
+ },
475
+ t.id
476
+ )) })
477
+ ] });
478
+ }, ge = ({
479
+ className: n,
480
+ children: l,
481
+ disabled: o
482
+ }) => /* @__PURE__ */ a.jsx(
483
+ "div",
484
+ {
485
+ className: v(
486
+ "p-4 rounded-lg border transition-colors",
487
+ "bg-white dark:bg-gray-900",
488
+ "border-gray-200 dark:border-gray-700",
489
+ "text-gray-900 dark:text-white",
490
+ o && "opacity-50 cursor-not-allowed",
491
+ n
492
+ ),
493
+ role: "region",
494
+ "aria-label": "PlaylistManager",
495
+ children: l || "PlaylistManager Component"
496
+ }
497
+ ), me = ({
498
+ className: n,
499
+ children: l,
500
+ disabled: o
501
+ }) => /* @__PURE__ */ a.jsx(
502
+ "div",
503
+ {
504
+ className: v(
505
+ "p-4 rounded-lg border transition-colors",
506
+ "bg-white dark:bg-gray-900",
507
+ "border-gray-200 dark:border-gray-700",
508
+ "text-gray-900 dark:text-white",
509
+ o && "opacity-50 cursor-not-allowed",
510
+ n
511
+ ),
512
+ role: "region",
513
+ "aria-label": "StreamingStats",
514
+ children: l || "StreamingStats Component"
515
+ }
516
+ ), be = ({
517
+ className: n,
518
+ children: l,
519
+ disabled: o
520
+ }) => /* @__PURE__ */ a.jsx(
521
+ "div",
522
+ {
523
+ className: v(
524
+ "p-4 rounded-lg border transition-colors",
525
+ "bg-white dark:bg-gray-900",
526
+ "border-gray-200 dark:border-gray-700",
527
+ "text-gray-900 dark:text-white",
528
+ o && "opacity-50 cursor-not-allowed",
529
+ n
530
+ ),
531
+ role: "region",
532
+ "aria-label": "VideoEditor",
533
+ children: l || "VideoEditor Component"
534
+ }
535
+ ), ve = ({
536
+ className: n,
537
+ children: l,
538
+ disabled: o = !1,
539
+ onClick: d
540
+ }) => /* @__PURE__ */ a.jsx(
541
+ "div",
542
+ {
543
+ className: v(
544
+ "p-4 rounded-lg border transition-colors",
545
+ "bg-white dark:bg-gray-900",
546
+ "border-gray-200 dark:border-gray-700",
547
+ "text-gray-900 dark:text-white",
548
+ o && "opacity-50 cursor-not-allowed",
549
+ "hover:bg-gray-50 dark:hover:bg-gray-800",
550
+ n
551
+ ),
552
+ onClick: o ? void 0 : d,
553
+ role: "region",
554
+ "aria-label": "UvideoUthumbnail",
555
+ children: l || "UvideoUthumbnail Component"
556
+ }
557
+ );
558
+ export {
559
+ ue as LiveStream,
560
+ fe as MediaUploader,
561
+ ge as PlaylistManager,
562
+ me as StreamingStats,
563
+ ce as UaudioUwaveform,
564
+ de as UmediaUplaylist,
565
+ ve as UvideoUthumbnail,
566
+ be as VideoEditor
567
+ };
@@ -0,0 +1,6 @@
1
+ (function(d,p){typeof exports=="object"&&typeof module<"u"?p(exports,require("react"),require("@sudobility/components")):typeof define=="function"&&define.amd?define(["exports","react","@sudobility/components"],p):(d=typeof globalThis<"u"?globalThis:d||self,p(d.Components={},d.React,d.components))})(this,(function(d,p,b){"use strict";var A={exports:{}},_={};var J;function re(){if(J)return _;J=1;var n=Symbol.for("react.transitional.element"),i=Symbol.for("react.fragment");function o(f,u,g){var y=null;if(g!==void 0&&(y=""+g),u.key!==void 0&&(y=""+u.key),"key"in u){g={};for(var v in u)v!=="key"&&(g[v]=u[v])}else g=u;return u=g.ref,{$$typeof:n,type:f,key:y,ref:u!==void 0?u:null,props:g}}return _.Fragment=i,_.jsx=o,_.jsxs=o,_}var R={};var q;function te(){return q||(q=1,process.env.NODE_ENV!=="production"&&(function(){function n(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===N?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case E:return"Fragment";case D:return"Profiler";case I:return"StrictMode";case M:return"Suspense";case V:return"SuspenseList";case W:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case F:return"Portal";case h:return e.displayName||"Context";case t:return(e._context.displayName||"Context")+".Consumer";case T:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case m:return r=e.displayName||null,r!==null?r:n(e.type)||"Memo";case S:r=e._payload,e=e._init;try{return n(e(r))}catch{}}return null}function i(e){return""+e}function o(e){try{i(e);var r=!1}catch{r=!0}if(r){r=console;var s=r.error,l=typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object";return s.call(r,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",l),i(e)}}function f(e){if(e===E)return"<>";if(typeof e=="object"&&e!==null&&e.$$typeof===S)return"<...>";try{var r=n(e);return r?"<"+r+">":"<...>"}catch{return"<...>"}}function u(){var e=O.A;return e===null?null:e.getOwner()}function g(){return Error("react-stack-top-frame")}function y(e){if(X.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function v(e,r){function s(){H||(H=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",r))}s.isReactWarning=!0,Object.defineProperty(e,"key",{get:s,configurable:!0})}function P(){var e=n(this.type);return Z[e]||(Z[e]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),e=this.props.ref,e!==void 0?e:null}function Y(e,r,s,l,L,z){var c=s.ref;return e={$$typeof:U,type:e,key:r,props:s,_owner:l},(c!==void 0?c:null)!==null?Object.defineProperty(e,"ref",{enumerable:!1,get:P}):Object.defineProperty(e,"ref",{enumerable:!1,value:null}),e._store={},Object.defineProperty(e._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:L}),Object.defineProperty(e,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:z}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function k(e,r,s,l,L,z){var c=r.children;if(c!==void 0)if(l)if(fe(c)){for(l=0;l<c.length;l++)j(c[l]);Object.freeze&&Object.freeze(c)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else j(c);if(X.call(r,"key")){c=n(e);var w=Object.keys(r).filter(function(ge){return ge!=="key"});l=0<w.length?"{key: someKey, "+w.join(": ..., ")+": ...}":"{key: someKey}",ee[c+l]||(w=0<w.length?"{"+w.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
2
+ let props = %s;
3
+ <%s {...props} />
4
+ React keys must be passed directly to JSX without using spread:
5
+ let props = %s;
6
+ <%s key={someKey} {...props} />`,l,c,w,c),ee[c+l]=!0)}if(c=null,s!==void 0&&(o(s),c=""+s),y(r)&&(o(r.key),c=""+r.key),"key"in r){s={};for(var B in r)B!=="key"&&(s[B]=r[B])}else s=r;return c&&v(s,typeof e=="function"?e.displayName||e.name||"Unknown":e),Y(e,c,s,u(),L,z)}function j(e){C(e)?e._store&&(e._store.validated=1):typeof e=="object"&&e!==null&&e.$$typeof===S&&(e._payload.status==="fulfilled"?C(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function C(e){return typeof e=="object"&&e!==null&&e.$$typeof===U}var x=p,U=Symbol.for("react.transitional.element"),F=Symbol.for("react.portal"),E=Symbol.for("react.fragment"),I=Symbol.for("react.strict_mode"),D=Symbol.for("react.profiler"),t=Symbol.for("react.consumer"),h=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),M=Symbol.for("react.suspense"),V=Symbol.for("react.suspense_list"),m=Symbol.for("react.memo"),S=Symbol.for("react.lazy"),W=Symbol.for("react.activity"),N=Symbol.for("react.client.reference"),O=x.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,X=Object.prototype.hasOwnProperty,fe=Array.isArray,$=console.createTask?console.createTask:function(){return null};x={react_stack_bottom_frame:function(e){return e()}};var H,Z={},Q=x.react_stack_bottom_frame.bind(x,g)(),K=$(f(g)),ee={};R.Fragment=E,R.jsx=function(e,r,s){var l=1e4>O.recentlyCreatedOwnerStacks++;return k(e,r,s,!1,l?Error("react-stack-top-frame"):Q,l?$(f(e)):K)},R.jsxs=function(e,r,s){var l=1e4>O.recentlyCreatedOwnerStacks++;return k(e,r,s,!0,l?Error("react-stack-top-frame"):Q,l?$(f(e)):K)}})()),R}var G;function ae(){return G||(G=1,process.env.NODE_ENV==="production"?A.exports=re():A.exports=te()),A.exports}var a=ae();const oe=({className:n,children:i,disabled:o=!1,onClick:f})=>a.jsx("div",{className:b.cn("p-4 rounded-lg border transition-colors","bg-white dark:bg-gray-900","border-gray-200 dark:border-gray-700","text-gray-900 dark:text-white",o&&"opacity-50 cursor-not-allowed","hover:bg-gray-50 dark:hover:bg-gray-800",n),onClick:o?void 0:f,role:"region","aria-label":"UaudioUwaveform",children:i||"UaudioUwaveform Component"}),ne=({className:n,children:i,disabled:o})=>a.jsx("div",{className:b.cn("p-4 rounded-lg border transition-colors","bg-white dark:bg-gray-900","border-gray-200 dark:border-gray-700","text-gray-900 dark:text-white",o&&"opacity-50 cursor-not-allowed",n),role:"region","aria-label":"LiveStream",children:i||"LiveStream Component"}),se=({className:n,children:i,disabled:o=!1,onClick:f})=>a.jsx("div",{className:b.cn("p-4 rounded-lg border transition-colors","bg-white dark:bg-gray-900","border-gray-200 dark:border-gray-700","text-gray-900 dark:text-white",o&&"opacity-50 cursor-not-allowed","hover:bg-gray-50 dark:hover:bg-gray-800",n),onClick:o?void 0:f,role:"region","aria-label":"UmediaUplaylist",children:i||"UmediaUplaylist Component"}),ie=({accept:n=["image/*","video/*","audio/*"],maxSize:i=50*1024*1024,maxFiles:o=10,multiple:f=!0,onUpload:u,onRemove:g,className:y})=>{const[v,P]=p.useState([]),[Y,k]=p.useState(!1),j=p.useRef(null),C=t=>{t.preventDefault(),k(!0)},x=t=>{t.preventDefault(),k(!1)},U=t=>{t.preventDefault(),k(!1);const h=Array.from(t.dataTransfer.files);E(h)},F=t=>{if(t.target.files){const h=Array.from(t.target.files);E(h)}},E=t=>{const h=t.filter(m=>{const S=n.some(N=>{if(N.endsWith("/*")){const O=N.split("/")[0];return m.type.startsWith(O)}return m.type===N}),W=m.size<=i;return S&&W}),T=o-v.length,M=h.slice(0,T),V=M.map(m=>({id:`${Date.now()}-${Math.random()}`,file:m,preview:m.type.startsWith("image/")?URL.createObjectURL(m):void 0,status:"pending"}));P(m=>[...m,...V]),u&&u(M)},I=t=>{P(h=>h.filter(T=>T.id!==t)),g&&g(t)},D=t=>t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`;return a.jsxs("div",{className:b.cn("space-y-4",y),children:[a.jsxs("div",{onDragEnter:C,onDragOver:t=>t.preventDefault(),onDragLeave:x,onDrop:U,onClick:()=>j.current?.click(),className:b.cn("border-2 border-dashed rounded-lg p-8 text-center cursor-pointer transition-colors",Y?"border-blue-500 bg-blue-50 dark:bg-blue-900/20":"border-gray-300 dark:border-gray-700 hover:border-gray-400 dark:hover:border-gray-600"),children:[a.jsx("svg",{className:"w-12 h-12 mx-auto mb-4 text-gray-400 dark:text-gray-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"})}),a.jsx("p",{className:"text-gray-700 dark:text-gray-300 mb-2",children:"Drag and drop files here, or click to browse"}),a.jsxs("p",{className:"text-sm text-gray-500 dark:text-gray-400",children:["Max ",o," files, ",D(i)," each"]}),a.jsx("input",{ref:j,type:"file",multiple:f,accept:n.join(","),onChange:F,className:"hidden"})]}),v.length>0&&a.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",children:v.map(t=>a.jsxs("div",{className:"relative aspect-square rounded-lg overflow-hidden bg-gray-100 dark:bg-gray-800",children:[t.preview?a.jsx("img",{src:t.preview,alt:t.file.name,className:"w-full h-full object-cover"}):a.jsx("div",{className:"w-full h-full flex items-center justify-center",children:a.jsx("svg",{className:"w-12 h-12 text-gray-400",fill:"currentColor",viewBox:"0 0 24 24",children:a.jsx("path",{d:"M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8l-6-6zm4 18H6V4h7v5h5v11z"})})}),a.jsx("button",{onClick:()=>I(t.id),className:"absolute top-2 right-2 w-6 h-6 rounded-full bg-red-500 text-white flex items-center justify-center hover:bg-red-600 transition-colors",children:a.jsx("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:a.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})}),a.jsxs("div",{className:"absolute bottom-0 left-0 right-0 bg-black/70 text-white text-xs p-2",children:[a.jsx("p",{className:"truncate",children:t.file.name}),a.jsx("p",{className:"text-gray-300",children:D(t.file.size)})]})]},t.id))})]})},le=({className:n,children:i,disabled:o})=>a.jsx("div",{className:b.cn("p-4 rounded-lg border transition-colors","bg-white dark:bg-gray-900","border-gray-200 dark:border-gray-700","text-gray-900 dark:text-white",o&&"opacity-50 cursor-not-allowed",n),role:"region","aria-label":"PlaylistManager",children:i||"PlaylistManager Component"}),ce=({className:n,children:i,disabled:o})=>a.jsx("div",{className:b.cn("p-4 rounded-lg border transition-colors","bg-white dark:bg-gray-900","border-gray-200 dark:border-gray-700","text-gray-900 dark:text-white",o&&"opacity-50 cursor-not-allowed",n),role:"region","aria-label":"StreamingStats",children:i||"StreamingStats Component"}),de=({className:n,children:i,disabled:o})=>a.jsx("div",{className:b.cn("p-4 rounded-lg border transition-colors","bg-white dark:bg-gray-900","border-gray-200 dark:border-gray-700","text-gray-900 dark:text-white",o&&"opacity-50 cursor-not-allowed",n),role:"region","aria-label":"VideoEditor",children:i||"VideoEditor Component"}),ue=({className:n,children:i,disabled:o=!1,onClick:f})=>a.jsx("div",{className:b.cn("p-4 rounded-lg border transition-colors","bg-white dark:bg-gray-900","border-gray-200 dark:border-gray-700","text-gray-900 dark:text-white",o&&"opacity-50 cursor-not-allowed","hover:bg-gray-50 dark:hover:bg-gray-800",n),onClick:o?void 0:f,role:"region","aria-label":"UvideoUthumbnail",children:i||"UvideoUthumbnail Component"});d.LiveStream=ne,d.MediaUploader=ie,d.PlaylistManager=le,d.StreamingStats=ce,d.UaudioUwaveform=oe,d.UmediaUplaylist=se,d.UvideoUthumbnail=ue,d.VideoEditor=de,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})}));
@@ -0,0 +1,18 @@
1
+ /**
2
+ * LiveStream Component
3
+ *
4
+ * Gaming component with full dark mode support.
5
+ *
6
+ * @component
7
+ * @example
8
+ * ```tsx
9
+ * <LiveStream className="custom-class" />
10
+ * ```
11
+ */
12
+ export interface LiveStreamProps {
13
+ className?: string;
14
+ children?: React.ReactNode;
15
+ disabled?: boolean;
16
+ }
17
+ export declare const LiveStream: ({ className, children, disabled, }: LiveStreamProps) => import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=live-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-stream.d.ts","sourceRoot":"","sources":["../src/live-stream.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,GAAI,oCAIxB,eAAe,4CAiBjB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * UmediaUplaylist Component
3
+ *
4
+ * A reusable UmediaUplaylist component with full dark mode support.
5
+ * Optimized for accessibility and AI-assisted development.
6
+ *
7
+ * @component
8
+ * @example
9
+ * ```tsx
10
+ * <UmediaUplaylist className="custom-class" />
11
+ * ```
12
+ *
13
+ * @remarks
14
+ * This component supports:
15
+ * - Light and dark themes automatically
16
+ * - Responsive design
17
+ * - Accessibility features
18
+ * - TypeScript type safety
19
+ *
20
+ * @see {@link https://docs.example.com/components/media-playlist}
21
+ */
22
+ export interface UmediaUplaylistProps {
23
+ /** Additional CSS classes */
24
+ className?: string;
25
+ /** Component children */
26
+ children?: React.ReactNode;
27
+ /** Disabled state */
28
+ disabled?: boolean;
29
+ /** Callback when component is interacted with */
30
+ onClick?: () => void;
31
+ }
32
+ export declare const UmediaUplaylist: ({ className, children, disabled, onClick, }: UmediaUplaylistProps) => import("react/jsx-runtime").JSX.Element;
33
+ //# sourceMappingURL=media-playlist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-playlist.d.ts","sourceRoot":"","sources":["../src/media-playlist.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,eAAe,GAAI,6CAK7B,oBAAoB,4CAmBtB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { default as React } from 'react';
2
+ export interface UploadedFile {
3
+ id: string;
4
+ file: File;
5
+ preview?: string;
6
+ progress?: number;
7
+ status: 'pending' | 'uploading' | 'success' | 'error';
8
+ error?: string;
9
+ }
10
+ export interface MediaUploaderProps {
11
+ /** Accepted file types */
12
+ accept?: string[];
13
+ /** Maximum file size in bytes */
14
+ maxSize?: number;
15
+ /** Maximum number of files */
16
+ maxFiles?: number;
17
+ /** Multiple file upload */
18
+ multiple?: boolean;
19
+ /** Upload handler */
20
+ onUpload?: (files: File[]) => void;
21
+ /** File remove handler */
22
+ onRemove?: (fileId: string) => void;
23
+ /** Additional className */
24
+ className?: string;
25
+ }
26
+ /**
27
+ * MediaUploader Component
28
+ *
29
+ * Drag-and-drop media uploader with previews.
30
+ * Supports images, videos, and audio files.
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * <MediaUploader
35
+ * accept={['image/*', 'video/*']}
36
+ * maxSize={10 * 1024 * 1024} // 10MB
37
+ * maxFiles={5}
38
+ * multiple
39
+ * onUpload={(files) => console.log('Uploading:', files)}
40
+ * />
41
+ * ```
42
+ */
43
+ export declare const MediaUploader: React.FC<MediaUploaderProps>;
44
+ //# sourceMappingURL=media-uploader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-uploader.d.ts","sourceRoot":"","sources":["../src/media-uploader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAGhD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACnC,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+LtD,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * PlaylistManager Component
3
+ *
4
+ * Entertainment component with full dark mode support.
5
+ *
6
+ * @component
7
+ * @example
8
+ * ```tsx
9
+ * <PlaylistManager className="custom-class" />
10
+ * ```
11
+ */
12
+ export interface PlaylistManagerProps {
13
+ className?: string;
14
+ children?: React.ReactNode;
15
+ disabled?: boolean;
16
+ }
17
+ export declare const PlaylistManager: ({ className, children, disabled, }: PlaylistManagerProps) => import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=playlist-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playlist-manager.d.ts","sourceRoot":"","sources":["../src/playlist-manager.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,GAAI,oCAI7B,oBAAoB,4CAiBtB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * StreamingStats Component
3
+ *
4
+ * Entertainment component with full dark mode support.
5
+ *
6
+ * @component
7
+ * @example
8
+ * ```tsx
9
+ * <StreamingStats className="custom-class" />
10
+ * ```
11
+ */
12
+ export interface StreamingStatsProps {
13
+ className?: string;
14
+ children?: React.ReactNode;
15
+ disabled?: boolean;
16
+ }
17
+ export declare const StreamingStats: ({ className, children, disabled, }: StreamingStatsProps) => import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=streaming-stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-stats.d.ts","sourceRoot":"","sources":["../src/streaming-stats.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,GAAI,oCAI5B,mBAAmB,4CAiBrB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * VideoEditor Component
3
+ *
4
+ * Entertainment component with full dark mode support.
5
+ *
6
+ * @component
7
+ * @example
8
+ * ```tsx
9
+ * <VideoEditor className="custom-class" />
10
+ * ```
11
+ */
12
+ export interface VideoEditorProps {
13
+ className?: string;
14
+ children?: React.ReactNode;
15
+ disabled?: boolean;
16
+ }
17
+ export declare const VideoEditor: ({ className, children, disabled, }: VideoEditorProps) => import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=video-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-editor.d.ts","sourceRoot":"","sources":["../src/video-editor.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,GAAI,oCAIzB,gBAAgB,4CAiBlB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * UvideoUthumbnail Component
3
+ *
4
+ * A reusable UvideoUthumbnail component with full dark mode support.
5
+ * Optimized for accessibility and AI-assisted development.
6
+ *
7
+ * @component
8
+ * @example
9
+ * ```tsx
10
+ * <UvideoUthumbnail className="custom-class" />
11
+ * ```
12
+ *
13
+ * @remarks
14
+ * This component supports:
15
+ * - Light and dark themes automatically
16
+ * - Responsive design
17
+ * - Accessibility features
18
+ * - TypeScript type safety
19
+ *
20
+ * @see {@link https://docs.example.com/components/video-thumbnail}
21
+ */
22
+ export interface UvideoUthumbnailProps {
23
+ /** Additional CSS classes */
24
+ className?: string;
25
+ /** Component children */
26
+ children?: React.ReactNode;
27
+ /** Disabled state */
28
+ disabled?: boolean;
29
+ /** Callback when component is interacted with */
30
+ onClick?: () => void;
31
+ }
32
+ export declare const UvideoUthumbnail: ({ className, children, disabled, onClick, }: UvideoUthumbnailProps) => import("react/jsx-runtime").JSX.Element;
33
+ //# sourceMappingURL=video-thumbnail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-thumbnail.d.ts","sourceRoot":"","sources":["../src/video-thumbnail.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,qBAAqB;IACpC,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,gBAAgB,GAAI,6CAK9B,qBAAqB,4CAmBvB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "@sudobility/entertainment-components",
3
+ "version": "1.0.9",
4
+ "description": "Entertainment and media UI components for React",
5
+ "type": "module",
6
+ "main": "dist/index.umd.js",
7
+ "module": "dist/index.esm.js",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.esm.js",
13
+ "require": "./dist/index.umd.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc && vite build",
22
+ "dev": "vite build --watch",
23
+ "type-check": "tsc --noEmit"
24
+ },
25
+ "keywords": [
26
+ "react",
27
+ "components",
28
+ "entertainment",
29
+ "typescript"
30
+ ],
31
+ "author": "John Q Huang",
32
+ "license": "MIT",
33
+ "peerDependencies": {
34
+ "@sudobility/components": "^3.0.0",
35
+ "@sudobility/design": "^1.1.3",
36
+ "react": "^18.0.0 || ^19.0.0",
37
+ "react-dom": "^18.0.0 || ^19.0.0"
38
+ },
39
+ "devDependencies": {
40
+ "@sudobility/components": "^3.0.0",
41
+ "@sudobility/design": "^1.1.3",
42
+ "@types/node": "^24.7.1",
43
+ "@types/react": "^19.2.2",
44
+ "@types/react-dom": "^19.2.2",
45
+ "@vitejs/plugin-react": "^5.1.0",
46
+ "class-variance-authority": "^0.7.1",
47
+ "clsx": "^2.1.1",
48
+ "react": "^19.2.0",
49
+ "react-dom": "^19.2.0",
50
+ "tailwind-merge": "^3.3.1",
51
+ "typescript": "^5.9.3",
52
+ "vite": "^7.1.12",
53
+ "vite-plugin-dts": "^4.5.4"
54
+ }
55
+ }