@meonode/ui 0.1.21 → 0.1.22

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 CHANGED
@@ -208,17 +208,18 @@ const LoginForm = Component(() =>
208
208
  ```tsx
209
209
  'use client'
210
210
  /**
211
- * This file showcases the integration of React hooks with @meonode/ui components
211
+ * This file showcases the integration of React hooks with `@meonode/ui` components
212
212
  * for building declarative user interfaces. It demonstrates different rendering
213
213
  * approaches, the use of Higher-Order Components (HOCs), and how theme context
214
214
  * is managed and propagated within the @meonode/ui component tree.
215
215
  */
216
- import { Component, Column, Row, P, Node, Button, Theme, Center, NodeInstance, Absolute } from '@meonode/ui'
216
+ import { Button, Center, Column, Component, Fixed, Node, type NodeInstance, P, Portal, Row, type Theme } from '@meonode/ui'
217
217
  import { useState, useEffect, ReactElement, ReactNode } from 'react'
218
218
  import { CssBaseline, FormControlLabel, TextField } from '@meonode/mui'
219
219
  import { Switch as MUISwitch } from '@mui/material'
220
220
  import { styled } from '@mui/material'
221
221
 
222
+ // Styled Material UI Switch component for theme toggling
222
223
  const MaterialUISwitch = styled(MUISwitch)(({ theme }) => ({
223
224
  width: 62,
224
225
  height: 34,
@@ -276,10 +277,8 @@ const MaterialUISwitch = styled(MUISwitch)(({ theme }) => ({
276
277
  }))
277
278
 
278
279
  /**
279
- * Defines the color palette for the light theme.
280
- * These color values are used by @meonode/ui components when they encounter
281
- * theme string references (e.g., 'theme.primary') and the current theme mode is 'light'.
282
- * In a larger application, this theme object would typically reside in a dedicated theme file.
280
+ * Light theme configuration containing color palette values.
281
+ * Used by `@meonode/ui` components when resolving theme references in light mode.
283
282
  */
284
283
  const lightTheme: Theme = {
285
284
  mode: 'light',
@@ -298,10 +297,8 @@ const lightTheme: Theme = {
298
297
  }
299
298
 
300
299
  /**
301
- * Defines the color palette for the dark theme.
302
- * Similar to the light theme, these colors are used by @meonode/ui components
303
- * when resolving theme string references, but specifically when the current theme
304
- * mode is 'dark'.
300
+ * Dark theme configuration containing color palette values.
301
+ * Used by `@meonode/ui` components when resolving theme references in dark mode.
305
302
  */
306
303
  const darkTheme: Theme = {
307
304
  mode: 'dark',
@@ -320,29 +317,15 @@ const darkTheme: Theme = {
320
317
  }
321
318
 
322
319
  /**
323
- * The main page component, implemented as a functional component using React hooks.
324
- * It manages the theme mode state and the visibility of additional content.
325
- *
326
- * This function is wrapped by the `Component` HOC from `@meonode/ui`. The `Component`
327
- * HOC transforms the function into a standard React component that returns a `ReactNode`,
328
- * making it compatible with React's rendering lifecycle and enabling SSR/CSR.
320
+ * Main page component using React hooks for state management.
321
+ * Manages theme mode and visibility of additional content sections.
322
+ * Wrapped by `Component` HOC to ensure React compatibility and SSR/CSR support.
329
323
  */
330
324
  export default Component(() => {
331
- // State hook to control the visibility of additional content sections.
332
325
  const [showMore, setShowDetails] = useState(false)
333
326
  const [mode, setMode] = useState<'dark' | 'light'>('light')
334
327
  const theme = mode === 'dark' ? darkTheme : lightTheme
335
328
 
336
- /**
337
- * The root of the UI tree is a `Column` component from `@meonode/ui`.
338
- * This `Column` sets the theme context for its children.
339
- * Its children include:
340
- * - A theme toggle switch using MUI components wrapped in `@meonode/ui`'s `Node`.
341
- * - A button to toggle the visibility of the detail sections.
342
- * - Various examples demonstrating how to render components that return either
343
- * `@meonode/ui` `Node` instances or `ReactNode`s, illustrating theme propagation
344
- * both unconditionally and conditionally, highlighting theme propagation.
345
- */
346
329
  return Column({
347
330
  theme: theme.colors,
348
331
  padding: 20,
@@ -351,8 +334,7 @@ export default Component(() => {
351
334
  backgroundColor: 'theme.background',
352
335
  color: 'theme.foreground',
353
336
  children: [
354
- CssBaseline, // Applies baseline Material UI styles for consistent rendering.
355
- // Theme toggle switch using MUI components wrapped with @meonode/ui's Node HOC.
337
+ CssBaseline,
356
338
  Center({
357
339
  children: FormControlLabel({
358
340
  control: Node(MaterialUISwitch).render() as ReactElement,
@@ -363,165 +345,196 @@ export default Component(() => {
363
345
  onChange: () => setMode(prev => (prev === 'dark' ? 'light' : 'dark')),
364
346
  }),
365
347
  }),
366
- // Button to show modal.
367
348
  Button('Show Modal', {
368
- onClick: () => Modal({ theme }), // Click handler to show modal immedietelly.
369
- cursor: 'pointer', // Visual cue for clickability.
370
- userSelect: 'none', // Prevents text selection on the button.
349
+ onClick: () => Modal({ theme: theme.colors }),
350
+ cursor: 'pointer',
351
+ userSelect: 'none',
371
352
  padding: '10px 20px',
372
- backgroundColor: 'theme.primary', // Background color sourced from the theme context.
353
+ backgroundColor: 'theme.primary',
373
354
  borderRadius: 5,
374
355
  fontWeight: 'bold',
375
356
  color: 'white',
376
357
  }),
377
- // Button to toggle the visibility of the detail sections.
378
- Button(showMore ? 'Hide' : 'Show More', {
379
- onClick: () => setShowDetails(prev => !prev), // Click handler to toggle the 'showMore' state.
380
- cursor: 'pointer', // Visual cue for clickability.
381
- userSelect: 'none', // Prevents text selection on the button.
358
+ Button(showMore ? 'Hide Details' : 'Show More Details', {
359
+ onClick: () => setShowDetails(prev => !prev),
360
+ cursor: 'pointer',
361
+ userSelect: 'none',
382
362
  padding: '10px 20px',
383
- backgroundColor: 'theme.accent', // Background color sourced from the theme context.
363
+ backgroundColor: 'theme.accent',
384
364
  borderRadius: 5,
385
365
  fontWeight: 'bold',
386
366
  color: 'white',
387
367
  }),
388
368
 
389
369
  /**
390
- * --- Unconditional Rendering Examples ---
391
- * These examples demonstrate rendering components that return either a
392
- * `@meonode/ui` `Node` instance (`DetailComponent`) or a `ReactNode`
393
- * (`ReturnRenderedDetailComponent`), and how the `Node` HOC affects this.
394
- * Observe how theme context is propagated (or not) in each case.
370
+ * Component rendering examples demonstrating theme context propagation:
371
+ * - Direct Node instance rendering
372
+ * - Rendered Node instances
373
+ * - ReactNode components
374
+ * - HOC usage patterns
395
375
  */
396
- // 1. Rendering a component that returns a @meonode/ui Node instance directly.
397
- // The internal Row component correctly receives theme context from the parent Column.
398
- DetailComponent({ info: 'Detail 1 (Node instance)' }),
376
+ DetailComponent({
377
+ info: 'Detail 1: Rendering a component that returns a @meonode/ui Node instance directly. The internal Row component correctly receives theme context from the parent Column.',
378
+ }),
379
+
380
+ DetailComponent({
381
+ info: 'Detail 2: Rendering a component that returns a @meonode/ui Node instance, then calling .render(). The internal Row component also correctly receives theme context.',
382
+ }).render(),
399
383
 
400
- // 2. Rendering a component that returns a @meonode/ui Node instance, then calling .render().
401
- // The internal Row component also correctly receives theme context.
402
- DetailComponent({ info: 'Detail 2 (Node instance + .render())' }).render(),
384
+ // Fails: The Node HOC expects the wrapped function to return a ReactNode, not a @meonode/ui Node instance.
385
+ // Node(DetailComponent, { info: 'Detail 3: Attempting to wrap a component returning a Node instance with Node HOC.' }),
403
386
 
404
- // 3. Attempting to wrap a component returning a Node instance with Node HOC.
405
- // ❌ Fails: The Node HOC expects the wrapped function to return a ReactNode, not a @meonode/ui Node instance.
406
- // Node(DetailComponent, { info: 'Detail 3 (Node HOC on Node instance)' }),
387
+ ReturnRenderedDetailComponent({
388
+ info: 'Detail 4: Rendering a component that explicitly returns a ReactNode (.render() is called internally). The internal Row component correctly receives theme context from the parent Column.',
389
+ }),
407
390
 
408
- // 4. Rendering a component that explicitly returns a ReactNode (.render() is called internally).
409
- // The internal Row component correctly receives theme context from the parent Column.
410
- ReturnRenderedDetailComponent({ info: 'Detail 4 (ReactNode)' }),
391
+ Node(ReturnRenderedDetailComponent, {
392
+ info: "Detail 5: Wrapping a component returning ReactNode with Node HOC (without .render()). Renders successfully. However, the Node HOC does NOT propagate theme context to the wrapped component's children.",
393
+ }),
411
394
 
412
- // 5. Wrapping a component returning ReactNode with Node HOC.
413
- // Renders successfully. However, the Node HOC does NOT propagate theme context to the wrapped component's children.
414
- Node(ReturnRenderedDetailComponent, { info: 'Detail 5 (Node HOC on ReactNode)' }),
395
+ // TODO: This case seems redundant with #5. Re-evaluate if needed or if the description needs refinement.
396
+ Node(ReturnRenderedDetailComponent, {
397
+ info: 'Detail 6: Wrapping a component returning ReactNode with Node HOC, then calling .render(). Renders successfully. Theme context is NOT propagated by the Node HOC.',
398
+ }).render(),
415
399
 
416
- // 6. Wrapping a component returning ReactNode with Node HOC, then calling .render().
417
- // Renders successfully. Theme context is NOT propagated by the Node HOC.
418
- Node(ReturnRenderedDetailComponent, { info: 'Detail 6 (Node HOC on ReactNode + .render())' }).render(),
400
+ WrappedDetailComponent({
401
+ info: 'Detail 7: Using Component HOC with Node instance returns. Theme context is correctly propagated.',
402
+ }),
419
403
 
420
404
  /**
421
- * Conditional rendering examples (shown when 'showMore' is true):
422
- * These demonstrate various wrapping techniques (inline functions, Component HOC)
423
- * and their effect on rendering and theme propagation for both types of detail components.
405
+ * Conditional rendering examples (visible when showMore is true)
406
+ * Demonstrates:
407
+ * - Inline function wrappers
408
+ * - Component HOC usage
409
+ * - Theme context propagation patterns
424
410
  */
425
- // 7. Conditional rendering of a component returning a Node instance using an inline function wrapper.
426
- // Renders successfully when `showMore` is true. The internal Row receives theme context.
427
- showMore && (() => DetailComponent({ info: 'Detail 7 (Conditional inline function + Node instance)' })),
428
-
429
- // 8. Conditional rendering of a component returning a Node instance using an inline function wrapper, then calling .render().
430
- // Renders successfully when `showMore` is true. The internal Row receives theme context.
431
- showMore && (() => DetailComponent({ info: 'Detail 8 (Conditional inline function + Node instance + .render())' }).render()),
432
-
433
- // 9. Conditional rendering of a component returning a Node instance using the Component HOC wrapper.
434
- // Renders successfully when `showMore` is true. The internal Row receives theme context.
435
- showMore && Component(() => DetailComponent({ info: 'Detail 9 (Conditional Component HOC + Node instance)' })),
436
-
437
- // 10. Conditional rendering of a component returning ReactNode using an inline function wrapper.
438
- // Renders successfully when `showMore` is true. The internal Row receives theme context.
439
- showMore && (() => ReturnRenderedDetailComponent({ info: 'Detail 10 (Conditional inline function + ReactNode)' })),
440
-
441
- // 11. Conditional rendering of a component returning ReactNode using the Component HOC wrapper.
442
- // Renders successfully when `showMore` is true. The internal Row receives theme context.
443
- showMore && Component(() => ReturnRenderedDetailComponent({ info: 'Detail 11 (Conditional Component HOC + ReactNode)' })),
444
- // showMore && ReturnRenderedDetailComponent({ info: 'Here are some details 15!' }), // ❌ Fails: Direct call to a component function using hooks (ReturnRenderedDetailComponent) inside render logic without a React-aware wrapper. This can violate Rules of Hooks.
411
+ showMore &&
412
+ (() =>
413
+ DetailComponent({
414
+ info: 'Detail 8: Conditional rendering of a Node instance component using inline function wrapper. Theme context is correctly received.',
415
+ })),
416
+
417
+ showMore &&
418
+ (() =>
419
+ DetailComponent({
420
+ info: 'Detail 9: Conditional rendering of a Node instance component with .render() call. Theme context is correctly propagated.',
421
+ }).render()),
422
+
423
+ showMore &&
424
+ WrappedDetailComponent({
425
+ info: 'Detail 10: Conditional rendering using Component HOC with Node instance. Theme context is correctly propagated.',
426
+ }),
427
+
428
+ showMore &&
429
+ (() =>
430
+ ReturnRenderedDetailComponent({
431
+ info: 'Detail 11: Conditional rendering of ReactNode component using inline function. Theme context is properly propagated.',
432
+ })),
433
+
434
+ showMore &&
435
+ Component(() =>
436
+ ReturnRenderedDetailComponent({
437
+ info: 'Detail 12: Conditional rendering with Component HOC wrapping ReactNode component. Note that theme context is not propagated in this case.',
438
+ }),
439
+ ),
440
+
441
+ // showMore && ReturnRenderedDetailComponent({
442
+ // info: 'Detail 15: Direct component call violates Rules of Hooks!'
443
+ // }), // ❌ Fails: Direct call to a component function using hooks inside render logic without a React-aware wrapper.
445
444
  ],
446
445
  })
447
446
  })
448
447
 
449
448
  /**
450
- * A component that displays a styled detail section.
451
- * It uses `useEffect` for lifecycle logging. The internal `Row` component
452
- * sources its theme from the React context provided by an ancestor `@meonode/ui`
453
- * component (like the main `Column` in this page).
454
- *
455
- * This component returns a @meonode/ui `Row` Node instance.
456
- * This type of component is suitable for direct inclusion as a child within other
457
- * `@meonode/ui` components that expect `Node` instances or arrays of `Node` instances.
458
- * @param {object} props - Component properties.
459
- * @param {string} props.info - Text content to display in the detail section.
460
- * @returns {NodeInstance} A @meonode/ui Row Node instance.
449
+ * Styled detail section component returning a Node instance.
450
+ * Uses useEffect for lifecycle logging.
451
+ * Theme context is received from parent @meonode/ui components.
461
452
  */
462
453
  const DetailComponent = ({ info }: { info: string }): NodeInstance => {
463
- // useEffect hook for logging component mount and unmount phases (for debugging).
464
454
  useEffect(() => {
465
- console.log('DetailComponent mounted:', info) // Example mount log
455
+ console.log('DetailComponent mounted:', info)
466
456
  return () => {
467
- console.log('DetailComponent unmounted:', info) // Example unmount log
457
+ console.log('DetailComponent unmounted:', info)
468
458
  }
469
- }, [info]) // Effect depends on 'info' prop.
459
+ }, [info])
470
460
 
471
- // Returns a @meonode/ui Row Node instance configured with props and children.
472
- // Its styling (e.g., backgroundColor) will resolve theme strings from React context.
473
461
  return Row({
474
462
  alignItems: 'center',
475
463
  gap: 10,
476
464
  padding: 4,
477
465
  border: '2px solid theme.accent',
478
466
  borderRadius: 6,
479
- backgroundColor: 'theme.warning', // Background color sourced from theme in React context.
467
+ backgroundColor: 'theme.warning',
480
468
  color: 'theme.danger',
481
469
  children: [P(info, { flex: 1, padding: '0 20px' }), TextField({ flex: 1, sx: { background: 'theme.primary' } })],
482
470
  })
483
471
  }
484
472
 
485
473
  /**
486
- * An alternative detail component implementation that explicitly calls `.render()`
487
- * to return a `ReactNode` (a rendered React element) directly.
488
- * This makes it compatible with standard React rendering patterns and wrappers
489
- * like the `Node` HOC that specifically expect a function returning `ReactNode`.
490
- * It uses `useEffect` for lifecycle logging. The internal `Row` sources its
491
- * theme from React context.
492
- *
493
- * This component returns a `ReactNode`.
494
- * @param {object} props - Component properties.
495
- * @param {string} props.info - Text content to display.
496
- * @returns {React.ReactNode} A rendered React element (the result of `Row(...).render()`).
474
+ * Styled detail section component wrapped with Component HOC.
475
+ * Similar to DetailComponent but demonstrates HOC pattern.
476
+ * Theme context is correctly propagated through the HOC.
477
+ */
478
+ const WrappedDetailComponent = Component(({ info }): NodeInstance => {
479
+ useEffect(() => {
480
+ console.log('DetailComponent mounted')
481
+ return () => {
482
+ console.log('DetailComponent unmounted')
483
+ }
484
+ }, [info])
485
+
486
+ return Row({
487
+ alignItems: 'center',
488
+ gap: 10,
489
+ padding: 4,
490
+ border: '2px solid theme.accent',
491
+ borderRadius: 6,
492
+ backgroundColor: 'theme.warning',
493
+ color: 'theme.danger',
494
+ children: [P(info, { flex: 1, padding: '0 20px' }), TextField({ flex: 1, sx: { background: 'theme.primary' } })],
495
+ })
496
+ })
497
+
498
+ /**
499
+ * Alternative detail component implementation returning ReactNode.
500
+ * Explicitly calls .render() for React compatibility.
501
+ * Demonstrates theme context usage with standard React patterns.
497
502
  */
498
503
  const ReturnRenderedDetailComponent = ({ info }: { info: string }): ReactNode => {
499
- // useEffect hook for logging component mount and unmount phases (for debugging).
500
504
  useEffect(() => {
501
- console.log('ReturnRenderedDetailComponent mounted:', info) // Example mount log
505
+ console.log('ReturnRenderedDetailComponent mounted')
502
506
  return () => {
503
- console.log('ReturnRenderedDetailComponent unmounted:', info) // Example unmount log
507
+ console.log('ReturnRenderedDetailComponent unmounted')
504
508
  }
505
- }, [info]) // Effect depends on 'info' prop.
509
+ }, [info])
506
510
 
507
- // Constructs a @meonode/ui Row and immediately calls .render() on it.
508
- // The Row itself will attempt to resolve theme strings (e.g., 'theme.background.secondary')
509
- // from the React context provided by an ancestor @meonode/ui component (like the main Column).
510
511
  return Row({
511
512
  alignItems: 'center',
512
513
  gap: 10,
513
514
  padding: 4,
514
515
  border: '2px solid theme.accent',
515
516
  borderRadius: 6,
516
- backgroundColor: 'theme.warning', // Theme-aware background; relies on theme from React context.
517
+ backgroundColor: 'theme.warning',
517
518
  color: 'theme.danger',
518
519
  children: [P(info, { flex: 1, padding: '0 20px' }), TextField({ flex: 1, sx: { background: 'theme.primary' } })],
519
- }).render() // Explicitly renders to ReactNode.
520
+ }).render()
520
521
  }
521
522
 
522
- const Modal = ({ theme }: { theme: Theme }) => {
523
- const modal = Absolute({
524
- theme: theme.colors,
523
+ /**
524
+ * Modal component using Portal HOC for DOM placement.
525
+ * Demonstrates theme-aware content rendering outside main hierarchy.
526
+ * Includes nested modal support and Material UI integration.
527
+ */
528
+ const Modal = Portal(({ theme, portal }) => {
529
+ useEffect(() => {
530
+ console.log('Modal mounted')
531
+ return () => {
532
+ console.log('Modal unmounted')
533
+ }
534
+ }, [])
535
+
536
+ return Fixed({
537
+ theme,
525
538
  top: 0,
526
539
  left: 0,
527
540
  right: 0,
@@ -532,50 +545,62 @@ const Modal = ({ theme }: { theme: Theme }) => {
532
545
  alignItems: 'center',
533
546
  onClick: e => {
534
547
  if (e.target === e.currentTarget) {
535
- modal?.unmount()
548
+ portal.unmount()
536
549
  }
537
550
  },
538
- children: Column({
539
- width: '50%',
540
- height: '50%',
541
- backgroundColor: 'theme.background',
542
- borderRadius: '8px',
543
- boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)',
544
- transition: 'transform 0.2s ease-in-out',
545
- padding: 10,
546
- gap: 10,
547
- color: 'theme.foreground',
548
- children: [
549
- Center({ fontWeight: 'bold', children: 'Hello There' }),
550
- TextField({
551
- sx: {
552
- '& .MuiFormLabel-root': {
553
- color: 'theme.foreground',
554
- '&.Mui-focused': {
551
+ children: [
552
+ Column({
553
+ width: '50%',
554
+ height: '80%',
555
+ backgroundColor: 'theme.background',
556
+ borderRadius: '8px',
557
+ boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)',
558
+ padding: 10,
559
+ gap: 10,
560
+ color: 'theme.foreground',
561
+ children: [
562
+ Button('More Modal', {
563
+ onClick: () => Modal({ theme }),
564
+ cursor: 'pointer',
565
+ userSelect: 'none',
566
+ padding: '10px 20px',
567
+ backgroundColor: 'theme.primary',
568
+ borderRadius: 5,
569
+ fontWeight: 'bold',
570
+ color: 'white',
571
+ }),
572
+ Center({ fontWeight: 'bold', children: 'Modal' }),
573
+ Center({ children: Math.random() * 1000 }),
574
+ TextField({
575
+ sx: {
576
+ '& .MuiFormLabel-root': {
555
577
  color: 'theme.foreground',
578
+ '&.Mui-focused': {
579
+ color: 'theme.foreground',
580
+ },
556
581
  },
557
- },
558
- '& .MuiOutlinedInput-root': {
559
- color: 'theme.foreground',
560
- '& fieldset': {
561
- borderColor: 'theme.foreground',
562
- },
563
- '&:hover fieldset': {
564
- borderColor: 'theme.foreground',
565
- },
566
- '&.Mui-focused fieldset': {
567
- borderColor: 'theme.foreground',
582
+ '& .MuiOutlinedInput-root': {
583
+ color: 'theme.foreground',
584
+ '& fieldset': {
585
+ borderColor: 'theme.foreground',
586
+ },
587
+ '&:hover fieldset': {
588
+ borderColor: 'theme.foreground',
589
+ },
590
+ '&.Mui-focused fieldset': {
591
+ borderColor: 'theme.foreground',
592
+ },
593
+ borderRadius: 2,
568
594
  },
569
- borderRadius: 2,
570
595
  },
571
- },
572
- label: 'Hello',
573
- fullWidth: true,
574
- }),
575
- ],
576
- }),
577
- }).toPortal()
578
- }
596
+ label: 'Hello',
597
+ fullWidth: true,
598
+ }),
599
+ ],
600
+ }),
601
+ ],
602
+ })
603
+ })
579
604
  ```
580
605
 
581
606
  ---
@@ -584,10 +609,12 @@ const Modal = ({ theme }: { theme: Theme }) => {
584
609
 
585
610
  ### Core Functions
586
611
 
587
- | Function | Parameters | Description |
588
- |-------------|-----------------------------------------|----------------------------------------------|
589
- | `Node` | `element: string | React.ComponentType`, `baseProps: object` | Creates a configurable UI node |
590
- | `Component` | `(props: P) => Node | ReactNode` | Converts node trees to React components |
612
+ | Function | Parameters | Description |
613
+ |-------------|--------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------|
614
+ | `Node` | `element: NodeElement \| React.ComponentType`, `baseProps: object` | Constructs a configurable UI node that supports flexible properties and dynamic styling. |
615
+ | `Component` | `(props: P) => ComponentNode` | Transforms node trees into reusable React components with built-in type safety and seamless integration. |
616
+ | `Portal` | `(props: P) => ComponentNode` | Converts node trees to React components and renders them in a React Portal with advanced DOM placement. |
617
+ |
591
618
 
592
619
  ---
593
620
 
@@ -1,5 +1,6 @@
1
- import React, { type ReactNode } from 'react';
1
+ import React from 'react';
2
2
  import type { ComponentNode, NodeElement, NodeInstance, NodeProps, Theme } from './node.type.js';
3
+ import { type Root as ReactDOMRoot } from 'react-dom/client';
3
4
  /**
4
5
  * Factory function to create a BaseNode instance.
5
6
  * @param element The React element type.
@@ -16,7 +17,7 @@ export declare function Node<E extends NodeElement>(element: E, props?: Partial<
16
17
  * - Handles theme inheritance and merging
17
18
  * - Preserves component props
18
19
  * - Type-safe with generic prop types
19
- * @template T - The props type for the wrapped component
20
+ * @template P - The props type for the wrapped component
20
21
  * @param component Component function that returns a BaseNode or ReactNode
21
22
  * @returns A React function component that handles BaseNode conversion and theme propagation
22
23
  * @example
@@ -29,7 +30,36 @@ export declare function Node<E extends NodeElement>(element: E, props?: Partial<
29
30
  * })
30
31
  * ```
31
32
  */
32
- export declare function Component<T extends Record<string, any> & {
33
+ export declare function Component<P extends Record<string, any> & {
33
34
  theme?: Theme;
34
- }>(component: (props: T) => ComponentNode): (props?: any) => string | number | bigint | boolean | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | NodeInstance<any> | (() => NodeInstance<any> | ReactNode) | null | undefined;
35
+ }>(component: (props: P) => ComponentNode): (props?: any) => React.ReactNode;
36
+ /**
37
+ * Creates a portal wrapper component for rendering content outside the normal DOM hierarchy.
38
+ * Portals are useful for rendering modals, tooltips, and other overlays that need to break out
39
+ * of their parent container's DOM structure while maintaining React context and event bubbling.
40
+ *
41
+ * Key features:
42
+ * - Renders content to a separate DOM node outside the parent hierarchy
43
+ * - Maintains theme inheritance through the portal
44
+ * - Provides portal instance with unmount control
45
+ * - Automatically cleans up DOM nodes on unmount
46
+ * @template P Props type for the wrapped component including theme and portal instance
47
+ * @param component Component function that returns portal content
48
+ * @returns Function that creates and manages the portal instance
49
+ * @example
50
+ * ```ts
51
+ * const Modal = Portal(({ portal }) => {
52
+ * return Div({
53
+ * onClick: () => portal.unmount(),
54
+ * children: "Click to close"
55
+ * })
56
+ * })
57
+ * ```
58
+ */
59
+ export declare function Portal<P extends Record<string, any> & {
60
+ theme?: Theme;
61
+ portal: {
62
+ unmount: () => void;
63
+ };
64
+ }>(component: (props: P) => ComponentNode): (props?: any) => ReactDOMRoot | null;
35
65
  //# sourceMappingURL=core.node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.node.d.ts","sourceRoot":"","sources":["../src/core.node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAkF,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAC7H,OAAO,KAAK,EAAE,aAAa,EAAyC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAgB,KAAK,EAAE,MAAM,mBAAmB,CAAA;AA0bxJ;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,GAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAU1G;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,aAAa,IAEzG,QAAO,GAAQ,sZAmBxB"}
1
+ {"version":3,"file":"core.node.d.ts","sourceRoot":"","sources":["../src/core.node.ts"],"names":[],"mappings":"AACA,OAAO,KAAyG,MAAM,OAAO,CAAA;AAC7H,OAAO,KAAK,EAAE,aAAa,EAAyC,WAAW,EAAE,YAAY,EAAE,SAAS,EAAgB,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAGxJ,OAAO,EAAc,KAAK,IAAI,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAqbxE;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,GAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAU1G;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,aAAa,IAiBzG,QAAO,GAAQ,qBACxB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CACpB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAA;CAChC,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,aAAa,IAe9B,QAAO,GAAQ,yBAIxB"}
package/dist/core.node.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var _excluded=["children","nodeTheme","theme"],_excluded2=["children","key"];function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&{}.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c={};for(var d in a)if({}.hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _classCallCheck(b,a){if(!(b instanceof a))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!=_typeof(a)||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}import React,{createElement,isValidElement}from"react";import{getComponentType,getCSSProps,getDOMProps,getElementTypeName,getValueByPath}from"./node.helper.js";import{isForwardRef,isMemo,isReactClassComponent,isValidElementType}from"./react-is.helper.js";import{createRoot}from"react-dom/client";/**
1
+ "use strict";var _excluded=["children","nodetheme","theme"],_excluded2=["style"],_excluded3=["children","key"];function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],-1===b.indexOf(c)&&{}.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c={};for(var d in a)if({}.hasOwnProperty.call(a,d)){if(-1!==b.indexOf(d))continue;c[d]=a[d]}return c}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _classCallCheck(b,a){if(!(b instanceof a))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return(b=_toPropertyKey(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"==_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!=_typeof(a)||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}import React,{createElement,isValidElement}from"react";import{getComponentType,getCSSProps,getDOMProps,getElementTypeName,getValueByPath}from"./node.helper.js";import{isForwardRef,isMemo,isReactClassComponent,isValidElementType}from"./react-is.helper.js";import{createRoot}from"react-dom/client";/**
2
2
  * Represents a node in a React component tree with theme and styling capabilities.
3
3
  * This class wraps React elements and handles:
4
4
  * - Props processing and normalization
@@ -14,30 +14,31 @@
14
14
  * - Normalizing children with theme inheritance
15
15
  * @param element The React element/component to wrap
16
16
  * @param rawProps Initial props including theme, styles, and children
17
- */function BaseNode(a){var b=this,c=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{};_classCallCheck(this,BaseNode),_defineProperty(this,"_portalDOMElement",null),_defineProperty(this,"_portalReactRoot",null),_defineProperty(this,"_normalizeChild",function(a){var c,d;if(!a)return a;var e=(null===(c=b.rawProps)||void 0===c?void 0:c.nodeTheme)||(null===(d=b.rawProps)||void 0===d?void 0:d.theme)||b.props.nodeTheme||b.props.theme;// For BaseNode instances, apply current theme if child has no theme
18
- if(a instanceof BaseNode){var f;return null!==(f=a.rawProps)&&void 0!==f&&f.nodeTheme||void 0===e?a.render():new BaseNode(a.element,_objectSpread(_objectSpread({},a.rawProps),{},{nodeTheme:e})).render()}// For React.Component instances, wrap in BaseNode with theme if needed
19
- if(a instanceof React.Component)return a.props.nodeTheme||void 0===e?a.render():new BaseNode(a.render(),_objectSpread(_objectSpread({},a.props),{},{nodeTheme:e})).render();// Validate element type before returning
17
+ */function BaseNode(a){var b=this,c=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{};_classCallCheck(this,BaseNode),_defineProperty(this,"_portalDOMElement",null),_defineProperty(this,"_portalReactRoot",null),_defineProperty(this,"_normalizeChild",function(a){var c,d;if(!a)return a;var e=(null===(c=b.rawProps)||void 0===c?void 0:c.nodetheme)||(null===(d=b.rawProps)||void 0===d?void 0:d.theme)||b.props.nodetheme||b.props.theme;// For BaseNode instances, apply current theme if child has no theme
18
+ if(a instanceof BaseNode){var f;return null!==(f=a.rawProps)&&void 0!==f&&f.nodetheme||void 0===e?a.render():new BaseNode(a.element,_objectSpread(_objectSpread({},a.rawProps),{},{nodetheme:e})).render()}// For React.Component instances, wrap in BaseNode with theme if needed
19
+ if(a instanceof React.Component)return a.props.nodetheme||void 0===e?a.render():new BaseNode(a.render(),_objectSpread(_objectSpread({},a.props),{},{nodetheme:e})).render();// Validate element type before returning
20
20
  if(!isValidElementType(a)){var g=getComponentType(a);throw new Error("Invalid element type: ".concat(g," provided!"))}// Return valid React elements as-is
21
21
  return a}),this.element=a,this.rawProps=c;// Destructure raw props into relevant parts
22
- var d=c.children,e=c.nodeTheme,f=c.theme,g=_objectWithoutProperties(c,_excluded),h=this._resolveObjWithTheme(g,e),i=getCSSProps(h),j=getDOMProps(h),k=void 0;// Resolve any theme variables in the remaining props
22
+ var d=c.children,e=c.nodetheme,f=c.theme,g=_objectWithoutProperties(c,_excluded),h=f||e,i=this._resolveObjWithTheme(g,h),j=getCSSProps(i),k=getDOMProps(i),l=void 0;// Resolve any theme variables in the remaining props
23
23
  // Extract style-related props that match valid CSS properties
24
24
  // Extract remaining props that are valid DOM attributes
25
25
  // Process children while maintaining theme inheritance
26
26
  // Combine processed props into final normalized form
27
- d&&(Array.isArray(d)?k=d.map(function(a,c){return b._processRawNode(a,e,c)}):k=this._processRawNode(d,e)),this.props=_objectSpread(_objectSpread({},j),{},{style:i,nodeTheme:e,children:k})}/**
27
+ d&&(Array.isArray(d)?l=d.map(function(a,c){return b._processRawNode(a,h,c)}):l=this._processRawNode(d,h)),this.props=_objectSpread(_objectSpread({},k),{},{style:j,nodetheme:h,theme:f,children:l})}/**
28
28
  * Resolves obj properties by replacing theme path placeholders with actual theme values.
29
29
  * Handles complex strings like '1px solid theme.background.primary' and nested objects.
30
30
  * @param obj The initial obj properties object.
31
31
  * @param theme The theme object to use for resolving paths.
32
32
  * @returns A new CSSProperties object with theme values resolved.
33
33
  */return _createClass(BaseNode,[{key:"_resolveObjWithTheme",value:function _resolveObjWithTheme(a,b){var c;// Return early if no theme or empty object
34
- if(!b||0===Object.keys(a).length)return a;// Merge raw nodeTheme with passed theme for resolution
35
- var d=_objectSpread(_objectSpread({},null===(c=this.rawProps)||void 0===c?void 0:c.nodeTheme),b),e=function resolveRecursively(a){var b={};// Process each property in the current object
36
- for(var c in a){var f=a[c];if(c.startsWith("_"))return a;// Handle string values containing theme references
34
+ if(!b||0===Object.keys(a).length)return a;// Merge raw nodetheme with passed theme for resolution
35
+ var d=_objectSpread(_objectSpread({},null===(c=this.rawProps)||void 0===c?void 0:c.nodetheme),b),e=function resolveRecursively(a){var b={};// Process each property in the current object
36
+ for(var c in a){var f=a[c];if(c.startsWith("_"))return a;// Hack to pass Next.js shitty error caused by Turbopack development thingy
37
+ // Handle string values containing theme references
37
38
  if("string"==typeof f&&f.includes("theme.")){var g=f;// Replace theme path placeholders with actual theme values
38
39
  g=g.replace(/theme\.([a-zA-Z0-9_.-]+)/g,function(a,b){var c=getValueByPath(d,b);// Convert the theme value to string if it exists and is a valid type
39
40
  return null!=c&&["string","number"].includes(_typeof(c))?c+"":a}),b[c]=g}// Recursively process nested objects (excluding arrays)
40
- else b[c]=f&&"object"===_typeof(f)?e(f):f}return b};/**
41
+ else b[c]=f&&"object"===_typeof(f)&&!Array.isArray(f)?e(f):f}return b};/**
41
42
  * Recursively resolves theme values in an object
42
43
  * @param currentObj The current object level being processed
43
44
  * @returns New object with resolved theme values
@@ -52,11 +53,11 @@ else b[c]=f&&"object"===_typeof(f)?e(f):f}return b};/**
52
53
  * @param props.passedTheme The theme to provide to the child, if applicable.
53
54
  * @returns The rendered ReactNode, with theme applied if necessary.
54
55
  */},{key:"_functionRenderer",value:function _functionRenderer(a){var b=a.render,c=a.passedTheme,d=a.passedKey,e=a.processRawNode,f=b();// Call the user-provided render function to get the child.
55
- if(f instanceof React.Component){var g=f.render(),h=e(g,c);return h instanceof BaseNode?h.render():h}if(f instanceof BaseNode){var i,j=f;// If the returned BaseNode does not have its own theme, but a theme is provided,
56
+ if(f instanceof React.Component){var g=f.render(),h=e(g,c);if(h instanceof BaseNode){var i,j;if(((null===(i=h.rawProps)||void 0===i?void 0:i.theme)||(null===(j=h.rawProps)||void 0===j?void 0:j.nodetheme))===void 0&&c!==void 0){var k,l,m;return new BaseNode(h.element,_objectSpread(_objectSpread({},h.rawProps),{},{nodetheme:(null===(k=h.rawProps)||void 0===k?void 0:k.theme)||(null===(l=h.rawProps)||void 0===l?void 0:l.nodetheme)||c,key:(null===(m=h.rawProps)||void 0===m?void 0:m.key)||d})).render()}}return h}if(f instanceof BaseNode){var n,o=f;// If the returned BaseNode does not have its own theme, but a theme is provided,
56
57
  // re-create the node with the provided theme to ensure correct theme propagation.
57
- return void 0===(null===(i=j.rawProps)||void 0===i?void 0:i.nodeTheme)&&void 0!==c?new BaseNode(j.element,_objectSpread(_objectSpread({},j.rawProps||{}),{},{nodeTheme:c,theme:c,key:d})).render():j.render();// If the node already has a theme or no theme is provided, render as-is.
58
+ return void 0===(null===(n=o.rawProps)||void 0===n?void 0:n.nodetheme)&&void 0!==c?new BaseNode(o.element,_objectSpread(_objectSpread({},o.rawProps||{}),{},{nodetheme:c,key:d})).render():o.render();// If the node already has a theme or no theme is provided, render as-is.
58
59
  }// Process the result if it's not a React.Component or BaseNode
59
- var k=e(f,c);if(k instanceof BaseNode){var l,m;if(((null===(l=k.rawProps)||void 0===l?void 0:l.theme)||(null===(m=k.rawProps)||void 0===m?void 0:m.nodeTheme))===void 0&&c!==void 0){var n,o,p;return new BaseNode(k.element,_objectSpread(_objectSpread({},k.rawProps),{},{nodeTheme:(null===(n=k.rawProps)||void 0===n?void 0:n.theme)||(null===(o=k.rawProps)||void 0===o?void 0:o.nodeTheme)||c,key:(null===(p=k.rawProps)||void 0===p?void 0:p.key)||d})).render()}return k.render()}// If the result is not a BaseNode (e.g., JSX, string, etc.), return it directly.
60
+ var p=e(f,c);if(p instanceof BaseNode){var q,r,s;return new BaseNode(p.element,_objectSpread(_objectSpread({},p.rawProps),{},{nodetheme:(null===(q=p.rawProps)||void 0===q?void 0:q.theme)||(null===(r=p.rawProps)||void 0===r?void 0:r.nodetheme)||c,key:(null===(s=p.rawProps)||void 0===s?void 0:s.key)||d})).render()}// If the result is not a BaseNode (e.g., JSX, string, etc.), return it directly.
60
61
  // Note: Non-BaseNode results will not automatically receive the theme.
61
62
  return f}/**
62
63
  * Processes a single raw child element, converting it into a ProcessedChild.
@@ -72,9 +73,9 @@ return"".concat(d,"-").concat(c)}// No explicit key, and not an array child, so
72
73
  };// Determine the type of the raw node
73
74
  // Helper to generate an indexed key if no explicit key is present and an index is available.
74
75
  // Case 1: Child is already a BaseNode instance
75
- if(a instanceof BaseNode){var f=a,g=f.rawProps||{},h=g.nodeTheme||b||{},i=e(f.element,g.key);// Get initial raw props of the child
76
+ if(a instanceof BaseNode){var f=a,g=f.rawProps||{},h=g.theme||g.nodetheme||b,i=e(f.element,g.key);// Get initial raw props of the child
76
77
  // Prefer child's own theme
77
- return new BaseNode(f.element,_objectSpread(_objectSpread({},g),{},{nodeTheme:h,// Use the determined theme for the new node
78
+ return new BaseNode(f.element,_objectSpread(_objectSpread({},g),{},{nodetheme:h,// Use the determined theme for the new node
78
79
  key:i}));// Create a new BaseNode with merged props and theme
79
80
  }// Case 2: Child is a primitive (string, number, boolean, null, undefined)
80
81
  if("string"===d||"number"===d||"boolean"===d||null===a||void 0===a)return a;// Case 3: Child is a function that needs to be called during render (FunctionRenderer).
@@ -83,18 +84,14 @@ if("function"===d&&!isReactClassComponent(a)&&!isMemo(a)&&!isForwardRef(a)){// T
83
84
  var j=e(this._functionRenderer,void 0);// Generate key for function renderer
84
85
  return new BaseNode(this._functionRenderer,{processRawNode:this._processRawNode.bind(this),render:a,passedTheme:b,key:j// Assign the generated key
85
86
  })}// Case 4: Child is a React Element (JSX element like <div> or <MyComponent>)
86
- if(isValidElement(a)){var k,l=_objectSpread({},a.props);// Extract and merge props from the JSX element, flattening style props
87
- l=_objectSpread(_objectSpread({},l.style),l),delete l.style;// Remove the original style object after merging
88
- // Handle theme: prefer nodeTheme from child's props, fallback to the parent theme
89
- var m=(null===(k=l)||void 0===k?void 0:k.nodeTheme)||b,n=e(a.type,a.key);// For array children without keys, generate a stable key from element type and index
90
- // Create a new BaseNode instance with processed props and theme
91
- return new BaseNode(a.type,_objectSpread(_objectSpread({},l),{},{nodeTheme:m,key:n// Assign the generated key
92
- }))}// Case 5: Child is an ElementType (string tag, class component, Memo/ForwardRef)
87
+ if(isValidElement(a)){var k=a.props,l=k.style,m=_objectWithoutProperties(k,_excluded2),n=_objectSpread(_objectSpread({},m),l||{}),o=n.theme||n.nodetheme||b,p=e(a.type,a.key);// Combine top-level props from the element with its flattened style object properties
88
+ return new BaseNode(a.type,_objectSpread(_objectSpread({},n),{},{// Pass the combined props
89
+ nodetheme:o,key:p}))}// Case 5: Child is an ElementType (string tag, class component, Memo/ForwardRef)
93
90
  if(isReactClassComponent(a)||"object"===d&&(isMemo(a)||isForwardRef(a))){// ElementTypes don't have an intrinsic key from the rawNode itself.
94
- var o=e(a,void 0);return new BaseNode(a,{nodeTheme:b,// Apply parent theme
95
- key:o})}// Case 6: Handle instances of React.Component
96
- if(a instanceof React.Component){var p=a.render();// Recursively process the rendered element with a parent theme and index if available
97
- return this._processRawNode(p,b,c)}// Case 7: Fallback for other ReactNode types (e.g., Fragments, Portals if not caught by isValidElement)
91
+ var q=e(a,void 0);return new BaseNode(a,{nodetheme:b,// Apply parent theme
92
+ key:q})}// Case 6: Handle instances of React.Component
93
+ if(a instanceof React.Component){var r=a.render();// Recursively process the rendered element with a parent theme and index if available
94
+ return this._processRawNode(r,b,c)}// Case 7: Fallback for other ReactNode types (e.g., Fragments, Portals if not caught by isValidElement)
98
95
  // These are returned as-is. If they are elements within an array, React expects them to have keys.
99
96
  // This logic primarily adds keys to BaseNode instances we create, other ReactNodes are returned as-is.
100
97
  return a}/**
@@ -114,24 +111,24 @@ return a}/**
114
111
  * Converts this BaseNode instance into a renderable React node.
115
112
  * Recursively processes child nodes and uses `React.createElement` to construct the final React element.
116
113
  * @returns A ReactNode representing the rendered element.
117
- */function render(){if(!isValidElementType(this.element)){var a=getComponentType(this.element);throw new Error("Invalid element type: ".concat(a," provided!"))}var b=this.props,c=b.children,d=b.key,e=_objectWithoutProperties(b,_excluded2),f=void 0;// Extract children and key
114
+ */function render(){var a=this;if(!isValidElementType(this.element)){var b=getComponentType(this.element);throw new Error("Invalid element type: ".concat(b," provided!"))}var c=this.props,d=c.children,e=c.key,f=_objectWithoutProperties(c,_excluded3),g=void 0;// Extract children and key
118
115
  // More accurate type
119
- if(void 0!==c&&null!==c)if(!Array.isArray(c))f=this._normalizeChild(c);else if(0<c.length){var g=c.map(this._normalizeChild);// Normalize each child in the array
116
+ if(d!==void 0&&null!==d)if(!Array.isArray(d))// Single child
117
+ g=this._normalizeChild(d);else if(0<d.length){var h=d.map(function(b){return a._normalizeChild(b)});// Normalize each child in the array
120
118
  // Check if all children are null/undefined (e.g., conditional rendering resulted in nothing)
121
- f=g.every(function(a){return null===a||void 0===a})?void 0:g}else f=void 0;// Prepare props for React.createElement
122
- var h=_objectSpread(_objectSpread({},e),{},{// Cast otherProps
123
- key:d// This is the key of the current BaseNode itself
119
+ g=h.every(function(a){return null===a||void 0===a})?void 0:h}else g=void 0;// Prepare props for React.createElement
120
+ var i=_objectSpread(_objectSpread({},f),{},{// Cast otherProps
121
+ key:e// This is the key of the current BaseNode itself
124
122
  });// Prepare props for React.createElement
125
- // Delete the key `nodeTheme` as it's not a valid DOM/React prop for the element
126
- return delete h.nodeTheme,createElement(this.element,h,f)}},{key:"_ensurePortalInfrastructure",value:function _ensurePortalInfrastructure(){if("undefined"==typeof window)return!1;if(this._portalDOMElement&&this._portalReactRoot)return!0;if(this._portalDOMElement&&!this._portalDOMElement.isConnected&&(this._portalDOMElement=null,this._portalDOMElement=null),this._portalDOMElement||(this._portalDOMElement=document.createElement("div"),document.body.appendChild(this._portalDOMElement)),!this._portalReactRoot){if(!this._portalDOMElement)return!1;this._portalReactRoot=createRoot(this._portalDOMElement)}return!0}},{key:"toPortal",value:function toPortal(){var a=this;if(!this._ensurePortalInfrastructure()||!this._portalReactRoot)return null;var b=this.render();return this._portalReactRoot.render(b),_objectSpread(_objectSpread({},this._portalReactRoot),{},{unmount:function unmount(){a._portalReactRoot&&(a._portalReactRoot.unmount(),a._portalReactRoot=null),a._portalDOMElement&&(a._portalDOMElement.parentNode&&a._portalDOMElement.parentNode.removeChild(a._portalDOMElement),a._portalDOMElement=null)}})}}])}();/**
123
+ return createElement(this.element,i,g)}},{key:"_ensurePortalInfrastructure",value:function _ensurePortalInfrastructure(){if("undefined"==typeof window)return!1;if(this._portalDOMElement&&this._portalReactRoot)return!0;if(this._portalDOMElement&&!this._portalDOMElement.isConnected&&(this._portalDOMElement=null,this._portalDOMElement=null),this._portalDOMElement||(this._portalDOMElement=document.createElement("div"),document.body.appendChild(this._portalDOMElement)),!this._portalReactRoot){if(!this._portalDOMElement)return!1;this._portalReactRoot=createRoot(this._portalDOMElement)}return!0}},{key:"toPortal",value:function toPortal(){var a=this;if(!this._ensurePortalInfrastructure()||!this._portalReactRoot)return null;var b=this.render();return this._portalReactRoot.render(b),_objectSpread(_objectSpread({},this._portalReactRoot),{},{unmount:function unmount(){a._portalReactRoot&&(a._portalReactRoot.unmount(),a._portalReactRoot=null),a._portalDOMElement&&(a._portalDOMElement.parentNode&&a._portalDOMElement.parentNode.removeChild(a._portalDOMElement),a._portalDOMElement=null)}})}}])}();/**
127
124
  * Factory function to create a BaseNode instance.
128
125
  * @param element The React element type.
129
126
  * @param props The props for the node.
130
127
  * @returns NodeInstance<E> - A new BaseNode instance.
131
128
  */export function Node(a){var b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},c=_objectSpread({},b);// Ensure we are working with a mutable copy
132
- // 'theme' prop itself is not directly used by BaseNode after this, nodeTheme is used.
129
+ // 'theme' prop itself is not directly used by BaseNode after this, nodetheme is used.
133
130
  // We can keep `theme` in rawProps if needed for cloning or inspection.
134
- return c.theme&&void 0===c.nodeTheme&&(c.nodeTheme=c.theme),new BaseNode(a,c)}/**
131
+ return c.theme&&!c.nodetheme&&(c.nodetheme=c.theme),new BaseNode(a,c)}/**
135
132
  * Higher-order component wrapper that converts BaseNode components into React components.
136
133
  * This wrapper ensures proper theme propagation and component rendering in the React ecosystem.
137
134
  *
@@ -140,7 +137,7 @@ return c.theme&&void 0===c.nodeTheme&&(c.nodeTheme=c.theme),new BaseNode(a,c)}/*
140
137
  * - Handles theme inheritance and merging
141
138
  * - Preserves component props
142
139
  * - Type-safe with generic prop types
143
- * @template T - The props type for the wrapped component
140
+ * @template P - The props type for the wrapped component
144
141
  * @param component Component function that returns a BaseNode or ReactNode
145
142
  * @returns A React function component that handles BaseNode conversion and theme propagation
146
143
  * @example
@@ -153,9 +150,28 @@ return c.theme&&void 0===c.nodeTheme&&(c.nodeTheme=c.theme),new BaseNode(a,c)}/*
153
150
  * })
154
151
  * ```
155
152
  */export function Component(a){// Create a wrapper component that handles theme and rendering
156
- return function(){var b=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},c=a(b);// Execute wrapped component
153
+ var b=function renderer(){var b=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},c=a(b);// Execute wrapped component
157
154
  // Handle BaseNode results - requires special processing
158
- if(c instanceof BaseNode){var d,e;// Theme merging: Check if we need to handle theme inheritance
159
- if(!!(null!==b&&void 0!==b&&b.theme||null!==b&&void 0!==b&&b.nodeTheme)||!!(null!==(d=c.rawProps)&&void 0!==d&&d.theme||null!==(e=c.rawProps)&&void 0!==e&&e.nodeTheme)){var f,g;return new BaseNode(c.element,_objectSpread(_objectSpread({},c.rawProps),{},{// Theme priority: props.theme > rawProps.theme > rawProps.nodeTheme
160
- nodeTheme:(null===b||void 0===b?void 0:b.theme)||(null===(f=c.rawProps)||void 0===f?void 0:f.theme)||(null===(g=c.rawProps)||void 0===g?void 0:g.nodeTheme)})).render()}return c.render();// No theme to handle, just render
161
- }return c}}
155
+ if(c instanceof BaseNode){var d,e,f=(null===(d=c.rawProps)||void 0===d?void 0:d.nodetheme)||(null===(e=c.rawProps)||void 0===e?void 0:e.theme)||b.nodetheme||b.theme;return Node(c.element,_objectSpread(_objectSpread({},c.rawProps),{},{nodetheme:f})).render()}return c};return function(){var a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{};return Node(b,a).render()}}/**
156
+ * Creates a portal wrapper component for rendering content outside the normal DOM hierarchy.
157
+ * Portals are useful for rendering modals, tooltips, and other overlays that need to break out
158
+ * of their parent container's DOM structure while maintaining React context and event bubbling.
159
+ *
160
+ * Key features:
161
+ * - Renders content to a separate DOM node outside the parent hierarchy
162
+ * - Maintains theme inheritance through the portal
163
+ * - Provides portal instance with unmount control
164
+ * - Automatically cleans up DOM nodes on unmount
165
+ * @template P Props type for the wrapped component including theme and portal instance
166
+ * @param component Component function that returns portal content
167
+ * @returns Function that creates and manages the portal instance
168
+ * @example
169
+ * ```ts
170
+ * const Modal = Portal(({ portal }) => {
171
+ * return Div({
172
+ * onClick: () => portal.unmount(),
173
+ * children: "Click to close"
174
+ * })
175
+ * })
176
+ * ```
177
+ */export function Portal(a){var b=null,c=function renderer(){var c=0<arguments.length&&arguments[0]!==void 0?arguments[0]:{},d=a(_objectSpread(_objectSpread({},c),{},{portal:b}));if(d instanceof BaseNode){var e,f,g=(null===(e=d.rawProps)||void 0===e?void 0:e.nodetheme)||(null===(f=d.rawProps)||void 0===f?void 0:f.theme)||c.nodetheme||c.theme;return Node(d.element,_objectSpread(_objectSpread({},d.rawProps),{},{nodetheme:g})).render()}return d};return function(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return b=Node(c,a).toPortal(),b}}
@@ -29,6 +29,12 @@ export declare const Grid: (props?: NodeProps<"div">) => import("./node.type.js"
29
29
  * @returns A div element node with centered flexbox layout.
30
30
  */
31
31
  export declare const Center: (props?: NodeProps<"div">) => import("./node.type.js").NodeInstance<"div">;
32
+ /**
33
+ * Represents a fixed positioned element.
34
+ * @param props Optional properties for the fixed positioned element.
35
+ * @returns A div element node with fixed positioning.
36
+ */
37
+ export declare const Fixed: (props?: NodeProps<"div">) => import("./node.type.js").NodeInstance<"div">;
32
38
  /**
33
39
  * Represents a relatively positioned element.
34
40
  * @param props Optional properties for the relatively positioned element.
@@ -1 +1 @@
1
- {"version":3,"file":"html.node.d.ts","sourceRoot":"","sources":["../src/html.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html.node.d.ts","sourceRoot":"","sources":["../src/html.node.ts"],"names":[],"mappings":"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"}
package/dist/html.node.js CHANGED
@@ -20,6 +20,10 @@
20
20
  * @param props Optional properties for the centered layout.
21
21
  * @returns A div element node with centered flexbox layout.
22
22
  */export var Center=function Center(a){return Div(_objectSpread({display:"flex",alignItems:"center",justifyContent:"center",textAlign:"center",verticalAlign:"middle",alignSelf:"center",justifySelf:"center"},a))};/**
23
+ * Represents a fixed positioned element.
24
+ * @param props Optional properties for the fixed positioned element.
25
+ * @returns A div element node with fixed positioning.
26
+ */export var Fixed=function Fixed(a){return Div(_objectSpread({position:"fixed"},a))};/**
23
27
  * Represents a relatively positioned element.
24
28
  * @param props Optional properties for the relatively positioned element.
25
29
  * @returns A div element node with relative positioning.
@@ -54,7 +54,7 @@ export type FinalNodeProps = ReactAttributes & {
54
54
  style?: CSSProperties;
55
55
  children?: Children | Children[];
56
56
  theme?: Theme;
57
- nodeTheme?: Theme;
57
+ nodetheme?: Theme;
58
58
  };
59
59
  /**
60
60
  * Helper type to determine if the props P have a 'style' property
@@ -79,12 +79,12 @@ export type NodeProps<E extends NodeElement> = Omit<PropsOf<E>, 'style' | 'child
79
79
  /**
80
80
  * BaseNode's internal props type, extending NodeProps:
81
81
  * - Makes all properties optional for flexible node creation
82
- * - Adds nodeTheme for theme context handling
82
+ * - Adds nodetheme for theme context handling
83
83
  * - Used for both initial construction and internal state
84
84
  * @template E - The element type these props apply to
85
85
  */
86
86
  export type RawNodeProps<E extends NodeElement> = Partial<NodeProps<E>> & {
87
- nodeTheme?: Theme;
87
+ nodetheme?: Theme;
88
88
  };
89
89
  /**
90
90
  * Props interface for the internal FunctionRenderer component.
@@ -75,7 +75,7 @@ function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof
75
75
  * and various React-specific types like Fragment, Context, etc.
76
76
  * @param {any} type The type to validate
77
77
  * @returns {boolean} - True if the type can be rendered as a React element
78
- */export var isValidElementType=function isValidElementType(a){if("string"==typeof a||"function"==typeof a)return!0;if(knownValidSymbols.has(a))return!0;if("object"===_typeof(a)&&null!==a){var b=a.$$typeof;return b===REACT_LAZY_TYPE||b===REACT_MEMO_TYPE||b===REACT_CONTEXT_TYPE||b===REACT_CONSUMER_TYPE||b===REACT_FORWARD_REF_TYPE||b===REACT_CLIENT_REFERENCE||"function"==typeof a.getModuleId}return!1};/**
78
+ */export var isValidElementType=function isValidElementType(a){if("string"==typeof a||"number"==typeof a||"bigint"==typeof a||"function"==typeof a)return!0;if(knownValidSymbols.has(a))return!0;if("object"===_typeof(a)&&null!==a){var b=a.$$typeof;return b===REACT_LAZY_TYPE||b===REACT_MEMO_TYPE||b===REACT_CONTEXT_TYPE||b===REACT_CONSUMER_TYPE||b===REACT_FORWARD_REF_TYPE||b===REACT_CLIENT_REFERENCE||"function"==typeof a.getModuleId}return!1};/**
79
79
  * Type guard that checks if a component is a React class component.
80
80
  * Examines the component's prototype for the isReactComponent marker property
81
81
  * that React adds to all class components.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meonode/ui",
3
3
  "description": "A structured approach to component composition with built-in theming, prop separation, and dynamic children handling.",
4
- "version": "0.1.21",
4
+ "version": "0.1.22",
5
5
  "type": "module",
6
6
  "main": "./dist/main.js",
7
7
  "types": "./dist/main.d.ts",