@meonode/ui 0.1.20 → 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
@@ -1,5 +1,3 @@
1
- [file name]: README.md
2
- [file content begin]
3
1
  # @meonode/ui
4
2
 
5
3
  [![NPM version](https://img.shields.io/npm/v/@meonode/ui.svg?style=flat)](https://www.npmjs.com/package/@meonode/ui)
@@ -210,17 +208,18 @@ const LoginForm = Component(() =>
210
208
  ```tsx
211
209
  'use client'
212
210
  /**
213
- * 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
214
212
  * for building declarative user interfaces. It demonstrates different rendering
215
213
  * approaches, the use of Higher-Order Components (HOCs), and how theme context
216
214
  * is managed and propagated within the @meonode/ui component tree.
217
215
  */
218
- 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'
219
217
  import { useState, useEffect, ReactElement, ReactNode } from 'react'
220
218
  import { CssBaseline, FormControlLabel, TextField } from '@meonode/mui'
221
219
  import { Switch as MUISwitch } from '@mui/material'
222
220
  import { styled } from '@mui/material'
223
221
 
222
+ // Styled Material UI Switch component for theme toggling
224
223
  const MaterialUISwitch = styled(MUISwitch)(({ theme }) => ({
225
224
  width: 62,
226
225
  height: 34,
@@ -278,10 +277,8 @@ const MaterialUISwitch = styled(MUISwitch)(({ theme }) => ({
278
277
  }))
279
278
 
280
279
  /**
281
- * Defines the color palette for the light theme.
282
- * These color values are used by @meonode/ui components when they encounter
283
- * theme string references (e.g., 'theme.primary') and the current theme mode is 'light'.
284
- * 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.
285
282
  */
286
283
  const lightTheme: Theme = {
287
284
  mode: 'light',
@@ -300,10 +297,8 @@ const lightTheme: Theme = {
300
297
  }
301
298
 
302
299
  /**
303
- * Defines the color palette for the dark theme.
304
- * Similar to the light theme, these colors are used by @meonode/ui components
305
- * when resolving theme string references, but specifically when the current theme
306
- * mode is 'dark'.
300
+ * Dark theme configuration containing color palette values.
301
+ * Used by `@meonode/ui` components when resolving theme references in dark mode.
307
302
  */
308
303
  const darkTheme: Theme = {
309
304
  mode: 'dark',
@@ -322,29 +317,15 @@ const darkTheme: Theme = {
322
317
  }
323
318
 
324
319
  /**
325
- * The main page component, implemented as a functional component using React hooks.
326
- * It manages the theme mode state and the visibility of additional content.
327
- *
328
- * This function is wrapped by the `Component` HOC from `@meonode/ui`. The `Component`
329
- * HOC transforms the function into a standard React component that returns a `ReactNode`,
330
- * 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.
331
323
  */
332
324
  export default Component(() => {
333
- // State hook to control the visibility of additional content sections.
334
325
  const [showMore, setShowDetails] = useState(false)
335
326
  const [mode, setMode] = useState<'dark' | 'light'>('light')
336
327
  const theme = mode === 'dark' ? darkTheme : lightTheme
337
328
 
338
- /**
339
- * The root of the UI tree is a `Column` component from `@meonode/ui`.
340
- * This `Column` sets the theme context for its children.
341
- * Its children include:
342
- * - A theme toggle switch using MUI components wrapped in `@meonode/ui`'s `Node`.
343
- * - A button to toggle the visibility of the detail sections.
344
- * - Various examples demonstrating how to render components that return either
345
- * `@meonode/ui` `Node` instances or `ReactNode`s, illustrating theme propagation
346
- * both unconditionally and conditionally, highlighting theme propagation.
347
- */
348
329
  return Column({
349
330
  theme: theme.colors,
350
331
  padding: 20,
@@ -353,8 +334,7 @@ export default Component(() => {
353
334
  backgroundColor: 'theme.background',
354
335
  color: 'theme.foreground',
355
336
  children: [
356
- CssBaseline, // Applies baseline Material UI styles for consistent rendering.
357
- // Theme toggle switch using MUI components wrapped with @meonode/ui's Node HOC.
337
+ CssBaseline,
358
338
  Center({
359
339
  children: FormControlLabel({
360
340
  control: Node(MaterialUISwitch).render() as ReactElement,
@@ -365,165 +345,196 @@ export default Component(() => {
365
345
  onChange: () => setMode(prev => (prev === 'dark' ? 'light' : 'dark')),
366
346
  }),
367
347
  }),
368
- // Button to show modal.
369
348
  Button('Show Modal', {
370
- onClick: () => Modal({ theme }), // Click handler to show modal immedietelly.
371
- cursor: 'pointer', // Visual cue for clickability.
372
- userSelect: 'none', // Prevents text selection on the button.
349
+ onClick: () => Modal({ theme: theme.colors }),
350
+ cursor: 'pointer',
351
+ userSelect: 'none',
373
352
  padding: '10px 20px',
374
- backgroundColor: 'theme.primary', // Background color sourced from the theme context.
353
+ backgroundColor: 'theme.primary',
375
354
  borderRadius: 5,
376
355
  fontWeight: 'bold',
377
356
  color: 'white',
378
357
  }),
379
- // Button to toggle the visibility of the detail sections.
380
- Button(showMore ? 'Hide' : 'Show More', {
381
- onClick: () => setShowDetails(prev => !prev), // Click handler to toggle the 'showMore' state.
382
- cursor: 'pointer', // Visual cue for clickability.
383
- 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',
384
362
  padding: '10px 20px',
385
- backgroundColor: 'theme.accent', // Background color sourced from the theme context.
363
+ backgroundColor: 'theme.accent',
386
364
  borderRadius: 5,
387
365
  fontWeight: 'bold',
388
366
  color: 'white',
389
367
  }),
390
368
 
391
369
  /**
392
- * --- Unconditional Rendering Examples ---
393
- * These examples demonstrate rendering components that return either a
394
- * `@meonode/ui` `Node` instance (`DetailComponent`) or a `ReactNode`
395
- * (`ReturnRenderedDetailComponent`), and how the `Node` HOC affects this.
396
- * 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
397
375
  */
398
- // 1. Rendering a component that returns a @meonode/ui Node instance directly.
399
- // The internal Row component correctly receives theme context from the parent Column.
400
- 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(),
401
383
 
402
- // 2. Rendering a component that returns a @meonode/ui Node instance, then calling .render().
403
- // The internal Row component also correctly receives theme context.
404
- 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.' }),
405
386
 
406
- // 3. Attempting to wrap a component returning a Node instance with Node HOC.
407
- // ❌ Fails: The Node HOC expects the wrapped function to return a ReactNode, not a @meonode/ui Node instance.
408
- // 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
+ }),
409
390
 
410
- // 4. Rendering a component that explicitly returns a ReactNode (.render() is called internally).
411
- // The internal Row component correctly receives theme context from the parent Column.
412
- 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
+ }),
413
394
 
414
- // 5. Wrapping a component returning ReactNode with Node HOC.
415
- // Renders successfully. However, the Node HOC does NOT propagate theme context to the wrapped component's children.
416
- 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(),
417
399
 
418
- // 6. Wrapping a component returning ReactNode with Node HOC, then calling .render().
419
- // Renders successfully. Theme context is NOT propagated by the Node HOC.
420
- 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
+ }),
421
403
 
422
404
  /**
423
- * Conditional rendering examples (shown when 'showMore' is true):
424
- * These demonstrate various wrapping techniques (inline functions, Component HOC)
425
- * 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
426
410
  */
427
- // 7. Conditional rendering of a component returning a Node instance using an inline function wrapper.
428
- // Renders successfully when `showMore` is true. The internal Row receives theme context.
429
- showMore && (() => DetailComponent({ info: 'Detail 7 (Conditional inline function + Node instance)' })),
430
-
431
- // 8. Conditional rendering of a component returning a Node instance using an inline function wrapper, then calling .render().
432
- // Renders successfully when `showMore` is true. The internal Row receives theme context.
433
- showMore && (() => DetailComponent({ info: 'Detail 8 (Conditional inline function + Node instance + .render())' }).render()),
434
-
435
- // 9. Conditional rendering of a component returning a Node instance using the Component HOC wrapper.
436
- // Renders successfully when `showMore` is true. The internal Row receives theme context.
437
- showMore && Component(() => DetailComponent({ info: 'Detail 9 (Conditional Component HOC + Node instance)' })),
438
-
439
- // 10. Conditional rendering of a component returning ReactNode using an inline function wrapper.
440
- // Renders successfully when `showMore` is true. The internal Row receives theme context.
441
- showMore && (() => ReturnRenderedDetailComponent({ info: 'Detail 10 (Conditional inline function + ReactNode)' })),
442
-
443
- // 11. Conditional rendering of a component returning ReactNode using the Component HOC wrapper.
444
- // Renders successfully when `showMore` is true. The internal Row receives theme context.
445
- showMore && Component(() => ReturnRenderedDetailComponent({ info: 'Detail 11 (Conditional Component HOC + ReactNode)' })),
446
- // 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.
447
444
  ],
448
445
  })
449
446
  })
450
447
 
451
448
  /**
452
- * A component that displays a styled detail section.
453
- * It uses `useEffect` for lifecycle logging. The internal `Row` component
454
- * sources its theme from the React context provided by an ancestor `@meonode/ui`
455
- * component (like the main `Column` in this page).
456
- *
457
- * This component returns a @meonode/ui `Row` Node instance.
458
- * This type of component is suitable for direct inclusion as a child within other
459
- * `@meonode/ui` components that expect `Node` instances or arrays of `Node` instances.
460
- * @param {object} props - Component properties.
461
- * @param {string} props.info - Text content to display in the detail section.
462
- * @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.
463
452
  */
464
453
  const DetailComponent = ({ info }: { info: string }): NodeInstance => {
465
- // useEffect hook for logging component mount and unmount phases (for debugging).
466
454
  useEffect(() => {
467
- console.log('DetailComponent mounted:', info) // Example mount log
455
+ console.log('DetailComponent mounted:', info)
468
456
  return () => {
469
- console.log('DetailComponent unmounted:', info) // Example unmount log
457
+ console.log('DetailComponent unmounted:', info)
470
458
  }
471
- }, [info]) // Effect depends on 'info' prop.
459
+ }, [info])
472
460
 
473
- // Returns a @meonode/ui Row Node instance configured with props and children.
474
- // Its styling (e.g., backgroundColor) will resolve theme strings from React context.
475
461
  return Row({
476
462
  alignItems: 'center',
477
463
  gap: 10,
478
464
  padding: 4,
479
465
  border: '2px solid theme.accent',
480
466
  borderRadius: 6,
481
- backgroundColor: 'theme.warning', // Background color sourced from theme in React context.
467
+ backgroundColor: 'theme.warning',
482
468
  color: 'theme.danger',
483
469
  children: [P(info, { flex: 1, padding: '0 20px' }), TextField({ flex: 1, sx: { background: 'theme.primary' } })],
484
470
  })
485
471
  }
486
472
 
487
473
  /**
488
- * An alternative detail component implementation that explicitly calls `.render()`
489
- * to return a `ReactNode` (a rendered React element) directly.
490
- * This makes it compatible with standard React rendering patterns and wrappers
491
- * like the `Node` HOC that specifically expect a function returning `ReactNode`.
492
- * It uses `useEffect` for lifecycle logging. The internal `Row` sources its
493
- * theme from React context.
494
- *
495
- * This component returns a `ReactNode`.
496
- * @param {object} props - Component properties.
497
- * @param {string} props.info - Text content to display.
498
- * @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.
499
502
  */
500
503
  const ReturnRenderedDetailComponent = ({ info }: { info: string }): ReactNode => {
501
- // useEffect hook for logging component mount and unmount phases (for debugging).
502
504
  useEffect(() => {
503
- console.log('ReturnRenderedDetailComponent mounted:', info) // Example mount log
505
+ console.log('ReturnRenderedDetailComponent mounted')
504
506
  return () => {
505
- console.log('ReturnRenderedDetailComponent unmounted:', info) // Example unmount log
507
+ console.log('ReturnRenderedDetailComponent unmounted')
506
508
  }
507
- }, [info]) // Effect depends on 'info' prop.
509
+ }, [info])
508
510
 
509
- // Constructs a @meonode/ui Row and immediately calls .render() on it.
510
- // The Row itself will attempt to resolve theme strings (e.g., 'theme.background.secondary')
511
- // from the React context provided by an ancestor @meonode/ui component (like the main Column).
512
511
  return Row({
513
512
  alignItems: 'center',
514
513
  gap: 10,
515
514
  padding: 4,
516
515
  border: '2px solid theme.accent',
517
516
  borderRadius: 6,
518
- backgroundColor: 'theme.warning', // Theme-aware background; relies on theme from React context.
517
+ backgroundColor: 'theme.warning',
519
518
  color: 'theme.danger',
520
519
  children: [P(info, { flex: 1, padding: '0 20px' }), TextField({ flex: 1, sx: { background: 'theme.primary' } })],
521
- }).render() // Explicitly renders to ReactNode.
520
+ }).render()
522
521
  }
523
522
 
524
- const Modal = ({ theme }: { theme: Theme }) => {
525
- const modal = Absolute({
526
- 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,
527
538
  top: 0,
528
539
  left: 0,
529
540
  right: 0,
@@ -534,50 +545,62 @@ const Modal = ({ theme }: { theme: Theme }) => {
534
545
  alignItems: 'center',
535
546
  onClick: e => {
536
547
  if (e.target === e.currentTarget) {
537
- modal?.unmount()
548
+ portal.unmount()
538
549
  }
539
550
  },
540
- children: Column({
541
- width: '50%',
542
- height: '50%',
543
- backgroundColor: 'theme.background',
544
- borderRadius: '8px',
545
- boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)',
546
- transition: 'transform 0.2s ease-in-out',
547
- padding: 10,
548
- gap: 10,
549
- color: 'theme.foreground',
550
- children: [
551
- Center({ fontWeight: 'bold', children: 'Hello There' }),
552
- TextField({
553
- sx: {
554
- '& .MuiFormLabel-root': {
555
- color: 'theme.foreground',
556
- '&.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': {
557
577
  color: 'theme.foreground',
578
+ '&.Mui-focused': {
579
+ color: 'theme.foreground',
580
+ },
558
581
  },
559
- },
560
- '& .MuiOutlinedInput-root': {
561
- color: 'theme.foreground',
562
- '& fieldset': {
563
- borderColor: 'theme.foreground',
564
- },
565
- '&:hover fieldset': {
566
- borderColor: 'theme.foreground',
567
- },
568
- '&.Mui-focused fieldset': {
569
- 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,
570
594
  },
571
- borderRadius: 2,
572
595
  },
573
- },
574
- label: 'Hello',
575
- fullWidth: true,
576
- }),
577
- ],
578
- }),
579
- }).toPortal()
580
- }
596
+ label: 'Hello',
597
+ fullWidth: true,
598
+ }),
599
+ ],
600
+ }),
601
+ ],
602
+ })
603
+ })
581
604
  ```
582
605
 
583
606
  ---
@@ -586,10 +609,12 @@ const Modal = ({ theme }: { theme: Theme }) => {
586
609
 
587
610
  ### Core Functions
588
611
 
589
- | Function | Parameters | Description |
590
- |-------------|-----------------------------------------|----------------------------------------------|
591
- | `Node` | `element: string | React.ComponentType`, `baseProps: object` | Creates a configurable UI node |
592
- | `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
+ |
593
618
 
594
619
  ---
595
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.20",
4
+ "version": "0.1.22",
5
5
  "type": "module",
6
6
  "main": "./dist/main.js",
7
7
  "types": "./dist/main.d.ts",