Plugin Directory

Changeset 3769770


Ignore:
Timestamp:
10/28/2026 02:24:31 AM (15 hours ago)
Author:
mdsabir07
Message:

Update trunk to v1.1.1: Added Pricing Card, Testimonial Card, and Tabs Group blocks, updated block customize options and bugs fixed

Location:
zenithium-blocks/trunk
Files:
39 added
69 edited

Legend:

Unmodified
Added
Removed
  • zenithium-blocks/trunk/build/blocks-manifest.php

    r3640847 r3769770  
    55                '$schema' => 'https://schemas.wp.org/trunk/block.json',
    66                'apiVersion' => 3,
    7                 'name' => 'zenithium-blocks/accordion',
    8                 'version' => '1.0.0',
    9                 'title' => 'Accordion Item',
    10                 'category' => 'widgets',
     7                'name' => 'zenithium-blocks/accordion-item',
     8                'version' => '1.1.1',
     9                'title' => 'Zenithium Accordion Item',
     10                'category' => 'zenithium-blocks',
    1111                'icon' => 'minus',
    1212                'description' => 'An individual accordion item inside an Accordion Group.',
    … …  
    2020                        'expand'
    2121                ),
     22                'usesContext' => array(
     23                        'zenithium-blocks/autoClose',
     24                        'zenithium-blocks/headerFontSize',
     25                        'zenithium-blocks/headerFontWeight',
     26                        'zenithium-blocks/headerTextColor',
     27                        'zenithium-blocks/headerHoverTextColor',
     28                        'zenithium-blocks/headerBgColor',
     29                        'zenithium-blocks/headerHoverBgColor',
     30                        'zenithium-blocks/iconColor',
     31                        'zenithium-blocks/iconHoverColor',
     32                        'zenithium-blocks/iconSize',
     33                        'zenithium-blocks/itemGap',
     34                        'zenithium-blocks/headerPaddingX',
     35                        'zenithium-blocks/headerPaddingY',
     36                        'zenithium-blocks/contentPaddingX',
     37                        'zenithium-blocks/contentPaddingY',
     38                        'zenithium-blocks/contentGap'
     39                ),
    2240                'textdomain' => 'zenithium-blocks',
    2341                'supports' => array(
    2442                        'html' => false,
    25                         'align' => array(
    26                                 'wide',
    27                                 'full'
    28                         ),
     43                        'layout' => true,
    2944                        'spacing' => array(
    3045                                'margin' => true,
    31                                 'padding' => true
     46                                'padding' => true,
     47                                'blockGap' => true,
     48                                'units' => array(
     49                                        'px',
     50                                        'em',
     51                                        'rem',
     52                                        '%'
     53                                ),
     54                                '__experimentalDefaultControls' => array(
     55                                        'margin' => true,
     56                                        'padding' => true,
     57                                        'blockGap' => true
     58                                )
    3259                        ),
    3360                        'color' => array(
    3461                                'text' => true,
    35                                 'background' => true
     62                                'background' => true,
     63                                'gradients' => true
     64                        ),
     65                        'border' => array(
     66                                'color' => true,
     67                                'radius' => true,
     68                                'style' => true,
     69                                'width' => true,
     70                                '__experimentalDefaultControls' => array(
     71                                        'color' => true,
     72                                        'radius' => true,
     73                                        'width' => true
     74                                )
     75                        ),
     76                        'typography' => array(
     77                                'fontSize' => true,
     78                                'lineHeight' => true,
     79                                'fontFamily' => true,
     80                                'fontWeight' => true,
     81                                'fontStyle' => true,
     82                                'letterSpacing' => true,
     83                                'textTransform' => true,
     84                                'textDecoration' => true,
     85                                '__experimentalDefaultControls' => array(
     86                                        'fontSize' => true,
     87                                        'fontWeight' => true
     88                                )
    3689                        )
    3790                ),
    … …  
    3992                        'title' => array(
    4093                                'type' => 'string',
    41                                 'default' => 'Frequently Asked Question Title'
     94                                'default' => 'Accordion Item Title'
    4295                        ),
    4396                        'isOpen' => array(
    … …  
    48101                                'type' => 'string',
    49102                                'default' => 'plus'
     103                        ),
     104                        'titleFontSize' => array(
     105                                'type' => 'string',
     106                                'default' => ''
     107                        ),
     108                        'titleFontWeight' => array(
     109                                'type' => 'string',
     110                                'default' => ''
     111                        ),
     112                        'headerTextColor' => array(
     113                                'type' => 'string',
     114                                'default' => ''
     115                        ),
     116                        'headerHoverTextColor' => array(
     117                                'type' => 'string',
     118                                'default' => ''
     119                        ),
     120                        'headerBgColor' => array(
     121                                'type' => 'string',
     122                                'default' => ''
     123                        ),
     124                        'headerHoverBgColor' => array(
     125                                'type' => 'string',
     126                                'default' => ''
     127                        ),
     128                        'iconColor' => array(
     129                                'type' => 'string',
     130                                'default' => ''
     131                        ),
     132                        'iconHoverColor' => array(
     133                                'type' => 'string',
     134                                'default' => ''
     135                        ),
     136                        'iconSize' => array(
     137                                'type' => 'number',
     138                                'default' => 0
     139                        ),
     140                        'itemBorderColor' => array(
     141                                'type' => 'string',
     142                                'default' => ''
     143                        ),
     144                        'itemBorderWidth' => array(
     145                                'type' => 'number',
     146                                'default' => 1
     147                        ),
     148                        'itemBorderRadius' => array(
     149                                'type' => 'number',
     150                                'default' => 6
     151                        ),
     152                        'itemBorderStyle' => array(
     153                                'type' => 'string',
     154                                'default' => 'solid'
     155                        ),
     156                        'headerPaddingX' => array(
     157                                'type' => 'number',
     158                                'default' => 0
     159                        ),
     160                        'headerPaddingY' => array(
     161                                'type' => 'number',
     162                                'default' => 0
     163                        ),
     164                        'contentPaddingX' => array(
     165                                'type' => 'number',
     166                                'default' => 0
     167                        ),
     168                        'contentPaddingY' => array(
     169                                'type' => 'number',
     170                                'default' => 0
     171                        ),
     172                        'contentGap' => array(
     173                                'type' => 'number',
     174                                'default' => 0
    50175                        )
    51176                ),
    … …  
    59184                'apiVersion' => 3,
    60185                'name' => 'zenithium-blocks/accordion-group',
    61                 'version' => '1.0.0',
    62                 'title' => 'Accordion Group',
    63                 'category' => 'widgets',
     186                'version' => '1.1.1',
     187                'title' => 'Zenithium Accordion Group',
     188                'category' => 'zenithium-blocks',
    64189                'icon' => 'list-view',
    65                 'description' => 'Container for multiple accordion items with auto-close and SEO schema controls.',
     190                'description' => 'A group of customizable accordion items.',
    66191                'keywords' => array(
    67192                        'accordion',
    68193                        'faq',
    69                         'group'
     194                        'group',
     195                        'toggle'
     196                ),
     197                'allowedBlocks' => array(
     198                        'zenithium-blocks/accordion-item'
     199                ),
     200                'providesContext' => array(
     201                        'zenithium-blocks/autoClose' => 'autoClose',
     202                        'zenithium-blocks/headerFontSize' => 'headerFontSize',
     203                        'zenithium-blocks/headerFontWeight' => 'headerFontWeight',
     204                        'zenithium-blocks/headerTextColor' => 'headerTextColor',
     205                        'zenithium-blocks/headerHoverTextColor' => 'headerHoverTextColor',
     206                        'zenithium-blocks/headerBgColor' => 'headerBgColor',
     207                        'zenithium-blocks/headerHoverBgColor' => 'headerHoverBgColor',
     208                        'zenithium-blocks/iconColor' => 'iconColor',
     209                        'zenithium-blocks/iconHoverColor' => 'iconHoverColor',
     210                        'zenithium-blocks/iconSize' => 'iconSize',
     211                        'zenithium-blocks/itemGap' => 'itemGap',
     212                        'zenithium-blocks/headerPaddingX' => 'headerPaddingX',
     213                        'zenithium-blocks/headerPaddingY' => 'headerPaddingY',
     214                        'zenithium-blocks/contentPaddingX' => 'contentPaddingX',
     215                        'zenithium-blocks/contentPaddingY' => 'contentPaddingY',
     216                        'zenithium-blocks/contentGap' => 'contentGap'
    70217                ),
    71218                'textdomain' => 'zenithium-blocks',
    … …  
    76223                                'full'
    77224                        ),
     225                        'layout' => true,
    78226                        'spacing' => array(
    79227                                'margin' => true,
    80                                 'padding' => true
     228                                'padding' => true,
     229                                'blockGap' => true,
     230                                'units' => array(
     231                                        'px',
     232                                        'em',
     233                                        'rem',
     234                                        '%'
     235                                ),
     236                                '__experimentalDefaultControls' => array(
     237                                        'margin' => true,
     238                                        'padding' => true,
     239                                        'blockGap' => true
     240                                )
     241                        ),
     242                        'color' => array(
     243                                'text' => true,
     244                                'background' => true,
     245                                'gradients' => true
     246                        ),
     247                        'border' => array(
     248                                'color' => true,
     249                                'radius' => true,
     250                                'style' => true,
     251                                'width' => true,
     252                                '__experimentalDefaultControls' => array(
     253                                        'color' => true,
     254                                        'radius' => true,
     255                                        'width' => true
     256                                )
     257                        ),
     258                        'typography' => array(
     259                                'fontSize' => true,
     260                                'lineHeight' => true,
     261                                'fontFamily' => true,
     262                                'fontWeight' => true,
     263                                'fontStyle' => true,
     264                                'letterSpacing' => true,
     265                                'textTransform' => true,
     266                                'textDecoration' => true,
     267                                '__experimentalDefaultControls' => array(
     268                                        'fontSize' => true,
     269                                        'fontWeight' => true
     270                                )
    81271                        )
    82272                ),
    … …  
    90280                                'default' => true
    91281                        ),
    92                         'accentColor' => array(
    93                                 'type' => 'string',
    94                                 'default' => '#2563eb'
     282                        'headerFontSize' => array(
     283                                'type' => 'string',
     284                                'default' => '1.05rem'
     285                        ),
     286                        'headerFontWeight' => array(
     287                                'type' => 'string',
     288                                'default' => '600'
     289                        ),
     290                        'headerTextColor' => array(
     291                                'type' => 'string',
     292                                'default' => ''
     293                        ),
     294                        'headerHoverTextColor' => array(
     295                                'type' => 'string',
     296                                'default' => ''
    95297                        ),
    96298                        'headerBgColor' => array(
    97299                                'type' => 'string',
    98                                 'default' => '#f8fafc'
     300                                'default' => ''
     301                        ),
     302                        'headerHoverBgColor' => array(
     303                                'type' => 'string',
     304                                'default' => ''
     305                        ),
     306                        'iconColor' => array(
     307                                'type' => 'string',
     308                                'default' => ''
     309                        ),
     310                        'iconHoverColor' => array(
     311                                'type' => 'string',
     312                                'default' => ''
     313                        ),
     314                        'iconSize' => array(
     315                                'type' => 'number',
     316                                'default' => 20
     317                        ),
     318                        'groupBorderColor' => array(
     319                                'type' => 'string',
     320                                'default' => ''
     321                        ),
     322                        'groupBorderWidth' => array(
     323                                'type' => 'number',
     324                                'default' => 0
     325                        ),
     326                        'groupBorderRadius' => array(
     327                                'type' => 'number',
     328                                'default' => 0
     329                        ),
     330                        'groupBorderStyle' => array(
     331                                'type' => 'string',
     332                                'default' => 'solid'
     333                        ),
     334                        'itemGap' => array(
     335                                'type' => 'number',
     336                                'default' => 12
     337                        ),
     338                        'headerPaddingX' => array(
     339                                'type' => 'number',
     340                                'default' => 20
     341                        ),
     342                        'headerPaddingY' => array(
     343                                'type' => 'number',
     344                                'default' => 16
     345                        ),
     346                        'contentPaddingX' => array(
     347                                'type' => 'number',
     348                                'default' => 20
     349                        ),
     350                        'contentPaddingY' => array(
     351                                'type' => 'number',
     352                                'default' => 20
     353                        ),
     354                        'contentGap' => array(
     355                                'type' => 'number',
     356                                'default' => 16
    99357                        )
    100358                ),
    … …  
    110368                'name' => 'zenithium-blocks/animated-counter',
    111369                'version' => '1.0.0',
    112                 'title' => 'Animated Stats Counter',
    113                 'category' => 'widgets',
     370                'title' => 'Zenithium Animated Stats Counter',
     371                'category' => 'zenithium-blocks',
    114372                'icon' => 'performance',
    115373                'description' => 'Animate numbers counting up when scrolled into view.',
    … …  
    135393                                'lineHeight' => true
    136394                        ),
    137                         'colors' => array(
     395                        'color' => array(
     396                                'background' => true,
    138397                                'text' => true,
    139                                 'background' => true
     398                                'link' => true,
     399                                'gradients' => true,
     400                                'enableCustomColors' => true,
     401                                'enableAlpha' => true,
     402                                'heading' => true
    140403                        )
    141404                ),
    … …  
    193456                'name' => 'zenithium-blocks/carousel',
    194457                'version' => '1.0.0',
    195                 'title' => 'Modern Interactive Carousel',
    196                 'category' => 'widgets',
     458                'title' => 'Zenithium Modern Interactive Carousel',
     459                'category' => 'zenithium-blocks',
    197460                'icon' => 'slides',
    198461                'description' => 'A fully responsive, touch-friendly carousel and slider block with custom layout controls.',
    … …  
    215478                        ),
    216479                        'color' => array(
     480                                'background' => true,
    217481                                'text' => true,
    218                                 'background' => true
     482                                'link' => true,
     483                                'gradients' => true,
     484                                'enableCustomColors' => true,
     485                                'enableAlpha' => true,
     486                                'heading' => true
    219487                        )
    220488                ),
    … …  
    276544                'name' => 'zenithium-blocks/carousel-slide',
    277545                'version' => '1.0.0',
    278                 'title' => 'Carousel Slide',
    279                 'category' => 'widgets',
     546                'title' => 'Zenithium Carousel Slide',
     547                'category' => 'zenithium-blocks',
    280548                'parent' => array(
    281549                        'zenithium-blocks/carousel'
    … …  
    285553                        'html' => false,
    286554                        'color' => array(
     555                                'background' => true,
    287556                                'text' => true,
    288                                 'background' => true
     557                                'link' => true,
     558                                'gradients' => true,
     559                                'enableCustomColors' => true,
     560                                'enableAlpha' => true,
     561                                'heading' => true
    289562                        )
    290563                ),
    … …  
    320593                ),
    321594                'editorScript' => 'file:./index.js',
     595                'editorStyle' => 'file:./index.css',
     596                'style' => 'file:./style-index.css',
    322597                'render' => 'file:./render.php'
    323598        ),
    … …  
    327602                'name' => 'zenithium-blocks/flip-card',
    328603                'version' => '1.0.0',
    329                 'title' => 'Interactive Flip Card',
    330                 'category' => 'widgets',
     604                'title' => 'Zenithium Interactive Flip Card',
     605                'category' => 'zenithium-blocks',
    331606                'icon' => 'update',
    332607                'description' => 'An interactive card that flips in 3D on hover or click to reveal additional details on the back.',
    … …  
    351626                        'color' => array(
    352627                                'text' => true,
    353                                 'background' => true
     628                                'background' => true,
     629                                'link' => true,
     630                                'gradients' => true,
     631                                'enableCustomColors' => true,
     632                                'enableCustomGradients' => true,
     633                                'enableAlpha' => true
    354634                        )
    355635                ),
    … …  
    435715                'name' => 'zenithium-blocks/image-comparison',
    436716                'version' => '1.0.0',
    437                 'title' => 'Image Comparison Slider',
    438                 'category' => 'media',
     717                'title' => 'Zenithium Image Comparison Slider',
     718                'category' => 'zenithium-blocks',
    439719                'icon' => 'format-gallery',
    440720                'description' => 'Interactive before and after image comparison slider.',
    … …  
    442722                        'before after',
    443723                        'image comparison',
    444                         'slider'
     724                        'slider',
     725                        'diff'
    445726                ),
    446727                'textdomain' => 'zenithium-blocks',
    … …  
    457738                ),
    458739                'attributes' => array(
     740                        'beforeImageId' => array(
     741                                'type' => 'number',
     742                                'default' => 0
     743                        ),
    459744                        'beforeImage' => array(
    460745                                'type' => 'string',
    461746                                'default' => ''
    462747                        ),
     748                        'beforeAlt' => array(
     749                                'type' => 'string',
     750                                'default' => 'Before image'
     751                        ),
     752                        'afterImageId' => array(
     753                                'type' => 'number',
     754                                'default' => 0
     755                        ),
    463756                        'afterImage' => array(
    464757                                'type' => 'string',
    465758                                'default' => ''
    466759                        ),
     760                        'afterAlt' => array(
     761                                'type' => 'string',
     762                                'default' => 'After image'
     763                        ),
    467764                        'beforeLabel' => array(
    468765                                'type' => 'string',
    … …  
    476773                                'type' => 'number',
    477774                                'default' => 50
    478                         )
    479                 ),
     775                        ),
     776                        'showLabels' => array(
     777                                'type' => 'boolean',
     778                                'default' => true
     779                        )
     780                ),
     781                'editorScript' => 'file:./index.js',
     782                'style' => 'file:./style-index.css',
     783                'render' => 'file:./render.php',
     784                'viewScript' => 'file:./view.js'
     785        ),
     786        'pricing-card' => array(
     787                '$schema' => 'https://schemas.wp.org/trunk/block.json',
     788                'apiVersion' => 3,
     789                'name' => 'zenithium-blocks/pricing-card',
     790                'version' => '1.0.0',
     791                'title' => 'Zenithium Pricing Card',
     792                'category' => 'zenithium-blocks',
     793                'icon' => 'tag',
     794                'description' => 'A customizable pricing card with feature lists, price points, badges, and action buttons.',
     795                'keywords' => array(
     796                        'pricing',
     797                        'price',
     798                        'card',
     799                        'table',
     800                        'zenithium'
     801                ),
     802                'supports' => array(
     803                        'html' => false,
     804                        'align' => array(
     805                                'wide',
     806                                'full'
     807                        ),
     808                        'color' => array(
     809                                'background' => true,
     810                                'text' => true,
     811                                'link' => true,
     812                                'gradients' => true,
     813                                'enableCustomColors' => true,
     814                                'enableAlpha' => true
     815                        ),
     816                        'typography' => array(
     817                                'fontSize' => true,
     818                                'lineHeight' => true,
     819                                'fontFamily' => true,
     820                                'fontWeight' => true
     821                        ),
     822                        'spacing' => array(
     823                                'padding' => true,
     824                                'margin' => true
     825                        ),
     826                        'border' => array(
     827                                'color' => true,
     828                                'radius' => true,
     829                                'style' => true,
     830                                'width' => true
     831                        )
     832                ),
     833                'attributes' => array(
     834                        'align' => array(
     835                                'type' => 'string',
     836                                'default' => 'wide'
     837                        ),
     838                        'planTitle' => array(
     839                                'type' => 'string',
     840                                'default' => 'Pro Plan'
     841                        ),
     842                        'planSubtitle' => array(
     843                                'type' => 'string',
     844                                'default' => 'Ideal for growing businesses and professionals.'
     845                        ),
     846                        'currencySymbol' => array(
     847                                'type' => 'string',
     848                                'default' => '$'
     849                        ),
     850                        'price' => array(
     851                                'type' => 'string',
     852                                'default' => '49'
     853                        ),
     854                        'billingPeriod' => array(
     855                                'type' => 'string',
     856                                'default' => '/ month'
     857                        ),
     858                        'features' => array(
     859                                'type' => 'array',
     860                                'default' => array(
     861                                        'All core block features',
     862                                        'Priority email support',
     863                                        'Unlimited site usage',
     864                                        'Regular plugin updates'
     865                                )
     866                        ),
     867                        'badgeText' => array(
     868                                'type' => 'string',
     869                                'default' => 'Popular'
     870                        ),
     871                        'showBadge' => array(
     872                                'type' => 'boolean',
     873                                'default' => true
     874                        ),
     875                        'badgeBgColor' => array(
     876                                'type' => 'string',
     877                                'default' => '#2563eb'
     878                        ),
     879                        'badgeTextColor' => array(
     880                                'type' => 'string',
     881                                'default' => '#ffffff'
     882                        ),
     883                        'buttonText' => array(
     884                                'type' => 'string',
     885                                'default' => 'Get Started'
     886                        ),
     887                        'buttonUrl' => array(
     888                                'type' => 'string',
     889                                'default' => '#'
     890                        ),
     891                        'buttonOpenInNewTab' => array(
     892                                'type' => 'boolean',
     893                                'default' => false
     894                        ),
     895                        'buttonBgColor' => array(
     896                                'type' => 'string',
     897                                'default' => '#2563eb'
     898                        ),
     899                        'buttonTextColor' => array(
     900                                'type' => 'string',
     901                                'default' => '#ffffff'
     902                        ),
     903                        'buttonHoverBgColor' => array(
     904                                'type' => 'string',
     905                                'default' => '#1d4ed8'
     906                        ),
     907                        'buttonHoverTextColor' => array(
     908                                'type' => 'string',
     909                                'default' => '#ffffff'
     910                        ),
     911                        'titleColor' => array(
     912                                'type' => 'string',
     913                                'default' => ''
     914                        ),
     915                        'priceColor' => array(
     916                                'type' => 'string',
     917                                'default' => ''
     918                        ),
     919                        'featureTextColor' => array(
     920                                'type' => 'string',
     921                                'default' => ''
     922                        ),
     923                        'checkmarkColor' => array(
     924                                'type' => 'string',
     925                                'default' => '#10b981'
     926                        )
     927                ),
     928                'textdomain' => 'zenithium-blocks',
    480929                'editorScript' => 'file:./index.js',
    481930                'editorStyle' => 'file:./index.css',
    482931                'style' => 'file:./style-index.css',
    483                 'render' => 'file:./render.php',
    484                 'viewScript' => 'file:./view.js'
     932                'render' => 'file:./render.php'
    485933        ),
    486934        'sticky-cta' => array(
    … …  
    489937                'name' => 'zenithium-blocks/sticky-cta',
    490938                'version' => '1.0.0',
    491                 'title' => 'Floating Sticky CTA Bar',
    492                 'category' => 'widgets',
     939                'title' => 'Zenithium Floating Sticky CTA Bar',
     940                'category' => 'zenithium-blocks',
    493941                'icon' => 'megaphone',
    494942                'description' => 'A responsive floating banner for call-to-actions, announcements, and quick lead capture.',
    … …  
    508956                        'spacing' => array(
    509957                                'margin' => true,
    510                                 'padding' => true
     958                                'padding' => true,
     959                                'blockGap' => true
    511960                        ),
    512961                        'color' => array(
    513962                                'text' => true,
    514                                 'background' => true
     963                                'background' => true,
     964                                'gradients' => true,
     965                                'link' => true,
     966                                'heading' => true,
     967                                'button' => true,
     968                                'enableContrastChecker' => true
     969                        ),
     970                        'typography' => array(
     971                                'fontSize' => true,
     972                                'lineHeight' => true,
     973                                'fontFamily' => true,
     974                                'fontWeight' => true,
     975                                'fontStyle' => true,
     976                                'textTransform' => true,
     977                                'letterSpacing' => true,
     978                                'textDecoration' => true
     979                        ),
     980                        'border' => array(
     981                                'color' => true,
     982                                'radius' => true,
     983                                'style' => true,
     984                                'width' => true
    515985                        )
    516986                ),
    … …  
    5661036                'render' => 'file:./render.php',
    5671037                'viewScript' => 'file:./view.js'
     1038        ),
     1039        'tab-item' => array(
     1040                '$schema' => 'https://schemas.wp.org/trunk/block.json',
     1041                'apiVersion' => 3,
     1042                'name' => 'zenithium-blocks/tab-item',
     1043                'version' => '1.0.0',
     1044                'title' => 'Zenithium Tab Item',
     1045                'category' => 'zenithium-blocks',
     1046                'icon' => 'welcome-add-page',
     1047                'description' => 'An individual tab panel container within the Tabs Group block.',
     1048                'parent' => array(
     1049                        'zenithium-blocks/tabs-group'
     1050                ),
     1051                'usesContext' => array(
     1052                        'zenithium-blocks/activeTab'
     1053                ),
     1054                'keywords' => array(
     1055                        'tab',
     1056                        'tabs',
     1057                        'item',
     1058                        'panel'
     1059                ),
     1060                'textdomain' => 'zenithium-blocks',
     1061                'supports' => array(
     1062                        'html' => false,
     1063                        'spacing' => array(
     1064                                'margin' => true,
     1065                                'padding' => true,
     1066                                'blockGap' => true
     1067                        ),
     1068                        'color' => array(
     1069                                'text' => true,
     1070                                'background' => true,
     1071                                'gradients' => true,
     1072                                'link' => true,
     1073                                'heading' => true,
     1074                                'button' => true,
     1075                                'enableContrastChecker' => true
     1076                        ),
     1077                        'typography' => array(
     1078                                'fontSize' => true,
     1079                                'lineHeight' => true,
     1080                                'fontFamily' => true,
     1081                                'fontWeight' => true,
     1082                                'fontStyle' => true,
     1083                                'textTransform' => true,
     1084                                'letterSpacing' => true,
     1085                                'textDecoration' => true
     1086                        ),
     1087                        'border' => array(
     1088                                'color' => true,
     1089                                'radius' => true,
     1090                                'style' => true,
     1091                                'width' => true,
     1092                                'left' => true,
     1093                                'right' => true,
     1094                                'top' => true,
     1095                                'bottom' => true
     1096                        )
     1097                ),
     1098                'attributes' => array(
     1099                        'title' => array(
     1100                                'type' => 'string',
     1101                                'default' => 'Tab Title'
     1102                        ),
     1103                        'tabId' => array(
     1104                                'type' => 'string',
     1105                                'default' => ''
     1106                        )
     1107                ),
     1108                'editorScript' => 'file:./index.js',
     1109                'editorStyle' => 'file:./index.css',
     1110                'style' => 'file:./style-index.css'
     1111        ),
     1112        'tabs-group' => array(
     1113                '$schema' => 'https://schemas.wp.org/trunk/block.json',
     1114                'apiVersion' => 3,
     1115                'name' => 'zenithium-blocks/tabs-group',
     1116                'version' => '1.0.0',
     1117                'title' => 'Zenithium Tabs Group',
     1118                'category' => 'zenithium-blocks',
     1119                'icon' => 'index-card',
     1120                'description' => 'A container block to organize content into interactive tabs with complete global customization options.',
     1121                'allowedBlocks' => array(
     1122                        'zenithium-blocks/tab-item'
     1123                ),
     1124                'providesContext' => array(
     1125                        'zenithium-blocks/activeTab' => 'activeTab'
     1126                ),
     1127                'template' => array(
     1128                        array(
     1129                                'zenithium-blocks/tab-item',
     1130                                array(
     1131                                        'title' => 'Tab One'
     1132                                )
     1133                        )
     1134                ),
     1135                'supports' => array(
     1136                        'html' => false,
     1137                        'align' => array(
     1138                                'wide',
     1139                                'full'
     1140                        ),
     1141                        'spacing' => array(
     1142                                'margin' => true,
     1143                                'padding' => true,
     1144                                'blockGap' => true
     1145                        ),
     1146                        'color' => array(
     1147                                'text' => true,
     1148                                'background' => true,
     1149                                'gradients' => true,
     1150                                'link' => true,
     1151                                'heading' => true,
     1152                                'button' => true,
     1153                                'enableContrastChecker' => true
     1154                        ),
     1155                        'typography' => array(
     1156                                'fontSize' => true,
     1157                                'lineHeight' => true,
     1158                                'fontFamily' => true,
     1159                                'fontWeight' => true,
     1160                                'fontStyle' => true,
     1161                                'textTransform' => true,
     1162                                'letterSpacing' => true,
     1163                                'textDecoration' => true
     1164                        ),
     1165                        'border' => array(
     1166                                'color' => true,
     1167                                'radius' => true,
     1168                                'style' => true,
     1169                                'width' => true
     1170                        )
     1171                ),
     1172                'attributes' => array(
     1173                        'layoutStyle' => array(
     1174                                'type' => 'string',
     1175                                'default' => 'horizontal'
     1176                        ),
     1177                        'activeTab' => array(
     1178                                'type' => 'number',
     1179                                'default' => 0
     1180                        ),
     1181                        'accentColor' => array(
     1182                                'type' => 'string',
     1183                                'default' => '#2563eb'
     1184                        ),
     1185                        'tabBgColor' => array(
     1186                                'type' => 'string',
     1187                                'default' => '#f8fafc'
     1188                        ),
     1189                        'tabTextColor' => array(
     1190                                'type' => 'string',
     1191                                'default' => '#1e293b'
     1192                        ),
     1193                        'activeTabBgColor' => array(
     1194                                'type' => 'string',
     1195                                'default' => '#ffffff'
     1196                        ),
     1197                        'activeTabTextColor' => array(
     1198                                'type' => 'string',
     1199                                'default' => '#2563eb'
     1200                        ),
     1201                        'tabFontSize' => array(
     1202                                'type' => 'number',
     1203                                'default' => 16
     1204                        ),
     1205                        'tabFontWeight' => array(
     1206                                'type' => 'string',
     1207                                'default' => '500'
     1208                        ),
     1209                        'tabGap' => array(
     1210                                'type' => 'number',
     1211                                'default' => 6
     1212                        ),
     1213                        'tabSpace' => array(
     1214                                'type' => 'number',
     1215                                'default' => 0
     1216                        ),
     1217                        'tabPaddingX' => array(
     1218                                'type' => 'number',
     1219                                'default' => 20
     1220                        ),
     1221                        'tabPaddingY' => array(
     1222                                'type' => 'number',
     1223                                'default' => 10
     1224                        ),
     1225                        'tabBorderRadius' => array(
     1226                                'type' => 'number',
     1227                                'default' => 6
     1228                        ),
     1229                        'contentPadding' => array(
     1230                                'type' => 'number',
     1231                                'default' => 20
     1232                        ),
     1233                        'contentBgColor' => array(
     1234                                'type' => 'string',
     1235                                'default' => '#ffffff'
     1236                        ),
     1237                        'contentBorderColor' => array(
     1238                                'type' => 'string',
     1239                                'default' => 'rgba(0, 0, 0, 0.08)'
     1240                        )
     1241                ),
     1242                'editorScript' => 'file:./index.js',
     1243                'editorStyle' => 'file:./index.css',
     1244                'style' => 'file:./style-index.css',
     1245                'render' => 'file:./render.php',
     1246                'viewScript' => 'file:./view.js'
     1247        ),
     1248        'testimonial-card' => array(
     1249                '$schema' => 'https://schemas.wp.org/trunk/block.json',
     1250                'apiVersion' => 3,
     1251                'name' => 'zenithium-blocks/testimonial-card',
     1252                'version' => '1.0.0',
     1253                'title' => 'Zenithium Testimonial Card',
     1254                'category' => 'zenithium-blocks',
     1255                'icon' => 'format-quote',
     1256                'description' => 'A clean testimonial card with quote, author details, avatar, and star rating.',
     1257                'keywords' => array(
     1258                        'testimonial',
     1259                        'review',
     1260                        'quote',
     1261                        'rating',
     1262                        'zenithium'
     1263                ),
     1264                'supports' => array(
     1265                        'html' => false,
     1266                        'align' => array(
     1267                                'wide',
     1268                                'full'
     1269                        ),
     1270                        'color' => array(
     1271                                'background' => true,
     1272                                'text' => true,
     1273                                'link' => true,
     1274                                'gradients' => true,
     1275                                'enableCustomColors' => true,
     1276                                'enableAlpha' => true
     1277                        ),
     1278                        'spacing' => array(
     1279                                'padding' => true,
     1280                                'margin' => true
     1281                        ),
     1282                        'border' => array(
     1283                                'color' => true,
     1284                                'radius' => true,
     1285                                'style' => true,
     1286                                'width' => true,
     1287                                '__experimentalDefaultControls' => array(
     1288                                        'color' => true,
     1289                                        'radius' => true,
     1290                                        'width' => true
     1291                                )
     1292                        )
     1293                ),
     1294                'attributes' => array(
     1295                        'quote' => array(
     1296                                'type' => 'string',
     1297                                'default' => 'This block suite simplified our block editor workflow completely!'
     1298                        ),
     1299                        'authorName' => array(
     1300                                'type' => 'string',
     1301                                'default' => 'Jane Doe'
     1302                        ),
     1303                        'authorRole' => array(
     1304                                'type' => 'string',
     1305                                'default' => 'Product Manager'
     1306                        ),
     1307                        'rating' => array(
     1308                                'type' => 'number',
     1309                                'default' => 5
     1310                        ),
     1311                        'mediaId' => array(
     1312                                'type' => 'number',
     1313                                'default' => 0
     1314                        ),
     1315                        'mediaUrl' => array(
     1316                                'type' => 'string',
     1317                                'default' => ''
     1318                        ),
     1319                        'avatarSize' => array(
     1320                                'type' => 'number',
     1321                                'default' => 48
     1322                        ),
     1323                        'quoteColor' => array(
     1324                                'type' => 'string',
     1325                                'default' => ''
     1326                        ),
     1327                        'quoteFontSize' => array(
     1328                                'type' => 'number',
     1329                                'default' => 17
     1330                        ),
     1331                        'quoteLineHeight' => array(
     1332                                'type' => 'string',
     1333                                'default' => '1.6'
     1334                        ),
     1335                        'authorNameColor' => array(
     1336                                'type' => 'string',
     1337                                'default' => ''
     1338                        ),
     1339                        'authorNameFontSize' => array(
     1340                                'type' => 'number',
     1341                                'default' => 16
     1342                        ),
     1343                        'authorRoleColor' => array(
     1344                                'type' => 'string',
     1345                                'default' => ''
     1346                        ),
     1347                        'authorRoleFontSize' => array(
     1348                                'type' => 'number',
     1349                                'default' => 14
     1350                        ),
     1351                        'starColor' => array(
     1352                                'type' => 'string',
     1353                                'default' => '#f59e0b'
     1354                        )
     1355                ),
     1356                'textdomain' => 'zenithium-blocks',
     1357                'editorScript' => 'file:./index.js',
     1358                'editorStyle' => 'file:./index.css',
     1359                'style' => 'file:./style-index.css',
     1360                'render' => 'file:./render.php'
    5681361        )
    5691362);
  • zenithium-blocks/trunk/build/blocks/accordion-group/block.json

    r3640847 r3769770  
    33  "apiVersion": 3,
    44  "name": "zenithium-blocks/accordion-group",
    5   "version": "1.0.0",
    6   "title": "Accordion Group",
    7   "category": "widgets",
     5  "version": "1.1.1",
     6  "title": "Zenithium Accordion Group",
     7  "category": "zenithium-blocks",
    88  "icon": "list-view",
    9   "description": "Container for multiple accordion items with auto-close and SEO schema controls.",
     9  "description": "A group of customizable accordion items.",
    1010  "keywords": [
    1111    "accordion",
    1212    "faq",
    13     "group"
     13    "group",
     14    "toggle"
    1415  ],
     16  "allowedBlocks": [
     17    "zenithium-blocks/accordion-item"
     18  ],
     19  "providesContext": {
     20    "zenithium-blocks/autoClose": "autoClose",
     21    "zenithium-blocks/headerFontSize": "headerFontSize",
     22    "zenithium-blocks/headerFontWeight": "headerFontWeight",
     23    "zenithium-blocks/headerTextColor": "headerTextColor",
     24    "zenithium-blocks/headerHoverTextColor": "headerHoverTextColor",
     25    "zenithium-blocks/headerBgColor": "headerBgColor",
     26    "zenithium-blocks/headerHoverBgColor": "headerHoverBgColor",
     27    "zenithium-blocks/iconColor": "iconColor",
     28    "zenithium-blocks/iconHoverColor": "iconHoverColor",
     29    "zenithium-blocks/iconSize": "iconSize",
     30    "zenithium-blocks/itemGap": "itemGap",
     31    "zenithium-blocks/headerPaddingX": "headerPaddingX",
     32    "zenithium-blocks/headerPaddingY": "headerPaddingY",
     33    "zenithium-blocks/contentPaddingX": "contentPaddingX",
     34    "zenithium-blocks/contentPaddingY": "contentPaddingY",
     35    "zenithium-blocks/contentGap": "contentGap"
     36  },
    1537  "textdomain": "zenithium-blocks",
    1638  "supports": {
    … …  
    2042      "full"
    2143    ],
     44    "layout": true,
    2245    "spacing": {
    2346      "margin": true,
    24       "padding": true
     47      "padding": true,
     48      "blockGap": true,
     49      "units": [
     50        "px",
     51        "em",
     52        "rem",
     53        "%"
     54      ],
     55      "__experimentalDefaultControls": {
     56        "margin": true,
     57        "padding": true,
     58        "blockGap": true
     59      }
     60    },
     61    "color": {
     62      "text": true,
     63      "background": true,
     64      "gradients": true
     65    },
     66    "border": {
     67      "color": true,
     68      "radius": true,
     69      "style": true,
     70      "width": true,
     71      "__experimentalDefaultControls": {
     72        "color": true,
     73        "radius": true,
     74        "width": true
     75      }
     76    },
     77    "typography": {
     78      "fontSize": true,
     79      "lineHeight": true,
     80      "fontFamily": true,
     81      "fontWeight": true,
     82      "fontStyle": true,
     83      "letterSpacing": true,
     84      "textTransform": true,
     85      "textDecoration": true,
     86      "__experimentalDefaultControls": {
     87        "fontSize": true,
     88        "fontWeight": true
     89      }
    2590    }
    2691  },
    … …  
    3499      "default": true
    35100    },
    36     "accentColor": {
     101    "headerFontSize": {
    37102      "type": "string",
    38       "default": "#2563eb"
     103      "default": "1.05rem"
     104    },
     105    "headerFontWeight": {
     106      "type": "string",
     107      "default": "600"
     108    },
     109    "headerTextColor": {
     110      "type": "string",
     111      "default": ""
     112    },
     113    "headerHoverTextColor": {
     114      "type": "string",
     115      "default": ""
    39116    },
    40117    "headerBgColor": {
    41118      "type": "string",
    42       "default": "#f8fafc"
     119      "default": ""
     120    },
     121    "headerHoverBgColor": {
     122      "type": "string",
     123      "default": ""
     124    },
     125    "iconColor": {
     126      "type": "string",
     127      "default": ""
     128    },
     129    "iconHoverColor": {
     130      "type": "string",
     131      "default": ""
     132    },
     133    "iconSize": {
     134      "type": "number",
     135      "default": 20
     136    },
     137    "groupBorderColor": {
     138      "type": "string",
     139      "default": ""
     140    },
     141    "groupBorderWidth": {
     142      "type": "number",
     143      "default": 0
     144    },
     145    "groupBorderRadius": {
     146      "type": "number",
     147      "default": 0
     148    },
     149    "groupBorderStyle": {
     150      "type": "string",
     151      "default": "solid"
     152    },
     153    "itemGap": {
     154      "type": "number",
     155      "default": 12
     156    },
     157    "headerPaddingX": {
     158      "type": "number",
     159      "default": 20
     160    },
     161    "headerPaddingY": {
     162      "type": "number",
     163      "default": 16
     164    },
     165    "contentPaddingX": {
     166      "type": "number",
     167      "default": 20
     168    },
     169    "contentPaddingY": {
     170      "type": "number",
     171      "default": 20
     172    },
     173    "contentGap": {
     174      "type": "number",
     175      "default": 16
    43176    }
    44177  },
  • zenithium-blocks/trunk/build/blocks/accordion-group/index-rtl.css

    r3640847 r3769770  
    1 .zenithium-blocks-accordion-group-edit{background-color:#fff;border:1px dashed #cbd5e1;border-radius:10px;padding:16px;transition:border-color .2s ease}.zenithium-blocks-accordion-group-edit.is-selected,.zenithium-blocks-accordion-group-edit:hover{border-color:#2563eb}.zenithium-blocks-accordion-group-edit .zenithium-blocks-accordion-group-container{display:flex;flex-direction:column;gap:12px}
     1.zenithium-blocks-accordion-group-edit{--zb-accent-color:#2563eb;--zb-header-bg:#f8fafc;box-sizing:border-box;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.zenithium-blocks-accordion-group-edit,.zenithium-blocks-accordion-group-edit .block-editor-block-list__layout,.zenithium-blocks-accordion-group-edit.block-editor-block-list__layout{display:flex;flex-direction:column;gap:var(--zb-item-gap,var(--wp--style--block-gap,12px))}.zenithium-blocks-accordion-group-edit>.block-editor-block-list__block,.zenithium-blocks-accordion-group-edit>.wp-block{margin-block-end:0;margin-block-start:0}.zenithium-blocks-accordion-group-edit .block-list-appender{margin-top:8px}
  • zenithium-blocks/trunk/build/blocks/accordion-group/index.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => 'b075e15f2002427158a4');
     1<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-i18n'), 'version' => 'bb36c3952ac16f6bb155');
  • zenithium-blocks/trunk/build/blocks/accordion-group/index.css

    r3640847 r3769770  
    1 .zenithium-blocks-accordion-group-edit{background-color:#fff;border:1px dashed #cbd5e1;border-radius:10px;padding:16px;transition:border-color .2s ease}.zenithium-blocks-accordion-group-edit.is-selected,.zenithium-blocks-accordion-group-edit:hover{border-color:#2563eb}.zenithium-blocks-accordion-group-edit .zenithium-blocks-accordion-group-container{display:flex;flex-direction:column;gap:12px}
     1.zenithium-blocks-accordion-group-edit{--zb-accent-color:#2563eb;--zb-header-bg:#f8fafc;box-sizing:border-box;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.zenithium-blocks-accordion-group-edit,.zenithium-blocks-accordion-group-edit .block-editor-block-list__layout,.zenithium-blocks-accordion-group-edit.block-editor-block-list__layout{display:flex;flex-direction:column;gap:var(--zb-item-gap,var(--wp--style--block-gap,12px))}.zenithium-blocks-accordion-group-edit>.block-editor-block-list__block,.zenithium-blocks-accordion-group-edit>.wp-block{margin-block-end:0;margin-block-start:0}.zenithium-blocks-accordion-group-edit .block-list-appender{margin-top:8px}
  • zenithium-blocks/trunk/build/blocks/accordion-group/index.js

    r3640847 r3769770  
    1 (()=>{"use strict";var e={734(){const e=window.wp.blocks,o=window.wp.i18n,n=window.wp.blockEditor,l=window.wp.components,t=window.ReactJSXRuntime,c=[{name:"Blue",color:"#2563eb"},{name:"Purple",color:"#9333ea"},{name:"Emerald",color:"#059669"},{name:"Rose",color:"#e11d48"},{name:"Slate",color:"#475569"},{name:"Dark",color:"#0f172a"}],i=JSON.parse('{"UU":"zenithium-blocks/accordion-group"}');(0,e.registerBlockType)(i.UU,{edit:function({attributes:e,setAttributes:i}){const{autoClose:r,enableSchema:s,accentColor:a,headerBgColor:h}=e,u=(0,n.useBlockProps)({className:"zenithium-blocks-accordion-group-edit",style:{"--zb-accent-color":a||"#2563eb","--zb-header-bg":h||"#f8fafc"}}),d=[["zenithium-blocks/accordion",{title:(0,o.__)("How does this block work?","zenithium-blocks"),isOpen:!0}],["zenithium-blocks/accordion",{title:(0,o.__)("Can I customize the colors?","zenithium-blocks")}]];return(0,t.jsxs)("div",{...u,children:[(0,t.jsxs)(n.InspectorControls,{children:[(0,t.jsxs)(l.PanelBody,{title:(0,o.__)("Group Behavior & SEO","zenithium-blocks"),children:[(0,t.jsx)(l.ToggleControl,{label:(0,o.__)("Auto-Close Other Items","zenithium-blocks"),help:(0,o.__)("Opening one item automatically closes all other accordion items in this group.","zenithium-blocks"),checked:r,onChange:e=>i({autoClose:e})}),(0,t.jsx)(l.ToggleControl,{label:(0,o.__)("Enable FAQ Schema (JSON-LD)","zenithium-blocks"),help:(0,o.__)("Generates Google-friendly structured data for rich search results.","zenithium-blocks"),checked:s,onChange:e=>i({enableSchema:e})})]}),(0,t.jsxs)(l.PanelBody,{title:(0,o.__)("Global Color Palette","zenithium-blocks"),initialOpen:!1,children:[(0,t.jsx)("p",{children:(0,o.__)("Active Accent Color","zenithium-blocks")}),(0,t.jsx)(l.ColorPalette,{colors:c,value:a,onChange:e=>i({accentColor:e||"#2563eb"})}),(0,t.jsx)("p",{children:(0,o.__)("Header Background Color","zenithium-blocks")}),(0,t.jsx)(l.ColorPalette,{colors:c,value:h,onChange:e=>i({headerBgColor:e||"#f8fafc"})})]})]}),(0,t.jsx)("div",{className:"zenithium-blocks-accordion-group-container",children:(0,t.jsx)(n.InnerBlocks,{allowedBlocks:["zenithium-blocks/accordion"],template:d})})]})},save:function(){return(0,t.jsx)(n.InnerBlocks.Content,{})}})}};const o={};function n(l){const t=o[l];if(void 0!==t)return t.exports;const c=o[l]={exports:{}};return e[l](c,c.exports,n),c.exports}n.m=e,(()=>{const e=[];n.O=(o,l,t,c)=>{if(l){c=c||0;for(var i=e.length;i>0&&e[i-1][2]>c;i--)e[i]=e[i-1];return void(e[i]=[l,t,c])}let r=1/0;for(i=0;i<e.length;i++){let[l,t,c]=e[i],a=!0;for(var s=0;s<l.length;s++)(!1&c||r>=c)&&Object.keys(n.O).every(e=>n.O[e](l[s]))?l.splice(s--,1):(a=!1,c<r&&(r=c));if(a){e.splice(i--,1);const n=t();void 0!==n&&(o=n)}}return o}})(),n.o=(e,o)=>Object.hasOwn(e,o),(()=>{const e={585:0,637:0};n.O.j=o=>0===e[o];const o=(o,l)=>{let[t,c,i]=l;var r,s,a=0;if(t.some(o=>0!==e[o])){for(r in c)n.o(c,r)&&(n.m[r]=c[r]);if(i)var h=i(n)}for(o&&o(l);a<t.length;a++)s=t[a],n.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return n.O(h)},l=globalThis.webpackChunkzenithium_blocks||=[];l.forEach(o.bind(null,0)),l.push=o.bind(null,l.push.bind(l))})();let l=n.O(void 0,[637],()=>n(734));l=n.O(l)})();
     1(()=>{"use strict";var e={252(){const e=window.wp.blocks,o=window.wp.i18n,n=window.wp.blockEditor,i=window.wp.components,t=window.wp.data,l=window.ReactJSXRuntime,r=["zenithium-blocks/accordion-item"],a=[["zenithium-blocks/accordion-item",{title:(0,o.__)("How does this accordion group work?","zenithium-blocks"),isOpen:!0}],["zenithium-blocks/accordion-item",{title:(0,o.__)("Can I customize each item individually?","zenithium-blocks")}]],s=(e,o="")=>e?"string"==typeof e&&e.startsWith("var:preset|color|")?`var(--wp--preset--color--${e.replace("var:preset|color|","")})`:e:o,c=JSON.parse('{"UU":"zenithium-blocks/accordion-group"}');(0,e.registerBlockType)(c.UU,{edit:function({attributes:c,setAttributes:d,clientId:h}){const{autoClose:u,enableSchema:b,headerFontSize:g,headerFontWeight:p,headerTextColor:m,headerHoverTextColor:_,headerBgColor:z,headerHoverBgColor:k,iconColor:C,iconHoverColor:x,iconSize:v,groupBorderColor:B,groupBorderWidth:S,groupBorderRadius:j,groupBorderStyle:w,itemGap:y=12,headerPaddingX:P=20,headerPaddingY:O=16,contentPaddingX:f=20,contentPaddingY:H=20,contentGap:I=16}=c,{insertBlock:R}=(0,t.useDispatch)("core/block-editor"),$=((e,o="")=>e?"string"==typeof e&&e.startsWith("var:preset|spacing|")?`var(--wp--preset--spacing--${e.replace("var:preset|spacing|","")})`:e:o)(c.style?.spacing?.blockGap,"")||`${y??12}px`,F=(0,n.useBlockProps)({className:"zenithium-blocks-accordion-group-edit",style:{"--zb-title-size":g||"1.05rem","--zb-title-weight":p||"600","--zb-header-text":s(m,"inherit"),"--zb-header-hover-text":s(_||m,"inherit"),"--zb-header-bg":s(z,"transparent"),"--zb-header-hover-bg":s(k||z,"transparent"),"--zb-icon-color":s(C,"currentColor"),"--zb-icon-hover-color":s(x||C,"currentColor"),"--zb-icon-size":`${v||20}px`,"--zb-group-border-color":s(B,"transparent"),"--zb-group-border-width":`${S||0}px`,"--zb-group-border-radius":`${j||0}px`,"--zb-group-border-style":w||"solid","--zb-item-gap":$,"--zb-header-padding-x":`${P??20}px`,"--zb-header-padding-y":`${O??16}px`,"--zb-content-padding-x":`${f??20}px`,"--zb-content-padding-y":`${H??20}px`,"--zb-content-gap":`${I??16}px`,"--wp--style--block-gap":$,display:"flex",flexDirection:"column",gap:$}}),G=(0,n.useInnerBlocksProps)(F,{allowedBlocks:r,template:a});return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(n.InspectorControls,{children:[(0,l.jsxs)(i.PanelBody,{title:(0,o.__)("Group Behavior & SEO","zenithium-blocks"),children:[(0,l.jsx)(i.ToggleControl,{label:(0,o.__)("Auto-Close Other Items","zenithium-blocks"),help:(0,o.__)("Opening one item automatically closes all other items in this group.","zenithium-blocks"),checked:u,onChange:e=>d({autoClose:e})}),(0,l.jsx)(i.ToggleControl,{label:(0,o.__)("Enable FAQ Schema (JSON-LD)","zenithium-blocks"),help:(0,o.__)("Generates structured FAQ data for search engines.","zenithium-blocks"),checked:b,onChange:e=>d({enableSchema:e})}),(0,l.jsx)(i.Button,{variant:"secondary",onClick:()=>{const n=(0,e.createBlock)("zenithium-blocks/accordion-item",{title:(0,o.__)("New Accordion Item","zenithium-blocks")});R(n,void 0,h)},icon:"plus",style:{width:"100%",justifyContent:"center"},children:(0,o.__)("Add New Item","zenithium-blocks")})]}),(0,l.jsxs)(i.PanelBody,{title:(0,o.__)("Item Spacing & Padding","zenithium-blocks"),initialOpen:!0,children:[(0,l.jsx)(i.RangeControl,{label:(0,o.__)("Space Between Items (px)","zenithium-blocks"),value:y,onChange:e=>d({itemGap:e}),min:0,max:60}),(0,l.jsx)(i.RangeControl,{label:(0,o.__)("Header Horizontal Padding (px)","zenithium-blocks"),value:P,onChange:e=>d({headerPaddingX:e}),min:0,max:60}),(0,l.jsx)(i.RangeControl,{label:(0,o.__)("Header Vertical Padding (px)","zenithium-blocks"),value:O,onChange:e=>d({headerPaddingY:e}),min:0,max:40}),(0,l.jsx)(i.RangeControl,{label:(0,o.__)("Content Horizontal Padding (px)","zenithium-blocks"),value:f,onChange:e=>d({contentPaddingX:e}),min:0,max:60}),(0,l.jsx)(i.RangeControl,{label:(0,o.__)("Content Vertical Padding (px)","zenithium-blocks"),value:H,onChange:e=>d({contentPaddingY:e}),min:0,max:60}),(0,l.jsx)(i.RangeControl,{label:(0,o.__)("Content Blocks Gap (px)","zenithium-blocks"),value:I,onChange:e=>d({contentGap:e}),min:0,max:40})]}),(0,l.jsxs)(i.PanelBody,{title:(0,o.__)("Shared Item Heading Styles","zenithium-blocks"),initialOpen:!1,children:[(0,l.jsx)(i.FontSizePicker,{value:g,onChange:e=>d({headerFontSize:e||"1.05rem"}),fallbackFontSize:16}),(0,l.jsx)(i.SelectControl,{label:(0,o.__)("Heading Font Weight","zenithium-blocks"),value:p,options:[{label:(0,o.__)("Normal (400)","zenithium-blocks"),value:"400"},{label:(0,o.__)("Medium (500)","zenithium-blocks"),value:"500"},{label:(0,o.__)("Semi-Bold (600)","zenithium-blocks"),value:"600"},{label:(0,o.__)("Bold (700)","zenithium-blocks"),value:"700"}],onChange:e=>d({headerFontWeight:e})})]}),(0,l.jsx)(n.PanelColorSettings,{title:(0,o.__)("Shared Item Colors","zenithium-blocks"),initialOpen:!1,colorSettings:[{value:m,onChange:e=>d({headerTextColor:e||""}),label:(0,o.__)("Heading Color","zenithium-blocks")},{value:_,onChange:e=>d({headerHoverTextColor:e||""}),label:(0,o.__)("Heading Hover Color","zenithium-blocks")},{value:z,onChange:e=>d({headerBgColor:e||""}),label:(0,o.__)("Heading Background","zenithium-blocks")},{value:k,onChange:e=>d({headerHoverBgColor:e||""}),label:(0,o.__)("Heading Hover Background","zenithium-blocks")}]}),(0,l.jsx)(i.PanelBody,{title:(0,o.__)("Shared Item Icon","zenithium-blocks"),initialOpen:!1,children:(0,l.jsx)(i.RangeControl,{label:(0,o.__)("Icon Size (px)","zenithium-blocks"),value:v,onChange:e=>d({iconSize:e}),min:12,max:48})}),(0,l.jsx)(n.PanelColorSettings,{title:(0,o.__)("Shared Item Icon Colors","zenithium-blocks"),initialOpen:!1,colorSettings:[{value:C,onChange:e=>d({iconColor:e||""}),label:(0,o.__)("Icon Color","zenithium-blocks")},{value:x,onChange:e=>d({iconHoverColor:e||""}),label:(0,o.__)("Icon Hover Color","zenithium-blocks")}]}),(0,l.jsxs)(i.PanelBody,{title:(0,o.__)("Group Border","zenithium-blocks"),initialOpen:!1,children:[(0,l.jsx)(i.RangeControl,{label:(0,o.__)("Border Width (px)","zenithium-blocks"),value:S,onChange:e=>d({groupBorderWidth:e}),min:0,max:12}),(0,l.jsx)(i.RangeControl,{label:(0,o.__)("Border Radius (px)","zenithium-blocks"),value:j,onChange:e=>d({groupBorderRadius:e}),min:0,max:48}),(0,l.jsx)(i.SelectControl,{label:(0,o.__)("Border Style","zenithium-blocks"),value:w,options:[{label:(0,o.__)("Solid","zenithium-blocks"),value:"solid"},{label:(0,o.__)("Dashed","zenithium-blocks"),value:"dashed"},{label:(0,o.__)("Dotted","zenithium-blocks"),value:"dotted"},{label:(0,o.__)("Double","zenithium-blocks"),value:"double"}],onChange:e=>d({groupBorderStyle:e})}),(0,l.jsx)(n.PanelColorSettings,{title:(0,o.__)("Border Color","zenithium-blocks"),colorSettings:[{value:B,onChange:e=>d({groupBorderColor:e||""}),label:(0,o.__)("Border Color","zenithium-blocks")}]})]})]}),(0,l.jsx)("div",{...G})]})},save:function(){return(0,l.jsx)(n.InnerBlocks.Content,{})}})}};const o={};function n(i){const t=o[i];if(void 0!==t)return t.exports;const l=o[i]={exports:{}};return e[i](l,l.exports,n),l.exports}n.m=e,(()=>{const e=[];n.O=(o,i,t,l)=>{if(i){l=l||0;for(var r=e.length;r>0&&e[r-1][2]>l;r--)e[r]=e[r-1];return void(e[r]=[i,t,l])}let a=1/0;for(r=0;r<e.length;r++){let[i,t,l]=e[r],c=!0;for(var s=0;s<i.length;s++)(!1&l||a>=l)&&Object.keys(n.O).every(e=>n.O[e](i[s]))?i.splice(s--,1):(c=!1,l<a&&(a=l));if(c){e.splice(r--,1);const n=t();void 0!==n&&(o=n)}}return o}})(),n.o=(e,o)=>Object.hasOwn(e,o),(()=>{const e={585:0,637:0};n.O.j=o=>0===e[o];const o=(o,i)=>{let[t,l,r]=i;var a,s,c=0;if(t.some(o=>0!==e[o])){for(a in l)n.o(l,a)&&(n.m[a]=l[a]);if(r)var d=r(n)}for(o&&o(i);c<t.length;c++)s=t[c],n.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return n.O(d)},i=globalThis.webpackChunkzenithium_blocks||=[];i.forEach(o.bind(null,0)),i.push=o.bind(null,i.push.bind(i))})();let i=n.O(void 0,[637],()=>n(252));i=n.O(i)})();
  • zenithium-blocks/trunk/build/blocks/accordion-group/render.php

    r3640847 r3769770  
    1111
    1212call_user_func(
    13     function ($attributes, $content, $block) {
     13    function ($attributes, $content) {
     14        $format_color = function ($color, $default = '') {
     15            if (empty($color)) {
     16                return $default;
     17            }
     18            if (is_string($color) && str_starts_with($color, 'var:preset|color|')) {
     19                $slug = str_replace('var:preset|color|', '', $color);
     20                return "var(--wp--preset--color--{$slug})";
     21            }
     22            return $color;
     23        };
     24
     25        $format_spacing = function ($spacing, $default = '') {
     26            if (empty($spacing)) {
     27                return $default;
     28            }
     29            if (is_string($spacing) && str_starts_with($spacing, 'var:preset|spacing|')) {
     30                $slug = str_replace('var:preset|spacing|', '', $spacing);
     31                return "var(--wp--preset--spacing--{$slug})";
     32            }
     33            return $spacing;
     34        };
     35
    1436        $auto_close = $attributes['autoClose'] ?? true;
    1537        $enable_schema = $attributes['enableSchema'] ?? true;
    16         $accent_color = $attributes['accentColor'] ?? '#2563eb';
    17         $header_bg = $attributes['headerBgColor'] ?? '#f8fafc';
     38        $border_style = $attributes['groupBorderStyle'] ?? 'solid';
     39        $allowed_border_styles = array('solid', 'dashed', 'dotted', 'double');
    1840
    19         $inline_styles = sprintf(
    20             '--zb-accent-color: %s; --zb-header-bg: %s;',
    21             esc_attr($accent_color),
    22             esc_attr($header_bg)
     41        $raw_block_gap = $attributes['style']['spacing']['blockGap'] ?? '';
     42        $core_block_gap = $format_spacing($raw_block_gap);
     43        $item_gap = !empty($core_block_gap) ? $core_block_gap : sprintf('%dpx', (int) ($attributes['itemGap'] ?? 12));
     44
     45        $header_padding_x = (int) ($attributes['headerPaddingX'] ?? 20);
     46        $header_padding_y = (int) ($attributes['headerPaddingY'] ?? 16);
     47        $content_padding_x = (int) ($attributes['contentPaddingX'] ?? 20);
     48        $content_padding_y = (int) ($attributes['contentPaddingY'] ?? 20);
     49        $content_gap = (int) ($attributes['contentGap'] ?? 16);
     50
     51        // Shared heading typography.
     52        $header_font_size = !empty($attributes['headerFontSize']) ? $attributes['headerFontSize'] : '1.05rem';
     53        $header_font_weight = !empty($attributes['headerFontWeight']) ? $attributes['headerFontWeight'] : '600';
     54        $icon_size = max(12, (int) ($attributes['iconSize'] ?? 20));
     55
     56        // Shared colors – resolve WordPress preset notation to CSS custom properties.
     57        $header_text_color = $format_color($attributes['headerTextColor'] ?? '');
     58        $header_hover_text = $format_color($attributes['headerHoverTextColor'] ?? '');
     59        $header_bg_color = $format_color($attributes['headerBgColor'] ?? '');
     60        $header_hover_bg = $format_color($attributes['headerHoverBgColor'] ?? '');
     61        $icon_color = $format_color($attributes['iconColor'] ?? '');
     62        $icon_hover_color = $format_color($attributes['iconHoverColor'] ?? '');
     63
     64        $group_styles = array(
     65            sprintf('--zb-group-border-width: %dpx;', max(0, (int) ($attributes['groupBorderWidth'] ?? 0))),
     66            sprintf('--zb-group-border-radius: %dpx;', max(0, (int) ($attributes['groupBorderRadius'] ?? 0))),
     67            sprintf('--zb-group-border-style: %s;', in_array($border_style, $allowed_border_styles, true) ? $border_style : 'solid'),
     68            sprintf('--zb-item-gap: %s;', esc_attr($item_gap)),
     69            sprintf('--wp--style--block-gap: %s;', esc_attr($item_gap)),
     70            sprintf('gap: %s;', esc_attr($item_gap)),
     71            sprintf('--zb-header-padding-x: %dpx;', $header_padding_x),
     72            sprintf('--zb-header-padding-y: %dpx;', $header_padding_y),
     73            sprintf('--zb-content-padding-x: %dpx;', $content_padding_x),
     74            sprintf('--zb-content-padding-y: %dpx;', $content_padding_y),
     75            sprintf('--zb-content-gap: %dpx;', $content_gap),
     76            // Typography shared across all items.
     77            sprintf('--zb-title-size: %s;', esc_attr($header_font_size)),
     78            sprintf('--zb-title-weight: %s;', esc_attr($header_font_weight)),
     79            sprintf('--zb-icon-size: %dpx;', $icon_size),
    2380        );
    2481
     82        // Shared header colors – set on group wrapper so CSS cascade delivers them
     83        // to every item even if block-context propagation is unavailable.
     84        if (!empty($header_text_color)) {
     85            $group_styles[] = sprintf('--zb-header-text: %s;', esc_attr($header_text_color));
     86        }
     87        if (!empty($header_hover_text)) {
     88            $group_styles[] = sprintf('--zb-header-hover-text: %s;', esc_attr($header_hover_text));
     89        }
     90        if (!empty($header_bg_color)) {
     91            $group_styles[] = sprintf('--zb-header-bg: %s;', esc_attr($header_bg_color));
     92        }
     93        if (!empty($header_hover_bg)) {
     94            $group_styles[] = sprintf('--zb-header-hover-bg: %s;', esc_attr($header_hover_bg));
     95        }
     96        if (!empty($icon_color)) {
     97            $group_styles[] = sprintf('--zb-icon-color: %s;', esc_attr($icon_color));
     98        }
     99        if (!empty($icon_hover_color)) {
     100            $group_styles[] = sprintf('--zb-icon-hover-color: %s;', esc_attr($icon_hover_color));
     101        }
     102
     103        if (!empty($attributes['groupBorderColor'])) {
     104            $group_border_color = $format_color($attributes['groupBorderColor']);
     105            if ($group_border_color) {
     106                $group_styles[] = sprintf('--zb-group-border-color: %s;', esc_attr($group_border_color));
     107            }
     108        }
     109
    25110        $wrapper_attributes = get_block_wrapper_attributes(
    26             [
     111            array(
    27112                'class' => 'zenithium-blocks-accordion-group',
    28113                'data-auto-close' => $auto_close ? 'true' : 'false',
    29                 'style' => $inline_styles,
    30             ]
     114                'style' => implode(' ', $group_styles),
     115            )
    31116        );
    32117
    33         // Generate FAQPage JSON-LD Schema safely without triggering render_block().
    34118        if ($enable_schema && !empty($block->parsed_block['innerBlocks'])) {
    35             $faq_schema = [
     119            $faq_schema = array(
    36120                '@context' => 'https://schema.org',
    37121                '@type' => 'FAQPage',
    38                 'mainEntity' => [],
    39             ];
     122                'mainEntity' => array(),
     123            );
    40124
    41125            foreach ($block->parsed_block['innerBlocks'] as $inner_block) {
    42                 if ('zenithium-blocks/accordion' === $inner_block['blockName'] || 'zenithium-blocks/accordion-item' === $inner_block['blockName']) {
    43                     $title = $inner_block['attrs']['title'] ?? '';
     126                if ('zenithium-blocks/accordion-item' === ($inner_block['blockName'] ?? '')) {
     127                    $item_title = $inner_block['attrs']['title'] ?? '';
    44128
    45                     $content_text = '';
     129                    $item_content = '';
    46130                    if (!empty($inner_block['innerBlocks'])) {
    47131                        foreach ($inner_block['innerBlocks'] as $child) {
    48                             if (isset($child['innerHTML'])) {
    49                                 $content_text .= wp_strip_all_tags($child['innerHTML']) . ' ';
    50                             }
     132                            $item_content .= render_block($child);
    51133                        }
    52134                    }
    53135
    54                     if (!empty($title)) {
    55                         $faq_schema['mainEntity'][] = [
     136                    if (!empty($item_title)) {
     137                        $faq_schema['mainEntity'][] = array(
    56138                            '@type' => 'Question',
    57                             'name' => $title,
    58                             'acceptedAnswer' => [
     139                            'name' => wp_strip_all_tags($item_title),
     140                            'acceptedAnswer' => array(
    59141                                '@type' => 'Answer',
    60                                 'text' => trim($content_text),
    61                             ],
    62                         ];
     142                                'text' => wp_strip_all_tags($item_content),
     143                            ),
     144                        );
    63145                    }
    64146                }
    … …  
    66148
    67149            if (!empty($faq_schema['mainEntity'])) {
    68                 echo '<script type="application/ld+json">' . wp_json_encode($faq_schema) . '</script>' . "\n";
     150                add_action(
     151                    'wp_footer',
     152                    function () use ($faq_schema) {
     153                        echo '<script type="application/ld+json">' . wp_json_encode($faq_schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '</script>' . "\n";
     154                    }
     155                );
    69156            }
    70157        }
    71158        ?>
    72159
    73     <div <?php echo $wrapper_attributes; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
    74         <?php echo $content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
    75     </div>
     160        <div <?php echo $wrapper_attributes; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
     161            <?php echo $content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
     162        </div>
    76163    <?php
    77164    },
    78165    $attributes,
    79     $content ?? '',
    80     $block ?? null
     166    $content ?? ''
    81167);
  • zenithium-blocks/trunk/build/blocks/accordion-group/style-index-rtl.css

    r3640847 r3769770  
    1 .wp-block-zenithium-blocks-accordion-group,.zenithium-blocks-accordion-group{--zb-accent-color:#2563eb;--zb-header-bg:#f8fafc;display:flex;flex-direction:column;gap:12px;margin-bottom:1rem;margin-top:1rem;width:100%}
     1.wp-block-zenithium-blocks-accordion-group,.zenithium-blocks-accordion-group{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--zb-item-gap,var(--wp--style--block-gap,12px));width:auto}.wp-block-zenithium-blocks-accordion-group>.wp-block,.wp-block-zenithium-blocks-accordion-group>.zenithium-blocks-accordion-item,.zenithium-blocks-accordion-group>.wp-block,.zenithium-blocks-accordion-group>.zenithium-blocks-accordion-item{margin-block-end:0;margin-block-start:0}.wp-block-zenithium-blocks-accordion-group,.zenithium-blocks-accordion-group{border-color:var(--zb-group-border-color,var(--wp--style--border-color,transparent));border-radius:var(--zb-group-border-radius,var(--wp--style--border-radius,0));border-style:var(--zb-group-border-style,solid);border-width:var(--zb-group-border-width,var(--wp--style--border-width,0))}
  • zenithium-blocks/trunk/build/blocks/accordion-group/style-index.css

    r3640847 r3769770  
    1 .wp-block-zenithium-blocks-accordion-group,.zenithium-blocks-accordion-group{--zb-accent-color:#2563eb;--zb-header-bg:#f8fafc;display:flex;flex-direction:column;gap:12px;margin-bottom:1rem;margin-top:1rem;width:100%}
     1.wp-block-zenithium-blocks-accordion-group,.zenithium-blocks-accordion-group{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--zb-item-gap,var(--wp--style--block-gap,12px));width:auto}.wp-block-zenithium-blocks-accordion-group>.wp-block,.wp-block-zenithium-blocks-accordion-group>.zenithium-blocks-accordion-item,.zenithium-blocks-accordion-group>.wp-block,.zenithium-blocks-accordion-group>.zenithium-blocks-accordion-item{margin-block-end:0;margin-block-start:0}.wp-block-zenithium-blocks-accordion-group,.zenithium-blocks-accordion-group{border-color:var(--zb-group-border-color,var(--wp--style--border-color,transparent));border-radius:var(--zb-group-border-radius,var(--wp--style--border-radius,0));border-style:var(--zb-group-border-style,solid);border-width:var(--zb-group-border-width,var(--wp--style--border-width,0))}
  • zenithium-blocks/trunk/build/blocks/accordion-group/view.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array(), 'version' => 'c7137caa858a8126bf4e');
     1<?php return array('dependencies' => array(), 'version' => '4361604eeb91bb0976c8');
  • zenithium-blocks/trunk/build/blocks/accordion-group/view.js

    r3640847 r3769770  
    1 document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".zenithium-blocks-accordion-group").forEach(e=>{const t="true"===e.dataset.autoClose;e.addEventListener("click",o=>{const c=o.target.closest(".zenithium-blocks-accordion-toggle");if(!c)return;o.preventDefault();const n=c.closest(".zenithium-blocks-accordion-wrapper");if(!n)return;const i=n.classList.contains("is-open"),r=e.querySelectorAll(".zenithium-blocks-accordion-wrapper"),s=e=>{e.classList.remove("is-open");const t=e.querySelector(".zenithium-blocks-accordion-toggle"),o=e.querySelector(".zenithium-blocks-accordion-content");t&&t.setAttribute("aria-expanded","false"),o&&(o.style.display="")};t&&!i&&r.forEach(e=>s(e)),i?s(n):(e=>{e.classList.add("is-open");const t=e.querySelector(".zenithium-blocks-accordion-toggle"),o=e.querySelector(".zenithium-blocks-accordion-content");t&&t.setAttribute("aria-expanded","true"),o&&(o.style.display="")})(n)})})});
     1(()=>{const t=()=>{document.querySelectorAll('.zenithium-blocks-accordion-group:not([data-accordion-init="true"])').forEach(t=>{t.setAttribute("data-accordion-init","true");const e="true"===t.dataset.autoClose,o=(t,e)=>{const o=t.querySelector(".zenithium-blocks-accordion-toggle"),i=t.querySelector(".zenithium-blocks-accordion-content");e?(t.classList.add("is-open"),o&&o.setAttribute("aria-expanded","true"),i&&(i.style.gridTemplateRows="1fr")):(t.classList.remove("is-open"),o&&o.setAttribute("aria-expanded","false"),i&&(i.style.gridTemplateRows="0fr"))},i=Array.from(t.children).filter(t=>t.classList.contains("zenithium-blocks-accordion-item"));t.addEventListener("click",n=>{const c=n.target.closest(".zenithium-blocks-accordion-toggle");if(!c)return;const r=c.closest(".zenithium-blocks-accordion-item");if(!r||r.parentElement!==t)return;const s=r.classList.contains("is-open");e&&!s&&i.forEach(t=>o(t,!1)),o(r,!s)})})};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",t,{once:!0}):t()})();
  • zenithium-blocks/trunk/build/blocks/accordion/block.json

    r3640847 r3769770  
    22  "$schema": "https://schemas.wp.org/trunk/block.json",
    33  "apiVersion": 3,
    4   "name": "zenithium-blocks/accordion",
    5   "version": "1.0.0",
    6   "title": "Accordion Item",
    7   "category": "widgets",
     4  "name": "zenithium-blocks/accordion-item",
     5  "version": "1.1.1",
     6  "title": "Zenithium Accordion Item",
     7  "category": "zenithium-blocks",
    88  "icon": "minus",
    99  "description": "An individual accordion item inside an Accordion Group.",
    … …  
    1717    "expand"
    1818  ],
     19  "usesContext": [
     20    "zenithium-blocks/autoClose",
     21    "zenithium-blocks/headerFontSize",
     22    "zenithium-blocks/headerFontWeight",
     23    "zenithium-blocks/headerTextColor",
     24    "zenithium-blocks/headerHoverTextColor",
     25    "zenithium-blocks/headerBgColor",
     26    "zenithium-blocks/headerHoverBgColor",
     27    "zenithium-blocks/iconColor",
     28    "zenithium-blocks/iconHoverColor",
     29    "zenithium-blocks/iconSize",
     30    "zenithium-blocks/itemGap",
     31    "zenithium-blocks/headerPaddingX",
     32    "zenithium-blocks/headerPaddingY",
     33    "zenithium-blocks/contentPaddingX",
     34    "zenithium-blocks/contentPaddingY",
     35    "zenithium-blocks/contentGap"
     36  ],
    1937  "textdomain": "zenithium-blocks",
    2038  "supports": {
    2139    "html": false,
    22     "align": [
    23       "wide",
    24       "full"
    25     ],
     40    "layout": true,
    2641    "spacing": {
    2742      "margin": true,
    28       "padding": true
     43      "padding": true,
     44      "blockGap": true,
     45      "units": [
     46        "px",
     47        "em",
     48        "rem",
     49        "%"
     50      ],
     51      "__experimentalDefaultControls": {
     52        "margin": true,
     53        "padding": true,
     54        "blockGap": true
     55      }
    2956    },
    3057    "color": {
    3158      "text": true,
    32       "background": true
     59      "background": true,
     60      "gradients": true
     61    },
     62    "border": {
     63      "color": true,
     64      "radius": true,
     65      "style": true,
     66      "width": true,
     67      "__experimentalDefaultControls": {
     68        "color": true,
     69        "radius": true,
     70        "width": true
     71      }
     72    },
     73    "typography": {
     74      "fontSize": true,
     75      "lineHeight": true,
     76      "fontFamily": true,
     77      "fontWeight": true,
     78      "fontStyle": true,
     79      "letterSpacing": true,
     80      "textTransform": true,
     81      "textDecoration": true,
     82      "__experimentalDefaultControls": {
     83        "fontSize": true,
     84        "fontWeight": true
     85      }
    3386    }
    3487  },
    … …  
    3689    "title": {
    3790      "type": "string",
    38       "default": "Frequently Asked Question Title"
     91      "default": "Accordion Item Title"
    3992    },
    4093    "isOpen": {
    … …  
    4598      "type": "string",
    4699      "default": "plus"
     100    },
     101    "titleFontSize": {
     102      "type": "string",
     103      "default": ""
     104    },
     105    "titleFontWeight": {
     106      "type": "string",
     107      "default": ""
     108    },
     109    "headerTextColor": {
     110      "type": "string",
     111      "default": ""
     112    },
     113    "headerHoverTextColor": {
     114      "type": "string",
     115      "default": ""
     116    },
     117    "headerBgColor": {
     118      "type": "string",
     119      "default": ""
     120    },
     121    "headerHoverBgColor": {
     122      "type": "string",
     123      "default": ""
     124    },
     125    "iconColor": {
     126      "type": "string",
     127      "default": ""
     128    },
     129    "iconHoverColor": {
     130      "type": "string",
     131      "default": ""
     132    },
     133    "iconSize": {
     134      "type": "number",
     135      "default": 0
     136    },
     137    "itemBorderColor": {
     138      "type": "string",
     139      "default": ""
     140    },
     141    "itemBorderWidth": {
     142      "type": "number",
     143      "default": 1
     144    },
     145    "itemBorderRadius": {
     146      "type": "number",
     147      "default": 6
     148    },
     149    "itemBorderStyle": {
     150      "type": "string",
     151      "default": "solid"
     152    },
     153    "headerPaddingX": {
     154      "type": "number",
     155      "default": 0
     156    },
     157    "headerPaddingY": {
     158      "type": "number",
     159      "default": 0
     160    },
     161    "contentPaddingX": {
     162      "type": "number",
     163      "default": 0
     164    },
     165    "contentPaddingY": {
     166      "type": "number",
     167      "default": 0
     168    },
     169    "contentGap": {
     170      "type": "number",
     171      "default": 0
    47172    }
    48173  },
  • zenithium-blocks/trunk/build/blocks/accordion/index-rtl.css

    r3640847 r3769770  
    1 .zenithium-blocks-accordion-edit{background:#fff;border:1px dashed #cbd5e1;border-radius:8px;margin-bottom:12px;padding:12px}.zenithium-blocks-accordion-edit .zenithium-blocks-accordion-header{align-items:center;border-bottom:1px solid #f1f5f9;cursor:pointer;display:flex;justify-content:space-between;padding-bottom:8px}.zenithium-blocks-accordion-edit .zenithium-blocks-accordion-header .zenithium-blocks-accordion-title{flex-grow:1;font-size:1.1rem;font-weight:600;margin:0;outline:none}.zenithium-blocks-accordion-edit .zenithium-blocks-accordion-header .zenithium-blocks-accordion-icon{align-items:center;color:#64748b;display:flex;font-size:1.2rem;font-weight:700;justify-content:center;padding-right:12px}.zenithium-blocks-accordion-edit .zenithium-blocks-accordion-body{padding-top:12px;transition:all .2s ease-in-out}.zenithium-blocks-accordion-edit .zenithium-blocks-accordion-body.is-hidden{height:0;margin:0;opacity:0;overflow:hidden;padding-top:0;pointer-events:none;visibility:hidden}.zenithium-blocks-accordion-edit .zenithium-blocks-accordion-body.is-visible{height:auto;opacity:1;pointer-events:auto;visibility:visible}
     1.wp-block-zenithium-blocks-accordion-item{border-color:var(--zb-item-border-color,#e2e8f0);border-radius:var(--zb-item-border-radius,6px);border-style:var(--zb-item-border-style,solid);border-width:var(--zb-item-border-width,1px);box-sizing:border-box;overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header{align-items:center;background-color:var(--zb-header-bg,transparent);color:var(--zb-header-text,inherit);cursor:pointer;display:flex;justify-content:space-between;padding:var(--zb-header-padding-y,16px) var(--zb-header-padding-x,20px);transition:background-color .2s ease,color .2s ease}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header .zenithium-blocks-accordion-icon{align-items:center;color:var(--zb-icon-color,currentColor);display:inline-flex;font-size:var(--zb-icon-size,20px);height:var(--zb-icon-size,20px);justify-content:center;line-height:1;transition:color .2s ease;width:var(--zb-icon-size,20px)}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header:hover{background-color:var(--zb-header-hover-bg,var(--zb-header-bg,transparent));color:var(--zb-header-hover-text,var(--zb-header-text,inherit))}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header:hover .zenithium-blocks-accordion-icon{color:var(--zb-icon-hover-color,var(--zb-icon-color,currentColor))}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header .zenithium-blocks-accordion-title{color:inherit;flex-grow:1;font-size:var(--zb-title-size,1.05rem);font-weight:var(--zb-title-weight,600);margin:0;outline:none}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header .zenithium-blocks-accordion-toggle-preview{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;padding:0 12px 0 0}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body{box-sizing:border-box;gap:var(--zb-content-gap,var(--wp--style--block-gap,16px));padding:0 var(--zb-content-padding-x,20px) var(--zb-content-padding-y,20px)}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body.is-hidden{display:none}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body.is-visible{display:flex;flex-direction:column}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body .block-editor-block-list__layout,.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body.block-editor-block-list__layout{display:flex;flex-direction:column;gap:var(--zb-content-gap,var(--wp--style--block-gap,16px))}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body>.block-editor-inner-blocks{width:100%}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body>.block-editor-inner-blocks>.block-editor-block-list__layout{display:flex;flex-direction:column;gap:var(--zb-content-gap,var(--wp--style--block-gap,16px))}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body>.wp-block{margin-block-end:0;margin-block-start:0}
  • zenithium-blocks/trunk/build/blocks/accordion/index.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => 'f91a2e86025081cad749');
     1<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '6e0b9a2edc7874a5776a');
  • zenithium-blocks/trunk/build/blocks/accordion/index.css

    r3640847 r3769770  
    1 .zenithium-blocks-accordion-edit{background:#fff;border:1px dashed #cbd5e1;border-radius:8px;margin-bottom:12px;padding:12px}.zenithium-blocks-accordion-edit .zenithium-blocks-accordion-header{align-items:center;border-bottom:1px solid #f1f5f9;cursor:pointer;display:flex;justify-content:space-between;padding-bottom:8px}.zenithium-blocks-accordion-edit .zenithium-blocks-accordion-header .zenithium-blocks-accordion-title{flex-grow:1;font-size:1.1rem;font-weight:600;margin:0;outline:none}.zenithium-blocks-accordion-edit .zenithium-blocks-accordion-header .zenithium-blocks-accordion-icon{align-items:center;color:#64748b;display:flex;font-size:1.2rem;font-weight:700;justify-content:center;padding-left:12px}.zenithium-blocks-accordion-edit .zenithium-blocks-accordion-body{padding-top:12px;transition:all .2s ease-in-out}.zenithium-blocks-accordion-edit .zenithium-blocks-accordion-body.is-hidden{height:0;margin:0;opacity:0;overflow:hidden;padding-top:0;pointer-events:none;visibility:hidden}.zenithium-blocks-accordion-edit .zenithium-blocks-accordion-body.is-visible{height:auto;opacity:1;pointer-events:auto;visibility:visible}
     1.wp-block-zenithium-blocks-accordion-item{border-color:var(--zb-item-border-color,#e2e8f0);border-radius:var(--zb-item-border-radius,6px);border-style:var(--zb-item-border-style,solid);border-width:var(--zb-item-border-width,1px);box-sizing:border-box;overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header{align-items:center;background-color:var(--zb-header-bg,transparent);color:var(--zb-header-text,inherit);cursor:pointer;display:flex;justify-content:space-between;padding:var(--zb-header-padding-y,16px) var(--zb-header-padding-x,20px);transition:background-color .2s ease,color .2s ease}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header .zenithium-blocks-accordion-icon{align-items:center;color:var(--zb-icon-color,currentColor);display:inline-flex;font-size:var(--zb-icon-size,20px);height:var(--zb-icon-size,20px);justify-content:center;line-height:1;transition:color .2s ease;width:var(--zb-icon-size,20px)}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header:hover{background-color:var(--zb-header-hover-bg,var(--zb-header-bg,transparent));color:var(--zb-header-hover-text,var(--zb-header-text,inherit))}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header:hover .zenithium-blocks-accordion-icon{color:var(--zb-icon-hover-color,var(--zb-icon-color,currentColor))}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header .zenithium-blocks-accordion-title{color:inherit;flex-grow:1;font-size:var(--zb-title-size,1.05rem);font-weight:var(--zb-title-weight,600);margin:0;outline:none}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header .zenithium-blocks-accordion-toggle-preview{align-items:center;background:none;border:none;color:inherit;cursor:pointer;display:inline-flex;padding:0 0 0 12px}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body{box-sizing:border-box;gap:var(--zb-content-gap,var(--wp--style--block-gap,16px));padding:0 var(--zb-content-padding-x,20px) var(--zb-content-padding-y,20px)}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body.is-hidden{display:none}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body.is-visible{display:flex;flex-direction:column}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body .block-editor-block-list__layout,.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body.block-editor-block-list__layout{display:flex;flex-direction:column;gap:var(--zb-content-gap,var(--wp--style--block-gap,16px))}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body>.block-editor-inner-blocks{width:100%}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body>.block-editor-inner-blocks>.block-editor-block-list__layout{display:flex;flex-direction:column;gap:var(--zb-content-gap,var(--wp--style--block-gap,16px))}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body>.wp-block{margin-block-end:0;margin-block-start:0}
  • zenithium-blocks/trunk/build/blocks/accordion/index.js

    r3640847 r3769770  
    1 (()=>{"use strict";var e={384(){const e=window.wp.blocks,n=window.wp.blockEditor,o=window.wp.components,i=window.wp.i18n,s=window.ReactJSXRuntime,t=JSON.parse('{"UU":"zenithium-blocks/accordion"}');(0,e.registerBlockType)(t.UU,{edit:function({attributes:e,setAttributes:t}){const{title:l,isOpen:c,iconType:r="plus"}=e,a=(0,n.useBlockProps)({className:"zenithium-blocks-accordion-edit "+(c?"is-open":"")}),h=[["core/paragraph",{placeholder:(0,i.__)("Add accordion content here...","zenithium-blocks")}]];return(0,s.jsxs)("div",{...a,children:[(0,s.jsx)(n.InspectorControls,{children:(0,s.jsxs)(o.PanelBody,{title:(0,i.__)("Accordion Settings","zenithium-blocks"),children:[(0,s.jsx)(o.ToggleControl,{label:(0,i.__)("Open by Default","zenithium-blocks"),checked:c,onChange:e=>t({isOpen:e})}),(0,s.jsx)(o.SelectControl,{label:(0,i.__)("Toggle Icon","zenithium-blocks"),value:r,options:[{label:(0,i.__)("Plus / Minus (+/-)","zenithium-blocks"),value:"plus"},{label:(0,i.__)("Chevron Arrow (▼/▲)","zenithium-blocks"),value:"chevron"}],onChange:e=>t({iconType:e})})]})}),(0,s.jsxs)("div",{className:"zenithium-blocks-accordion-header",onClick:()=>t({isOpen:!c}),role:"button",tabIndex:0,onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||t({isOpen:!c})},children:[(0,s.jsx)(n.RichText,{tagName:"h4",className:"zenithium-blocks-accordion-title",value:l,onChange:e=>t({title:e}),placeholder:(0,i.__)("Enter question or title","zenithium-blocks"),onClick:e=>e.stopPropagation()}),(0,s.jsx)("span",{className:`zenithium-blocks-accordion-icon icon-${r}`,"aria-hidden":"true",children:"plus"===r?(0,s.jsxs)("svg",{className:"icon-plus",viewBox:"0 0 24 24",width:"20",height:"20",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,s.jsx)("line",{className:"line-v",x1:"12",y1:"5",x2:"12",y2:"19"}),(0,s.jsx)("line",{className:"line-h",x1:"5",y1:"12",x2:"19",y2:"12"})]}):(0,s.jsx)("svg",{className:"icon-chevron",viewBox:"0 0 24 24",width:"20",height:"20",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,s.jsx)("polyline",{points:"6 9 12 15 18 9"})})})]}),(0,s.jsx)("div",{className:"zenithium-blocks-accordion-body "+(c?"is-visible":"is-hidden"),children:(0,s.jsx)(n.InnerBlocks,{template:h})})]})},save:function(){return(0,s.jsx)(n.InnerBlocks.Content,{})}})}};const n={};function o(i){const s=n[i];if(void 0!==s)return s.exports;const t=n[i]={exports:{}};return e[i](t,t.exports,o),t.exports}o.m=e,(()=>{const e=[];o.O=(n,i,s,t)=>{if(i){t=t||0;for(var l=e.length;l>0&&e[l-1][2]>t;l--)e[l]=e[l-1];return void(e[l]=[i,s,t])}let c=1/0;for(l=0;l<e.length;l++){let[i,s,t]=e[l],a=!0;for(var r=0;r<i.length;r++)(!1&t||c>=t)&&Object.keys(o.O).every(e=>o.O[e](i[r]))?i.splice(r--,1):(a=!1,t<c&&(c=t));if(a){e.splice(l--,1);const o=s();void 0!==o&&(n=o)}}return n}})(),o.o=(e,n)=>Object.hasOwn(e,n),(()=>{const e={235:0,443:0};o.O.j=n=>0===e[n];const n=(n,i)=>{let[s,t,l]=i;var c,r,a=0;if(s.some(n=>0!==e[n])){for(c in t)o.o(t,c)&&(o.m[c]=t[c]);if(l)var h=l(o)}for(n&&n(i);a<s.length;a++)r=s[a],o.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return o.O(h)},i=globalThis.webpackChunkzenithium_blocks||=[];i.forEach(n.bind(null,0)),i.push=n.bind(null,i.push.bind(i))})();let i=o.O(void 0,[443],()=>o(384));i=o.O(i)})();
     1(()=>{"use strict";var e={384(){const e=window.wp.blocks,o=window.wp.i18n,i=window.wp.blockEditor,n=window.wp.components,l=window.ReactJSXRuntime,t=[["core/paragraph",{placeholder:(0,o.__)("Add accordion content here…","zenithium-blocks")}]],r=(e,o="")=>e?"string"==typeof e&&e.startsWith("var:preset|color|")?`var(--wp--preset--color--${e.replace("var:preset|color|","")})`:e:o,a=JSON.parse('{"UU":"zenithium-blocks/accordion-item"}');(0,e.registerBlockType)(a.UU,{edit:function({attributes:e,setAttributes:a,context:c={}}){const{title:s,isOpen:h,iconType:d="plus",titleFontSize:u,titleFontWeight:b,headerTextColor:m,headerHoverTextColor:p,headerBgColor:z,headerHoverBgColor:g,iconColor:k,iconHoverColor:_,iconSize:C,itemBorderColor:x,itemBorderWidth:v=1,itemBorderRadius:B=6,itemBorderStyle:S="solid",headerPaddingX:j=0,headerPaddingY:y=0,contentPaddingX:P=0,contentPaddingY:f=0,contentGap:H=0}=e,w=r(k||c["zenithium-blocks/iconColor"],"currentColor"),T=r(_||c["zenithium-blocks/iconHoverColor"]||k||c["zenithium-blocks/iconColor"],w),O=C&&C>0?C:c["zenithium-blocks/iconSize"]||20,$=u||c["zenithium-blocks/headerFontSize"]||"1.05rem",R=b||c["zenithium-blocks/headerFontWeight"]||"600",F=r(m||c["zenithium-blocks/headerTextColor"],"inherit"),I=r(p||c["zenithium-blocks/headerHoverTextColor"]||m||c["zenithium-blocks/headerTextColor"],F),G=r(z||c["zenithium-blocks/headerBgColor"],"transparent"),W=r(g||c["zenithium-blocks/headerHoverBgColor"]||z||c["zenithium-blocks/headerBgColor"],G),A=j>0?j:c["zenithium-blocks/headerPaddingX"]??20,N=y>0?y:c["zenithium-blocks/headerPaddingY"]??16,X=P>0?P:c["zenithium-blocks/contentPaddingX"]??20,Y=f>0?f:c["zenithium-blocks/contentPaddingY"]??20,D=((e,o="")=>e?"string"==typeof e&&e.startsWith("var:preset|spacing|")?`var(--wp--preset--spacing--${e.replace("var:preset|spacing|","")})`:e:o)(e.style?.spacing?.blockGap,"")||(H>0?`${H}px`:`${c["zenithium-blocks/contentGap"]??16}px`),U=(0,i.useBlockProps)({className:"zenithium-blocks-accordion-item "+(h?"is-open":""),style:{"--zb-title-size":$,"--zb-title-weight":R,"--zb-header-text":F,"--zb-header-hover-text":I,"--zb-header-bg":G,"--zb-header-hover-bg":W,"--zb-icon-color":w,"--zb-icon-hover-color":T,"--zb-icon-size":`${O}px`,"--zb-item-border-color":r(x,"#e2e8f0"),"--zb-item-border-width":`${v??1}px`,"--zb-item-border-radius":`${B??6}px`,"--zb-item-border-style":S||"solid","--zb-header-padding-x":`${A}px`,"--zb-header-padding-y":`${N}px`,"--zb-content-padding-x":`${X}px`,"--zb-content-padding-y":`${Y}px`,"--zb-content-gap":D,"--wp--style--block-gap":D}}),E=(0,i.useInnerBlocksProps)({className:"zenithium-blocks-accordion-body "+(h?"is-visible":"is-hidden"),style:{padding:`0 ${X}px ${Y}px`,display:h?"flex":"none",flexDirection:"column",gap:D}},{template:t});return(0,l.jsxs)("div",{...U,children:[(0,l.jsxs)(i.InspectorControls,{children:[(0,l.jsxs)(n.PanelBody,{title:(0,o.__)("Item Settings","zenithium-blocks"),children:[(0,l.jsx)(n.ToggleControl,{label:(0,o.__)("Open by Default","zenithium-blocks"),checked:h,onChange:e=>a({isOpen:e})}),(0,l.jsx)(n.SelectControl,{label:(0,o.__)("Toggle Icon","zenithium-blocks"),value:d,options:[{label:(0,o.__)("Plus / Minus (+/-)","zenithium-blocks"),value:"plus"},{label:(0,o.__)("Chevron Arrow (▼/▲)","zenithium-blocks"),value:"chevron"}],onChange:e=>a({iconType:e})}),(0,l.jsx)(n.RangeControl,{label:(0,o.__)("Icon Size (px)","zenithium-blocks"),value:C||c["zenithium-blocks/iconSize"]||20,onChange:e=>a({iconSize:e||0}),min:12,max:48})]}),(0,l.jsxs)(n.PanelBody,{title:(0,o.__)("Item Spacing & Padding","zenithium-blocks"),initialOpen:!1,children:[(0,l.jsx)(n.RangeControl,{label:(0,o.__)("Header Horizontal Padding (px)","zenithium-blocks"),help:(0,o.__)("Set 0 to inherit from Accordion Group.","zenithium-blocks"),value:j,onChange:e=>a({headerPaddingX:e||0}),min:0,max:60}),(0,l.jsx)(n.RangeControl,{label:(0,o.__)("Header Vertical Padding (px)","zenithium-blocks"),help:(0,o.__)("Set 0 to inherit from Accordion Group.","zenithium-blocks"),value:y,onChange:e=>a({headerPaddingY:e||0}),min:0,max:40}),(0,l.jsx)(n.RangeControl,{label:(0,o.__)("Content Horizontal Padding (px)","zenithium-blocks"),help:(0,o.__)("Set 0 to inherit from Accordion Group.","zenithium-blocks"),value:P,onChange:e=>a({contentPaddingX:e||0}),min:0,max:60}),(0,l.jsx)(n.RangeControl,{label:(0,o.__)("Content Vertical Padding (px)","zenithium-blocks"),help:(0,o.__)("Set 0 to inherit from Accordion Group.","zenithium-blocks"),value:f,onChange:e=>a({contentPaddingY:e||0}),min:0,max:60}),(0,l.jsx)(n.RangeControl,{label:(0,o.__)("Content Blocks Gap (px)","zenithium-blocks"),help:(0,o.__)("Set 0 to inherit from Accordion Group.","zenithium-blocks"),value:H,onChange:e=>a({contentGap:e||0}),min:0,max:40})]}),(0,l.jsxs)(n.PanelBody,{title:(0,o.__)("Header Typography","zenithium-blocks"),initialOpen:!1,children:[(0,l.jsx)(n.FontSizePicker,{value:u||c["zenithium-blocks/headerFontSize"]||"1.05rem",onChange:e=>a({titleFontSize:e||""}),fallbackFontSize:16}),(0,l.jsx)(n.SelectControl,{label:(0,o.__)("Font Weight","zenithium-blocks"),value:b||c["zenithium-blocks/headerFontWeight"]||"600",options:[{label:(0,o.__)("Normal (400)","zenithium-blocks"),value:"400"},{label:(0,o.__)("Medium (500)","zenithium-blocks"),value:"500"},{label:(0,o.__)("Semi-Bold (600)","zenithium-blocks"),value:"600"},{label:(0,o.__)("Bold (700)","zenithium-blocks"),value:"700"}],onChange:e=>a({titleFontWeight:e})})]}),(0,l.jsx)(i.PanelColorSettings,{title:(0,o.__)("Header & Icon Custom Colors","zenithium-blocks"),initialOpen:!1,colorSettings:[{value:m||c["zenithium-blocks/headerTextColor"],onChange:e=>a({headerTextColor:e}),label:(0,o.__)("Header Text Color","zenithium-blocks")},{value:p||c["zenithium-blocks/headerHoverTextColor"],onChange:e=>a({headerHoverTextColor:e}),label:(0,o.__)("Header Text Hover Color","zenithium-blocks")},{value:z||c["zenithium-blocks/headerBgColor"],onChange:e=>a({headerBgColor:e}),label:(0,o.__)("Header Background Color","zenithium-blocks")},{value:g||c["zenithium-blocks/headerHoverBgColor"],onChange:e=>a({headerHoverBgColor:e}),label:(0,o.__)("Header Background Hover Color","zenithium-blocks")},{value:k||c["zenithium-blocks/iconColor"],onChange:e=>a({iconColor:e}),label:(0,o.__)("Icon Color","zenithium-blocks")},{value:_||c["zenithium-blocks/iconHoverColor"],onChange:e=>a({iconHoverColor:e}),label:(0,o.__)("Icon Hover Color","zenithium-blocks")}]}),(0,l.jsxs)(n.PanelBody,{title:(0,o.__)("Item Border","zenithium-blocks"),initialOpen:!1,children:[(0,l.jsx)(n.RangeControl,{label:(0,o.__)("Border Width (px)","zenithium-blocks"),value:v,onChange:e=>a({itemBorderWidth:e}),min:0,max:12}),(0,l.jsx)(n.RangeControl,{label:(0,o.__)("Border Radius (px)","zenithium-blocks"),value:B,onChange:e=>a({itemBorderRadius:e}),min:0,max:48}),(0,l.jsx)(n.SelectControl,{label:(0,o.__)("Border Style","zenithium-blocks"),value:S,options:[{label:(0,o.__)("Solid","zenithium-blocks"),value:"solid"},{label:(0,o.__)("Dashed","zenithium-blocks"),value:"dashed"},{label:(0,o.__)("Dotted","zenithium-blocks"),value:"dotted"},{label:(0,o.__)("Double","zenithium-blocks"),value:"double"}],onChange:e=>a({itemBorderStyle:e})}),(0,l.jsx)(i.PanelColorSettings,{title:(0,o.__)("Border Color","zenithium-blocks"),colorSettings:[{value:x,onChange:e=>a({itemBorderColor:e}),label:(0,o.__)("Border Color","zenithium-blocks")}]})]})]}),(0,l.jsxs)("div",{className:"zenithium-blocks-accordion-header",style:{padding:`${N}px ${A}px`},children:[(0,l.jsx)(i.RichText,{tagName:"h4",className:"zenithium-blocks-accordion-title",value:s,onChange:e=>a({title:e}),placeholder:(0,o.__)("Enter item title…","zenithium-blocks")}),(0,l.jsx)("button",{type:"button",className:"zenithium-blocks-accordion-toggle-preview",onClick:()=>a({isOpen:!h}),"aria-label":(0,o.__)("Toggle Accordion Preview","zenithium-blocks"),children:(0,l.jsx)("span",{className:`zenithium-blocks-accordion-icon icon-${d}`,children:"plus"===d?"+":"▼"})})]}),(0,l.jsx)("div",{...E})]})},save:function(){return(0,l.jsx)(i.InnerBlocks.Content,{})}})}};const o={};function i(n){const l=o[n];if(void 0!==l)return l.exports;const t=o[n]={exports:{}};return e[n](t,t.exports,i),t.exports}i.m=e,(()=>{const e=[];i.O=(o,n,l,t)=>{if(n){t=t||0;for(var r=e.length;r>0&&e[r-1][2]>t;r--)e[r]=e[r-1];return void(e[r]=[n,l,t])}let a=1/0;for(r=0;r<e.length;r++){let[n,l,t]=e[r],s=!0;for(var c=0;c<n.length;c++)(!1&t||a>=t)&&Object.keys(i.O).every(e=>i.O[e](n[c]))?n.splice(c--,1):(s=!1,t<a&&(a=t));if(s){e.splice(r--,1);const i=l();void 0!==i&&(o=i)}}return o}})(),i.o=(e,o)=>Object.hasOwn(e,o),(()=>{const e={235:0,443:0};i.O.j=o=>0===e[o];const o=(o,n)=>{let[l,t,r]=n;var a,c,s=0;if(l.some(o=>0!==e[o])){for(a in t)i.o(t,a)&&(i.m[a]=t[a]);if(r)var h=r(i)}for(o&&o(n);s<l.length;s++)c=l[s],i.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return i.O(h)},n=globalThis.webpackChunkzenithium_blocks||=[];n.forEach(o.bind(null,0)),n.push=o.bind(null,n.push.bind(n))})();let n=i.O(void 0,[443],()=>i(384));n=i.O(n)})();
  • zenithium-blocks/trunk/build/blocks/accordion/render.php

    r3640847 r3769770  
    1111
    1212call_user_func(
    13     function ($attributes, $content = '') {
     13    function ($attributes, $content) {
     14        $format_color = function ($color, $default = '') {
     15            if (empty($color)) {
     16                return $default;
     17            }
     18            if (is_string($color) && str_starts_with($color, 'var:preset|color|')) {
     19                $slug = str_replace('var:preset|color|', '', $color);
     20                return "var(--wp--preset--color--{$slug})";
     21            }
     22            return $color;
     23        };
     24
     25        $format_spacing = function ($spacing, $default = '') {
     26            if (empty($spacing)) {
     27                return $default;
     28            }
     29            if (is_string($spacing) && str_starts_with($spacing, 'var:preset|spacing|')) {
     30                $slug = str_replace('var:preset|spacing|', '', $spacing);
     31                return "var(--wp--preset--spacing--{$slug})";
     32            }
     33            return $spacing;
     34        };
     35
    1436        $title = $attributes['title'] ?? 'Frequently Asked Question Title';
    1537        $is_open = !empty($attributes['isOpen']);
    1638        $icon_type = isset($attributes['iconType']) && 'plus' === $attributes['iconType'] ? 'plus' : 'chevron';
     39        $context = $block->context ?? [];
    1740
    18         $wrapper_classes = 'zenithium-blocks-accordion-wrapper' . ($is_open ? ' is-open' : '');
     41        $title_font_size = !empty($attributes['titleFontSize']) ? $attributes['titleFontSize'] : ($context['zenithium-blocks/headerFontSize'] ?? '1.05rem');
     42        $title_font_weight = !empty($attributes['titleFontWeight']) ? $attributes['titleFontWeight'] : ($context['zenithium-blocks/headerFontWeight'] ?? '600');
     43        $header_text_color = !empty($attributes['headerTextColor']) ? $attributes['headerTextColor'] : ($context['zenithium-blocks/headerTextColor'] ?? '');
     44        $header_hover_text = !empty($attributes['headerHoverTextColor']) ? $attributes['headerHoverTextColor'] : ($context['zenithium-blocks/headerHoverTextColor'] ?? '');
     45        $header_bg_color = !empty($attributes['headerBgColor']) ? $attributes['headerBgColor'] : ($context['zenithium-blocks/headerBgColor'] ?? '');
     46        $header_hover_bg = !empty($attributes['headerHoverBgColor']) ? $attributes['headerHoverBgColor'] : ($context['zenithium-blocks/headerHoverBgColor'] ?? '');
     47        $icon_color = !empty($attributes['iconColor']) ? $attributes['iconColor'] : ($context['zenithium-blocks/iconColor'] ?? '');
     48        $icon_hover_color = !empty($attributes['iconHoverColor']) ? $attributes['iconHoverColor'] : ($context['zenithium-blocks/iconHoverColor'] ?? '');
     49        $icon_size = !empty($attributes['iconSize']) ? (int) $attributes['iconSize'] : (int) ($context['zenithium-blocks/iconSize'] ?? 20);
     50
     51        $header_padding_x = !empty($attributes['headerPaddingX'])
     52            ? (int) $attributes['headerPaddingX']
     53            : (int) ($context['zenithium-blocks/headerPaddingX'] ?? 20);
     54        $header_padding_y = !empty($attributes['headerPaddingY'])
     55            ? (int) $attributes['headerPaddingY']
     56            : (int) ($context['zenithium-blocks/headerPaddingY'] ?? 16);
     57        $content_padding_x = !empty($attributes['contentPaddingX'])
     58            ? (int) $attributes['contentPaddingX']
     59            : (int) ($context['zenithium-blocks/contentPaddingX'] ?? 20);
     60        $content_padding_y = !empty($attributes['contentPaddingY'])
     61            ? (int) $attributes['contentPaddingY']
     62            : (int) ($context['zenithium-blocks/contentPaddingY'] ?? 20);
     63
     64        $raw_block_gap = $attributes['style']['spacing']['blockGap'] ?? '';
     65        $core_block_gap = $format_spacing($raw_block_gap);
     66
     67        if (!empty($core_block_gap)) {
     68            $content_gap = $core_block_gap;
     69        } elseif (!empty($attributes['contentGap'])) {
     70            $content_gap = sprintf('%dpx', (int) $attributes['contentGap']);
     71        } elseif (!empty($context['zenithium-blocks/contentGap'])) {
     72            $content_gap = sprintf('%dpx', (int) $context['zenithium-blocks/contentGap']);
     73        } else {
     74            $content_gap = '16px';
     75        }
     76
     77        $custom_styles = array(
     78            sprintf('--zb-title-size: %s;', esc_attr($title_font_size)),
     79            sprintf('--zb-title-weight: %s;', esc_attr($title_font_weight)),
     80            sprintf('--zb-icon-size: %dpx;', $icon_size),
     81            sprintf('--zb-header-padding-x: %dpx;', $header_padding_x),
     82            sprintf('--zb-header-padding-y: %dpx;', $header_padding_y),
     83            sprintf('--zb-content-padding-x: %dpx;', $content_padding_x),
     84            sprintf('--zb-content-padding-y: %dpx;', $content_padding_y),
     85            sprintf('--zb-content-gap: %s;', esc_attr($content_gap)),
     86            sprintf('--wp--style--block-gap: %s;', esc_attr($content_gap)),
     87        );
     88
     89        if (!empty($header_text_color)) {
     90            $custom_styles[] = sprintf('--zb-header-text: %s;', esc_attr($format_color($header_text_color)));
     91        }
     92        if (!empty($header_hover_text)) {
     93            $custom_styles[] = sprintf('--zb-header-hover-text: %s;', esc_attr($format_color($header_hover_text)));
     94        }
     95        if (!empty($header_bg_color)) {
     96            $custom_styles[] = sprintf('--zb-header-bg: %s;', esc_attr($format_color($header_bg_color)));
     97        }
     98        if (!empty($header_hover_bg)) {
     99            $custom_styles[] = sprintf('--zb-header-hover-bg: %s;', esc_attr($format_color($header_hover_bg)));
     100        }
     101        if (!empty($icon_color)) {
     102            $custom_styles[] = sprintf('--zb-icon-color: %s;', esc_attr($format_color($icon_color)));
     103        }
     104        if (!empty($icon_hover_color)) {
     105            $custom_styles[] = sprintf('--zb-icon-hover-color: %s;', esc_attr($format_color($icon_hover_color)));
     106        }
     107
     108        $custom_styles[] = sprintf('--zb-item-border-width: %dpx;', max(0, (int) ($attributes['itemBorderWidth'] ?? 1)));
     109        $custom_styles[] = sprintf('--zb-item-border-radius: %dpx;', max(0, (int) ($attributes['itemBorderRadius'] ?? 6)));
     110        $item_border_style = $attributes['itemBorderStyle'] ?? 'solid';
     111        $allowed_border_styles = array('solid', 'dashed', 'dotted', 'double');
     112        $custom_styles[] = sprintf('--zb-item-border-style: %s;', in_array($item_border_style, $allowed_border_styles, true) ? $item_border_style : 'solid');
     113
     114        if (!empty($attributes['itemBorderColor'])) {
     115            $item_border_color = $format_color($attributes['itemBorderColor']);
     116            if ($item_border_color) {
     117                $custom_styles[] = sprintf('--zb-item-border-color: %s;', esc_attr($item_border_color));
     118            }
     119        }
     120
     121        $inner_styles = sprintf(
     122            ' style="display: flex; flex-direction: column; gap: %s; padding: 0 %dpx %dpx;"',
     123            esc_attr($content_gap),
     124            $content_padding_x,
     125            $content_padding_y
     126        );
     127
    19128        $wrapper_attributes = get_block_wrapper_attributes(
    20129            array(
    21                 'class' => $wrapper_classes,
     130                'class' => 'zenithium-blocks-accordion-item' . ($is_open ? ' is-open' : ''),
     131                'style' => implode(' ', $custom_styles),
    22132            )
    23133        );
    24134        ?>
    25135
    26     <div <?php echo $wrapper_attributes; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
    27         <button type="button" class="zenithium-blocks-accordion-toggle"
    28             aria-expanded="<?php echo $is_open ? 'true' : 'false'; ?>">
    29             <span class="zenithium-blocks-accordion-title-text">
    30                 <?php echo wp_kses_post($title); ?>
    31             </span>
    32             <span class="zenithium-blocks-accordion-icon icon-<?php echo esc_attr($icon_type); ?>" aria-hidden="true">
    33                 <?php if ('plus' === $icon_type): ?>
    34                     <svg class="icon-plus" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    35                         stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
    36                         <line class="line-v" x1="12" y1="5" x2="12" y2="19"></line>
    37                         <line class="line-h" x1="5" y1="12" x2="19" y2="12"></line>
    38                     </svg>
    39                 <?php else: ?>
    40                     <svg class="icon-chevron" viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor"
    41                         stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
    42                         <polyline points="6 9 12 15 18 9"></polyline>
    43                     </svg>
    44                 <?php endif; ?>
    45             </span>
    46         </button>
     136        <div <?php echo $wrapper_attributes; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
     137            <div class="zenithium-blocks-accordion-header">
     138                <button type="button" class="zenithium-blocks-accordion-toggle"
     139                    aria-expanded="<?php echo $is_open ? 'true' : 'false'; ?>">
     140                    <span class="zenithium-blocks-accordion-title-text">
     141                        <?php echo wp_kses_post($title); ?>
     142                    </span>
     143                    <span class="zenithium-blocks-accordion-icon icon-<?php echo esc_attr($icon_type); ?>" aria-hidden="true">
     144                        <?php if ('plus' === $icon_type): ?>
     145                            <svg class="icon-plus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
     146                                stroke-linecap="round" stroke-linejoin="round">
     147                                <line class="line-v" x1="12" y1="5" x2="12" y2="19"></line>
     148                                <line class="line-h" x1="5" y1="12" x2="19" y2="12"></line>
     149                            </svg>
     150                        <?php else: ?>
     151                            <svg class="icon-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
     152                                stroke-linecap="round" stroke-linejoin="round">
     153                                <polyline points="6 9 12 15 18 9"></polyline>
     154                            </svg>
     155                        <?php endif; ?>
     156                    </span>
     157                </button>
     158            </div>
    47159
    48         <div class="zenithium-blocks-accordion-content" style="<?php echo $is_open ? 'display: block;' : 'display: none;'; ?>">
    49             <div class="zenithium-blocks-accordion-inner">
    50                 <?php echo $content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
     160            <div class="zenithium-blocks-accordion-content"
     161                style="display: grid; grid-template-rows: <?php echo $is_open ? '1fr' : '0fr'; ?>; transition: grid-template-rows 0.3s ease;">
     162                <div style="overflow: hidden;">
     163                    <div class="zenithium-blocks-accordion-inner" <?php echo $inner_styles; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
     164                        <?php echo $content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
     165                    </div>
     166                </div>
    51167            </div>
    52168        </div>
    53     </div>
    54169    <?php
    55170    },
  • zenithium-blocks/trunk/build/blocks/accordion/style-index-rtl.css

    r3640847 r3769770  
    1 .zenithium-blocks-accordion-wrapper{background-color:#fff;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle{align-items:center;background-color:var(--zb-header-bg,#f8fafc);border:none;color:#1e293b;cursor:pointer;display:flex;font-size:1.05rem;font-weight:600;justify-content:space-between;padding:16px 20px;text-align:right;transition:background-color .2s ease,color .2s ease;width:100%}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle:hover{color:var(--zb-accent-color,#2563eb)}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle .zenithium-blocks-accordion-icon{align-items:center;color:var(--zb-accent-color,#2563eb);display:inline-flex;justify-content:center;position:relative;z-index:2}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle .zenithium-blocks-accordion-icon svg{display:block!important;height:20px!important;opacity:1!important;position:relative!important;transform-origin:center;transition:transform .3s cubic-bezier(.4,0,.2,1);visibility:visible!important;width:20px!important;z-index:2!important}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle .zenithium-blocks-accordion-icon svg line,.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle .zenithium-blocks-accordion-icon svg polyline{stroke:currentColor!important}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle[aria-expanded=true]{border-bottom:1px solid #e2e8f0;color:var(--zb-accent-color,#2563eb)}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle[aria-expanded=true] .icon-chevron svg{transform:rotate(-180deg)}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle[aria-expanded=true] .icon-plus svg{transform:rotate(-45deg)}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-content{color:#475569;display:none;line-height:1.6;padding:18px 20px}.zenithium-blocks-accordion-wrapper.is-open{border-color:var(--zb-accent-color,#2563eb);box-shadow:0 4px 12px rgba(0,0,0,.05)}.zenithium-blocks-accordion-wrapper.is-open .zenithium-blocks-accordion-content{display:block}
     1.wp-block-zenithium-blocks-accordion-item{border-color:var(--zb-item-border-color,#e2e8f0);border-radius:var(--zb-item-border-radius,6px);border-style:var(--zb-item-border-style,solid);border-width:var(--zb-item-border-width,1px);box-sizing:border-box;overflow:hidden}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--zb-content-gap,var(--wp--style--block-gap,16px));padding:0 var(--zb-content-padding-x,20px) var(--zb-content-padding-y,20px)}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body>.wp-block{margin-block-end:0;margin-block-start:0}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-inner{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--zb-content-gap,var(--wp--style--block-gap,16px));padding:0 var(--zb-content-padding-x,20px) var(--zb-content-padding-y,20px)}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-inner>.wp-block{margin-block-end:0;margin-block-start:0}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header{align-items:center;display:flex}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-toggle{align-items:center;background:var(--zb-header-bg,transparent);border:0;color:var(--zb-header-text,inherit);cursor:pointer;display:flex;font:inherit;justify-content:space-between;padding:var(--zb-header-padding-y,16px) var(--zb-header-padding-x,20px);text-align:right;transition:background-color .2s ease,color .2s ease;width:100%}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-toggle:focus-visible,.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-toggle:hover{background-color:var(--zb-header-hover-bg,var(--zb-header-bg,transparent));color:var(--zb-header-hover-text,var(--zb-header-text,inherit))}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-title-text{flex-grow:1;font-size:var(--zb-title-size,1.05rem);font-weight:var(--zb-title-weight,600)}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-icon{align-items:center;color:var(--zb-icon-color,currentColor);display:inline-flex;flex-shrink:0;height:var(--zb-icon-size,20px);justify-content:center;transition:color .2s ease;width:var(--zb-icon-size,20px)}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-toggle:focus-visible .zenithium-blocks-accordion-icon,.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-toggle:hover .zenithium-blocks-accordion-icon{color:var(--zb-icon-hover-color,var(--zb-icon-color,currentColor))}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-icon svg{display:block;height:100%;width:100%}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-content>div{min-height:0}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-toggle:focus-visible{outline:2px solid currentcolor;outline-offset:-2px}
  • zenithium-blocks/trunk/build/blocks/accordion/style-index.css

    r3640847 r3769770  
    1 .zenithium-blocks-accordion-wrapper{background-color:#fff;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle{align-items:center;background-color:var(--zb-header-bg,#f8fafc);border:none;color:#1e293b;cursor:pointer;display:flex;font-size:1.05rem;font-weight:600;justify-content:space-between;padding:16px 20px;text-align:left;transition:background-color .2s ease,color .2s ease;width:100%}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle:hover{color:var(--zb-accent-color,#2563eb)}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle .zenithium-blocks-accordion-icon{align-items:center;color:var(--zb-accent-color,#2563eb);display:inline-flex;justify-content:center;position:relative;z-index:2}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle .zenithium-blocks-accordion-icon svg{display:block!important;height:20px!important;opacity:1!important;position:relative!important;transform-origin:center;transition:transform .3s cubic-bezier(.4,0,.2,1);visibility:visible!important;width:20px!important;z-index:2!important}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle .zenithium-blocks-accordion-icon svg line,.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle .zenithium-blocks-accordion-icon svg polyline{stroke:currentColor!important}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle[aria-expanded=true]{border-bottom:1px solid #e2e8f0;color:var(--zb-accent-color,#2563eb)}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle[aria-expanded=true] .icon-chevron svg{transform:rotate(180deg)}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-toggle[aria-expanded=true] .icon-plus svg{transform:rotate(45deg)}.zenithium-blocks-accordion-wrapper .zenithium-blocks-accordion-content{color:#475569;display:none;line-height:1.6;padding:18px 20px}.zenithium-blocks-accordion-wrapper.is-open{border-color:var(--zb-accent-color,#2563eb);box-shadow:0 4px 12px rgba(0,0,0,.05)}.zenithium-blocks-accordion-wrapper.is-open .zenithium-blocks-accordion-content{display:block}
     1.wp-block-zenithium-blocks-accordion-item{border-color:var(--zb-item-border-color,#e2e8f0);border-radius:var(--zb-item-border-radius,6px);border-style:var(--zb-item-border-style,solid);border-width:var(--zb-item-border-width,1px);box-sizing:border-box;overflow:hidden}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--zb-content-gap,var(--wp--style--block-gap,16px));padding:0 var(--zb-content-padding-x,20px) var(--zb-content-padding-y,20px)}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-body>.wp-block{margin-block-end:0;margin-block-start:0}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-inner{box-sizing:border-box;display:flex;flex-direction:column;gap:var(--zb-content-gap,var(--wp--style--block-gap,16px));padding:0 var(--zb-content-padding-x,20px) var(--zb-content-padding-y,20px)}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-inner>.wp-block{margin-block-end:0;margin-block-start:0}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-header{align-items:center;display:flex}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-toggle{align-items:center;background:var(--zb-header-bg,transparent);border:0;color:var(--zb-header-text,inherit);cursor:pointer;display:flex;font:inherit;justify-content:space-between;padding:var(--zb-header-padding-y,16px) var(--zb-header-padding-x,20px);text-align:left;transition:background-color .2s ease,color .2s ease;width:100%}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-toggle:focus-visible,.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-toggle:hover{background-color:var(--zb-header-hover-bg,var(--zb-header-bg,transparent));color:var(--zb-header-hover-text,var(--zb-header-text,inherit))}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-title-text{flex-grow:1;font-size:var(--zb-title-size,1.05rem);font-weight:var(--zb-title-weight,600)}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-icon{align-items:center;color:var(--zb-icon-color,currentColor);display:inline-flex;flex-shrink:0;height:var(--zb-icon-size,20px);justify-content:center;transition:color .2s ease;width:var(--zb-icon-size,20px)}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-toggle:focus-visible .zenithium-blocks-accordion-icon,.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-toggle:hover .zenithium-blocks-accordion-icon{color:var(--zb-icon-hover-color,var(--zb-icon-color,currentColor))}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-icon svg{display:block;height:100%;width:100%}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-content>div{min-height:0}.wp-block-zenithium-blocks-accordion-item .zenithium-blocks-accordion-toggle:focus-visible{outline:2px solid currentcolor;outline-offset:-2px}
  • zenithium-blocks/trunk/build/blocks/animated-counter/block.json

    r3640847 r3769770  
    44  "name": "zenithium-blocks/animated-counter",
    55  "version": "1.0.0",
    6   "title": "Animated Stats Counter",
    7   "category": "widgets",
     6  "title": "Zenithium Animated Stats Counter",
     7  "category": "zenithium-blocks",
    88  "icon": "performance",
    99  "description": "Animate numbers counting up when scrolled into view.",
    … …  
    2929      "lineHeight": true
    3030    },
    31     "colors": {
     31    "color": {
     32      "background": true,
    3233      "text": true,
    33       "background": true
     34      "link": true,
     35      "gradients": true,
     36      "enableCustomColors": true,
     37      "enableAlpha": true,
     38      "heading": true
    3439    }
    3540  },
  • zenithium-blocks/trunk/build/blocks/animated-counter/index.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => 'b9f15eb96a62a48803ae');
     1<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '5b6d03183b42b080eae0');
  • zenithium-blocks/trunk/build/blocks/animated-counter/index.js

    r3640847 r3769770  
    1 (()=>{"use strict";const e=window.wp.blocks,n=window.wp.i18n,t=window.wp.blockEditor,l=window.wp.components,o=window.ReactJSXRuntime,i=JSON.parse('{"UU":"zenithium-blocks/animated-counter"}');(0,e.registerBlockType)(i.UU,{edit:function({attributes:e,setAttributes:i}){const{targetNumber:r,prefix:s,suffix:a,title:u,duration:c,counterColor:b,alignment:m="center",numberFontSize:h=48,numberFontWeight:x="700",numberColor:d}=e,g=d||b||"#2563eb",p=(0,t.useBlockProps)({className:`zenithium-blocks-counter-edit text-align-${m}`,style:{textAlign:m}}),C={color:g,fontSize:`${h}px`,fontWeight:x};return(0,o.jsxs)("div",{...p,children:[(0,o.jsx)(t.BlockControls,{children:(0,o.jsx)(t.AlignmentToolbar,{value:m,onChange:e=>i({alignment:e||"center"})})}),(0,o.jsxs)(t.InspectorControls,{children:[(0,o.jsxs)(l.PanelBody,{title:(0,n.__)("Counter Settings","zenithium-blocks"),children:[(0,o.jsx)(l.TextControl,{label:(0,n.__)("Target Number","zenithium-blocks"),type:"number",value:r,onChange:e=>i({targetNumber:parseInt(e,10)||0})}),(0,o.jsx)(l.TextControl,{label:(0,n.__)("Prefix (e.g., $)","zenithium-blocks"),value:s,onChange:e=>i({prefix:e})}),(0,o.jsx)(l.TextControl,{label:(0,n.__)("Suffix (e.g., +, %)","zenithium-blocks"),value:a,onChange:e=>i({suffix:e})}),(0,o.jsx)(l.TextControl,{label:(0,n.__)("Animation Duration (ms)","zenithium-blocks"),type:"number",value:c,onChange:e=>i({duration:parseInt(e,10)||1e3})})]}),(0,o.jsxs)(l.PanelBody,{title:(0,n.__)("Number Typography & Color","zenithium-blocks"),children:[(0,o.jsx)(l.RangeControl,{label:(0,n.__)("Number Font Size (px)","zenithium-blocks"),value:h,onChange:e=>i({numberFontSize:e}),min:16,max:120}),(0,o.jsx)(l.SelectControl,{label:(0,n.__)("Number Font Weight","zenithium-blocks"),value:x,options:[{label:"Normal (400)",value:"400"},{label:"Medium (500)",value:"500"},{label:"Semi Bold (600)",value:"600"},{label:"Bold (700)",value:"700"},{label:"Extra Bold (800)",value:"800"}],onChange:e=>i({numberFontWeight:e})}),(0,o.jsx)("p",{children:(0,n.__)("Number Color","zenithium-blocks")}),(0,o.jsx)(l.ColorPalette,{value:g,onChange:e=>i({numberColor:e})})]})]}),(0,o.jsxs)("div",{className:"zenithium-blocks-counter-box",children:[(0,o.jsxs)("div",{className:"zenithium-blocks-counter-number",style:C,children:[(0,o.jsx)("span",{children:s}),(0,o.jsx)("span",{children:r}),(0,o.jsx)("span",{children:a})]}),(0,o.jsx)(t.RichText,{tagName:"div",className:"zenithium-blocks-counter-title",value:u,onChange:e=>i({title:e}),placeholder:(0,n.__)("Enter counter title...","zenithium-blocks")})]})]})},save:()=>null})})();
     1(()=>{"use strict";const e=window.wp.blocks,t=window.wp.i18n,n=window.wp.blockEditor,l=window.wp.components,o=window.ReactJSXRuntime,i=JSON.parse('{"UU":"zenithium-blocks/animated-counter"}');(0,e.registerBlockType)(i.UU,{edit:function({attributes:e,setAttributes:i}){const{startNumber:s=0,targetNumber:r=100,prefix:a="",suffix:u="+",title:c="Happy Clients",duration:m=2e3,counterColor:b,alignment:h="center",numberFontSize:x=48,numberFontWeight:p="700",numberColor:_}=e,d=_||b||"#2563eb",g=((e,t="")=>e?"string"==typeof e&&e.startsWith("var:preset|color|")?`var(--wp--preset--color--${e.replace("var:preset|color|","")})`:e:t)(d),k=(0,n.useBlockProps)({className:`zenithium-blocks-counter-edit text-align-${h}`,style:{textAlign:h}}),z={color:g,fontSize:`${x}px`,fontWeight:p};return(0,o.jsxs)("div",{...k,children:[(0,o.jsx)(n.BlockControls,{children:(0,o.jsx)(n.AlignmentToolbar,{value:h,onChange:e=>i({alignment:e||"center"})})}),(0,o.jsxs)(n.InspectorControls,{children:[(0,o.jsxs)(l.PanelBody,{title:(0,t.__)("Counter Settings","zenithium-blocks"),children:[(0,o.jsx)(l.TextControl,{label:(0,t.__)("Start Number","zenithium-blocks"),type:"number",value:s,onChange:e=>i({startNumber:parseInt(e,10)||0})}),(0,o.jsx)(l.TextControl,{label:(0,t.__)("Target Number","zenithium-blocks"),type:"number",value:r,onChange:e=>i({targetNumber:parseInt(e,10)||0})}),(0,o.jsx)(l.TextControl,{label:(0,t.__)("Prefix (e.g., $)","zenithium-blocks"),value:a,onChange:e=>i({prefix:e})}),(0,o.jsx)(l.TextControl,{label:(0,t.__)("Suffix (e.g., +, %)","zenithium-blocks"),value:u,onChange:e=>i({suffix:e})}),(0,o.jsx)(l.TextControl,{label:(0,t.__)("Animation Duration (ms)","zenithium-blocks"),type:"number",value:m,onChange:e=>i({duration:parseInt(e,10)||1e3})})]}),(0,o.jsxs)(l.PanelBody,{title:(0,t.__)("Number Typography & Color","zenithium-blocks"),children:[(0,o.jsx)(l.RangeControl,{label:(0,t.__)("Number Font Size (px)","zenithium-blocks"),value:x,onChange:e=>i({numberFontSize:e}),min:16,max:120}),(0,o.jsx)(l.SelectControl,{label:(0,t.__)("Number Font Weight","zenithium-blocks"),value:p,options:[{label:(0,t.__)("Normal (400)","zenithium-blocks"),value:"400"},{label:(0,t.__)("Medium (500)","zenithium-blocks"),value:"500"},{label:(0,t.__)("Semi Bold (600)","zenithium-blocks"),value:"600"},{label:(0,t.__)("Bold (700)","zenithium-blocks"),value:"700"},{label:(0,t.__)("Extra Bold (800)","zenithium-blocks"),value:"800"}],onChange:e=>i({numberFontWeight:e})}),(0,o.jsx)("p",{className:"components-base-control__label",children:(0,t.__)("Number Color","zenithium-blocks")}),(0,o.jsx)(l.ColorPalette,{value:d,onChange:e=>i({numberColor:e})})]})]}),(0,o.jsxs)("div",{className:"zenithium-blocks-counter-container",children:[(0,o.jsxs)("div",{className:"zenithium-blocks-counter-number",style:z,children:[a&&(0,o.jsx)("span",{className:"zenithium-blocks-prefix",children:a}),(0,o.jsx)("span",{className:"zenithium-blocks-number-value",children:r}),u&&(0,o.jsx)("span",{className:"zenithium-blocks-suffix",children:u})]}),(0,o.jsx)(n.RichText,{tagName:"div",className:"zenithium-blocks-counter-title",value:c,onChange:e=>i({title:e}),placeholder:(0,t.__)("Enter counter title...","zenithium-blocks")})]})]})},save:()=>null})})();
  • zenithium-blocks/trunk/build/blocks/animated-counter/render.php

    r3640847 r3769770  
    1111
    1212call_user_func(
    13     function ($attributes) {
    14         $target = $attributes['targetNumber'] ?? 100;
     13    function ($attributes, $content, $block) {
     14        $start_number = (int) ($attributes['startNumber'] ?? 0);
     15        $target = (int) ($attributes['targetNumber'] ?? 100);
    1516        $prefix = $attributes['prefix'] ?? '';
    1617        $suffix = $attributes['suffix'] ?? '+';
    1718        $title = $attributes['title'] ?? '';
    18         $duration = $attributes['duration'] ?? 2000;
     19        $duration = (int) ($attributes['duration'] ?? 2000);
    1920        $alignment = $attributes['alignment'] ?? 'center';
    2021        $number_font_size = (int) ($attributes['numberFontSize'] ?? 48);
    2122        $number_font_weight = $attributes['numberFontWeight'] ?? '700';
    2223        $number_color = $attributes['numberColor'] ?? ($attributes['counterColor'] ?? '#2563eb');
     24
     25        $format_color = function ($color, $fallback = '') {
     26            if (empty($color)) {
     27                return $fallback;
     28            }
     29            if (strpos($color, 'var:preset|color|') === 0) {
     30                $slug = str_replace('var:preset|color|', '', $color);
     31                return sprintf('var(--wp--preset--color--%s)', $slug);
     32            }
     33            return $color;
     34        };
     35
     36        $formatted_number_color = $format_color($number_color, '#2563eb');
    2337
    2438        $wrapper_classes = sprintf('zenithium-blocks-counter-wrapper text-align-%s', esc_attr($alignment));
    … …  
    3347        $number_styles = sprintf(
    3448            'color: %s; font-size: %dpx; font-weight: %s;',
    35             esc_attr($number_color),
     49            esc_attr($formatted_number_color),
    3650            $number_font_size,
    3751            esc_attr($number_font_weight)
    … …  
    4054
    4155    <div <?php echo $wrapper_attributes; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
    42         <div class="zenithium-blocks-counter-container" data-target="<?php echo esc_attr($target); ?>"
    43             data-duration="<?php echo esc_attr($duration); ?>">
     56        <div class="zenithium-blocks-counter-container" data-start="<?php echo esc_attr($start_number); ?>"
     57            data-target="<?php echo esc_attr($target); ?>" data-duration="<?php echo esc_attr($duration); ?>">
    4458            <div class="zenithium-blocks-counter-number" style="<?php echo esc_attr($number_styles); ?>">
    4559                <?php if (!empty($prefix)): ?>
    … …  
    4963                <?php endif; ?>
    5064
    51                 <span class="zenithium-blocks-number-value">0</span>
     65                <span class="zenithium-blocks-number-value">
     66                    <?php echo esc_html($start_number); ?>
     67                </span>
    5268
    5369                <?php if (!empty($suffix)): ?>
    … …  
    6783    <?php
    6884    },
    69     $attributes
     85    $attributes ?? array(),
     86    $content ?? '',
     87    $block ?? null
    7088);
  • zenithium-blocks/trunk/build/blocks/animated-counter/view.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array(), 'version' => 'e1d9cce01b6035b10d79');
     1<?php return array('dependencies' => array(), 'version' => '332330ed8e33aff81661');
  • zenithium-blocks/trunk/build/blocks/animated-counter/view.js

    r3640847 r3769770  
    1 document.addEventListener("DOMContentLoaded",()=>{const t=document.querySelectorAll(".zenithium-blocks-counter-container");if(!t.length)return;const e=new IntersectionObserver((t,e)=>{t.forEach(t=>{t.isIntersecting&&((t=>{const e=parseInt(t.dataset.target,10)||0,n=parseInt(t.dataset.duration,10)||2e3,o=t.querySelector(".zenithium-blocks-number-value");if(!o)return;let r=null;const a=t=>{r||(r=t);const i=Math.min((t-r)/n,1),s=Math.floor(i*(2-i)*e);o.textContent=s.toLocaleString(),i<1?window.requestAnimationFrame(a):o.textContent=e.toLocaleString()};window.requestAnimationFrame(a)})(t.target),e.unobserve(t.target))})},{threshold:.3});t.forEach(t=>e.observe(t))});
     1(()=>{const t=()=>{const t=document.querySelectorAll('.zenithium-blocks-counter-container:not([data-animated-init="true"])');if(!t.length)return;const e=new IntersectionObserver((t,e)=>{t.forEach(t=>{t.isIntersecting&&((t=>{const e=parseInt(t.dataset.start,10)||0,n=parseInt(t.dataset.target,10)||0,r=parseInt(t.dataset.duration,10)||2e3,a=t.querySelector(".zenithium-blocks-number-value");if(!a)return;let o=null;const i=n-e,s=t=>{o||(o=t);const c=Math.min((t-o)/r,1),d=Math.floor(e+c*(2-c)*i);a.textContent=d.toLocaleString(),c<1?window.requestAnimationFrame(s):a.textContent=n.toLocaleString()};window.requestAnimationFrame(s)})(t.target),e.unobserve(t.target))})},{threshold:.2});t.forEach(t=>{t.setAttribute("data-animated-init","true"),e.observe(t)})};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",t):t()})();
  • zenithium-blocks/trunk/build/blocks/carousel-slide/block.json

    r3640847 r3769770  
    44  "name": "zenithium-blocks/carousel-slide",
    55  "version": "1.0.0",
    6   "title": "Carousel Slide",
    7   "category": "widgets",
     6  "title": "Zenithium Carousel Slide",
     7  "category": "zenithium-blocks",
    88  "parent": [
    99    "zenithium-blocks/carousel"
    … …  
    1313    "html": false,
    1414    "color": {
     15      "background": true,
    1516      "text": true,
    16       "background": true
     17      "link": true,
     18      "gradients": true,
     19      "enableCustomColors": true,
     20      "enableAlpha": true,
     21      "heading": true
    1722    }
    1823  },
    … …  
    4853  },
    4954  "editorScript": "file:./index.js",
     55  "editorStyle": "file:./index.css",
     56  "style": "file:./style-index.css",
    5057  "render": "file:./render.php"
    5158}
  • zenithium-blocks/trunk/build/blocks/carousel-slide/index.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '7bef9141e82696893df2');
     1<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => 'cc8f64972239d2b65d53');
  • zenithium-blocks/trunk/build/blocks/carousel-slide/index.js

    r3640847 r3769770  
    1 (()=>{"use strict";const e=window.wp.blocks,t=window.wp.blockEditor,i=window.wp.components,n=window.wp.i18n,l=JSON.parse('{"UU":"zenithium-blocks/carousel-slide"}'),o=window.ReactJSXRuntime;(0,e.registerBlockType)(l.UU,{edit:({attributes:e,setAttributes:l})=>{const{title:s,description:a,alignment:c,buttonText:r,buttonUrl:d,descMarginTop:m=12,descMarginBottom:u=16}=e,h=c||"left",p=(0,t.useBlockProps)({className:`zenithium-blocks-carousel-slide text-align-${h}`,style:{textAlign:h}});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.BlockControls,{children:(0,o.jsx)(t.AlignmentToolbar,{value:h,onChange:e=>l({alignment:e||"left"})})}),(0,o.jsxs)(t.InspectorControls,{children:[(0,o.jsx)(i.PanelBody,{title:(0,n.__)("Slide Settings","zenithium-blocks"),initialOpen:!0,children:(0,o.jsx)(i.TextControl,{label:(0,n.__)("Button Link URL","zenithium-blocks"),value:d||"#",onChange:e=>l({buttonUrl:e})})}),(0,o.jsxs)(i.PanelBody,{title:(0,n.__)("Description Spacing","zenithium-blocks"),initialOpen:!1,children:[(0,o.jsx)(i.RangeControl,{label:(0,n.__)("Top Margin (px)","zenithium-blocks"),value:m,onChange:e=>l({descMarginTop:e}),min:0,max:100}),(0,o.jsx)(i.RangeControl,{label:(0,n.__)("Bottom Margin (px)","zenithium-blocks"),value:u,onChange:e=>l({descMarginBottom:e}),min:0,max:100})]})]}),(0,o.jsxs)("div",{...p,children:[(0,o.jsx)(t.RichText,{tagName:"h3",className:"zenithium-blocks-slide-title",value:s||"",onChange:e=>l({title:e}),placeholder:(0,n.__)("Slide Title...","zenithium-blocks")}),(0,o.jsx)(t.RichText,{tagName:"p",className:"zenithium-blocks-slide-desc",value:a||"",onChange:e=>l({description:e}),placeholder:(0,n.__)("Slide description...","zenithium-blocks"),style:{marginTop:`${m}px`,marginBottom:`${u}px`}}),(0,o.jsx)("div",{className:"zenithium-blocks-slide-action",children:(0,o.jsx)(t.RichText,{tagName:"span",className:"zenithium-blocks-slide-btn",value:r||"",onChange:e=>l({buttonText:e}),placeholder:(0,n.__)("Button Text (Optional)","zenithium-blocks"),allowedFormats:[]})})]})]})},save:()=>null})})();
     1(()=>{"use strict";var e={849(){const e=window.wp.blocks,t=window.wp.blockEditor,n=window.wp.components,i=window.wp.i18n,l=JSON.parse('{"UU":"zenithium-blocks/carousel-slide"}'),o=window.ReactJSXRuntime;(0,e.registerBlockType)(l.UU,{edit:({attributes:e,setAttributes:l})=>{const{title:s,description:a,alignment:c="left",buttonText:r,buttonUrl:h,descMarginTop:u=12,descMarginBottom:d=16}=e,m=c||"left",p=(0,t.useBlockProps)({className:`zenithium-blocks-carousel-slide text-align-${m}`,style:{textAlign:m}});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.BlockControls,{children:(0,o.jsx)(t.AlignmentToolbar,{value:m,onChange:e=>l({alignment:e||"left"})})}),(0,o.jsxs)(t.InspectorControls,{children:[(0,o.jsx)(n.PanelBody,{title:(0,i.__)("Slide Settings","zenithium-blocks"),initialOpen:!0,children:(0,o.jsx)(n.TextControl,{label:(0,i.__)("Button Link URL","zenithium-blocks"),value:h||"",onChange:e=>l({buttonUrl:e}),placeholder:"https://"})}),(0,o.jsxs)(n.PanelBody,{title:(0,i.__)("Description Spacing","zenithium-blocks"),initialOpen:!1,children:[(0,o.jsx)(n.RangeControl,{label:(0,i.__)("Top Margin (px)","zenithium-blocks"),value:u,onChange:e=>l({descMarginTop:e}),min:0,max:100}),(0,o.jsx)(n.RangeControl,{label:(0,i.__)("Bottom Margin (px)","zenithium-blocks"),value:d,onChange:e=>l({descMarginBottom:e}),min:0,max:100})]})]}),(0,o.jsxs)("div",{...p,children:[(0,o.jsx)(t.RichText,{tagName:"h3",className:"zenithium-blocks-slide-title",value:s||"",onChange:e=>l({title:e}),placeholder:(0,i.__)("Slide Title...","zenithium-blocks")}),(0,o.jsx)(t.RichText,{tagName:"p",className:"zenithium-blocks-slide-desc",value:a||"",onChange:e=>l({description:e}),placeholder:(0,i.__)("Slide description...","zenithium-blocks"),style:{marginTop:`${u}px`,marginBottom:`${d}px`}}),(0,o.jsx)("div",{className:"zenithium-blocks-slide-action",children:(0,o.jsx)(t.RichText,{tagName:"span",className:"zenithium-blocks-slide-btn",value:r||"",onChange:e=>l({buttonText:e}),placeholder:(0,i.__)("Button Text (Optional)","zenithium-blocks"),allowedFormats:[]})})]})]})},save:()=>null})}};const t={};function n(i){const l=t[i];if(void 0!==l)return l.exports;const o=t[i]={exports:{}};return e[i](o,o.exports,n),o.exports}n.m=e,(()=>{const e=[];n.O=(t,i,l,o)=>{if(i){o=o||0;for(var s=e.length;s>0&&e[s-1][2]>o;s--)e[s]=e[s-1];return void(e[s]=[i,l,o])}let a=1/0;for(s=0;s<e.length;s++){let[i,l,o]=e[s],r=!0;for(var c=0;c<i.length;c++)(!1&o||a>=o)&&Object.keys(n.O).every(e=>n.O[e](i[c]))?i.splice(c--,1):(r=!1,o<a&&(a=o));if(r){e.splice(s--,1);const n=l();void 0!==n&&(t=n)}}return t}})(),n.o=(e,t)=>Object.hasOwn(e,t),(()=>{const e={911:0,311:0};n.O.j=t=>0===e[t];const t=(t,i)=>{let[l,o,s]=i;var a,c,r=0;if(l.some(t=>0!==e[t])){for(a in o)n.o(o,a)&&(n.m[a]=o[a]);if(s)var h=s(n)}for(t&&t(i);r<l.length;r++)c=l[r],n.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return n.O(h)},i=globalThis.webpackChunkzenithium_blocks||=[];i.forEach(t.bind(null,0)),i.push=t.bind(null,i.push.bind(i))})();let i=n.O(void 0,[311],()=>n(849));i=n.O(i)})();
  • zenithium-blocks/trunk/build/blocks/carousel-slide/render.php

    r3640847 r3769770  
    1616        $alignment = $attributes['alignment'] ?? 'left';
    1717        $button_text = $attributes['buttonText'] ?? '';
    18         $button_url = $attributes['buttonUrl'] ?? '#';
     18        $button_url = $attributes['buttonUrl'] ?? '';
    1919        $desc_margin_top = (int) ($attributes['descMarginTop'] ?? 12);
    2020        $desc_margin_bottom = (int) ($attributes['descMarginBottom'] ?? 16);
    … …  
    4646        <?php if (!empty($button_text)): ?>
    4747            <div class="zenithium-blocks-slide-action">
    48                 <a href="<?php echo esc_url($button_url); ?>" class="zenithium-blocks-slide-btn">
     48                <a href="<?php echo esc_url(!empty($button_url) ? $button_url : '#'); ?>"
     49                    class="zenithium-blocks-slide-btn">
    4950                    <?php echo esc_html($button_text); ?>
    5051                </a>
  • zenithium-blocks/trunk/build/blocks/carousel/block.json

    r3640847 r3769770  
    44  "name": "zenithium-blocks/carousel",
    55  "version": "1.0.0",
    6   "title": "Modern Interactive Carousel",
    7   "category": "widgets",
     6  "title": "Zenithium Modern Interactive Carousel",
     7  "category": "zenithium-blocks",
    88  "icon": "slides",
    99  "description": "A fully responsive, touch-friendly carousel and slider block with custom layout controls.",
    … …  
    2626    },
    2727    "color": {
     28      "background": true,
    2829      "text": true,
    29       "background": true
     30      "link": true,
     31      "gradients": true,
     32      "enableCustomColors": true,
     33      "enableAlpha": true,
     34      "heading": true
    3035    }
    3136  },
  • zenithium-blocks/trunk/build/blocks/carousel/index-rtl.css

    r3640847 r3769770  
    1 .wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-wrapper{background-color:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;padding:16px}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track{overflow-x:auto}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout{display:flex;flex-wrap:nowrap;gap:var(--zb-carousel-gap,20px)}
     1.wp-block-zenithium-blocks-carousel,.zenithium-blocks-carousel-wrapper{background-color:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;box-sizing:border-box;padding:16px}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-track,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track{overflow-x:auto;padding-bottom:12px}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-track::-webkit-scrollbar,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track::-webkit-scrollbar{height:6px}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-track::-webkit-scrollbar-thumb,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track::-webkit-scrollbar-thumb{background-color:#cbd5e1;border-radius:3px}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout{align-items:stretch;display:flex;flex-wrap:nowrap;gap:var(--zb-carousel-gap,20px)}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout>.block-list-appender,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout>.block-list-appender{align-items:center;border:2px dashed #94a3b8;border-radius:8px;display:flex;flex-shrink:0;justify-content:center;min-height:180px;min-width:120px}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout>.block-list-appender:hover,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout>.block-list-appender:hover{border-color:#2563eb}
  • zenithium-blocks/trunk/build/blocks/carousel/index.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '231eb02cdd05af9982b5');
     1<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '5a386655ef2429513d85');
  • zenithium-blocks/trunk/build/blocks/carousel/index.css

    r3640847 r3769770  
    1 .wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-wrapper{background-color:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;padding:16px}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track{overflow-x:auto}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout{display:flex;flex-wrap:nowrap;gap:var(--zb-carousel-gap,20px)}
     1.wp-block-zenithium-blocks-carousel,.zenithium-blocks-carousel-wrapper{background-color:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;box-sizing:border-box;padding:16px}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-track,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track{overflow-x:auto;padding-bottom:12px}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-track::-webkit-scrollbar,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track::-webkit-scrollbar{height:6px}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-track::-webkit-scrollbar-thumb,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track::-webkit-scrollbar-thumb{background-color:#cbd5e1;border-radius:3px}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout{align-items:stretch;display:flex;flex-wrap:nowrap;gap:var(--zb-carousel-gap,20px)}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout>.block-list-appender,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout>.block-list-appender{align-items:center;border:2px dashed #94a3b8;border-radius:8px;display:flex;flex-shrink:0;justify-content:center;min-height:180px;min-width:120px}.wp-block-zenithium-blocks-carousel .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout>.block-list-appender:hover,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track>.block-editor-inner-blocks>.block-editor-block-list__layout>.block-list-appender:hover{border-color:#2563eb}
  • zenithium-blocks/trunk/build/blocks/carousel/index.js

    r3640847 r3769770  
    1 (()=>{"use strict";var e={397(){const e=window.wp.blocks,o=window.wp.blockEditor,l=window.wp.components,s=window.wp.i18n,n=JSON.parse('{"UU":"zenithium-blocks/carousel"}'),i=window.ReactJSXRuntime,t=["zenithium-blocks/carousel-slide"],a=[["zenithium-blocks/carousel-slide",{}],["zenithium-blocks/carousel-slide",{}],["zenithium-blocks/carousel-slide",{}]];(0,e.registerBlockType)(n.UU,{edit:({attributes:e,setAttributes:n})=>{const{slidesPerView:r,slideGap:c,showArrows:u,showDots:h,paginationType:d,autoplay:b,autoplaySpeed:p,arrowColor:m,arrowBgColor:g,arrowSize:k=40,dotColor:w}=e,x=(0,o.useBlockProps)({className:`zenithium-blocks-carousel-wrapper slides-per-view-${r}`,style:{"--zb-carousel-gap":`${c}px`,"--zb-slides-per-view":r,"--zb-arrow-color":m,"--zb-arrow-bg":g,"--zb-arrow-size":`${k}px`,"--zb-dot-color":w}});return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(o.InspectorControls,{children:[(0,i.jsxs)(l.PanelBody,{title:(0,s.__)("Carousel Settings","zenithium-blocks"),initialOpen:!0,children:[(0,i.jsx)(l.RangeControl,{label:(0,s.__)("Slides Per View","zenithium-blocks"),value:r,onChange:e=>n({slidesPerView:e}),min:1,max:4}),(0,i.jsx)(l.RangeControl,{label:(0,s.__)("Gap Between Slides (px)","zenithium-blocks"),value:c,onChange:e=>n({slideGap:e}),min:0,max:50}),(0,i.jsx)(l.ToggleControl,{label:(0,s.__)("Show Navigation Arrows","zenithium-blocks"),checked:u,onChange:e=>n({showArrows:e})}),(0,i.jsx)(l.ToggleControl,{label:(0,s.__)("Show Pagination Dots","zenithium-blocks"),checked:h,onChange:e=>n({showDots:e})}),h&&(0,i.jsx)(l.SelectControl,{label:(0,s.__)("Pagination Mode","zenithium-blocks"),value:d,options:[{label:(0,s.__)("Page-by-Page Dots (Recommended)","zenithium-blocks"),value:"pages"},{label:(0,s.__)("Per Slide Dots","zenithium-blocks"),value:"slides"}],onChange:e=>n({paginationType:e})})]}),(0,i.jsxs)(l.PanelBody,{title:(0,s.__)("Autoplay Settings","zenithium-blocks"),initialOpen:!1,children:[(0,i.jsx)(l.ToggleControl,{label:(0,s.__)("Enable Autoplay","zenithium-blocks"),checked:b,onChange:e=>n({autoplay:e})}),b&&(0,i.jsx)(l.RangeControl,{label:(0,s.__)("Autoplay Speed (ms)","zenithium-blocks"),value:p,onChange:e=>n({autoplaySpeed:e}),min:1500,max:1e4,step:500})]}),(0,i.jsxs)(l.PanelBody,{title:(0,s.__)("Navigation Styling","zenithium-blocks"),initialOpen:!1,children:[u&&(0,i.jsx)(l.RangeControl,{label:(0,s.__)("Arrow Size (px)","zenithium-blocks"),value:k,onChange:e=>n({arrowSize:e}),min:24,max:80}),(0,i.jsx)("p",{children:(0,i.jsx)("strong",{children:(0,s.__)("Arrow Icon Color","zenithium-blocks")})}),(0,i.jsx)(l.ColorPalette,{value:m,onChange:e=>n({arrowColor:e||"#1e293b"})}),(0,i.jsx)("p",{children:(0,i.jsx)("strong",{children:(0,s.__)("Arrow Background","zenithium-blocks")})}),(0,i.jsx)(l.ColorPalette,{value:g,onChange:e=>n({arrowBgColor:e||"#ffffff"})}),(0,i.jsx)("p",{children:(0,i.jsx)("strong",{children:(0,s.__)("Active Dot Color","zenithium-blocks")})}),(0,i.jsx)(l.ColorPalette,{value:w,onChange:e=>n({dotColor:e||"#2563eb"})})]})]}),(0,i.jsxs)("div",{...x,children:[(0,i.jsx)("div",{className:"zenithium-blocks-carousel-track",children:(0,i.jsx)(o.InnerBlocks,{allowedBlocks:t,template:a,orientation:"horizontal",renderAppender:o.InnerBlocks.ButtonBlockAppender})}),u&&(0,i.jsxs)("div",{className:"zenithium-blocks-carousel-arrows",children:[(0,i.jsx)("button",{type:"button",className:"zenithium-blocks-carousel-arrow prev","aria-label":"Previous slide",children:"‹"}),(0,i.jsx)("button",{type:"button",className:"zenithium-blocks-carousel-arrow next","aria-label":"Next slide",children:"›"})]}),h&&(0,i.jsxs)("div",{className:"zenithium-blocks-carousel-dots",children:[(0,i.jsx)("span",{className:"zenithium-blocks-carousel-dot is-active"}),(0,i.jsx)("span",{className:"zenithium-blocks-carousel-dot"}),(0,i.jsx)("span",{className:"zenithium-blocks-carousel-dot"})]})]})]})},save:()=>(0,i.jsx)(o.InnerBlocks.Content,{})})}};const o={};function l(s){const n=o[s];if(void 0!==n)return n.exports;const i=o[s]={exports:{}};return e[s](i,i.exports,l),i.exports}l.m=e,(()=>{const e=[];l.O=(o,s,n,i)=>{if(s){i=i||0;for(var t=e.length;t>0&&e[t-1][2]>i;t--)e[t]=e[t-1];return void(e[t]=[s,n,i])}let a=1/0;for(t=0;t<e.length;t++){let[s,n,i]=e[t],c=!0;for(var r=0;r<s.length;r++)(!1&i||a>=i)&&Object.keys(l.O).every(e=>l.O[e](s[r]))?s.splice(r--,1):(c=!1,i<a&&(a=i));if(c){e.splice(t--,1);const l=n();void 0!==l&&(o=l)}}return o}})(),l.o=(e,o)=>Object.hasOwn(e,o),(()=>{const e={899:0,131:0};l.O.j=o=>0===e[o];const o=(o,s)=>{let[n,i,t]=s;var a,r,c=0;if(n.some(o=>0!==e[o])){for(a in i)l.o(i,a)&&(l.m[a]=i[a]);if(t)var u=t(l)}for(o&&o(s);c<n.length;c++)r=n[c],l.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return l.O(u)},s=globalThis.webpackChunkzenithium_blocks||=[];s.forEach(o.bind(null,0)),s.push=o.bind(null,s.push.bind(s))})();let s=l.O(void 0,[131],()=>l(397));s=l.O(s)})();
     1(()=>{"use strict";var e={397(){const e=window.wp.blocks,o=window.wp.blockEditor,l=window.wp.components,s=window.wp.i18n,i=JSON.parse('{"UU":"zenithium-blocks/carousel"}'),n=window.ReactJSXRuntime,t=["zenithium-blocks/carousel-slide"],a=[["zenithium-blocks/carousel-slide",{}],["zenithium-blocks/carousel-slide",{}],["zenithium-blocks/carousel-slide",{}]];(0,e.registerBlockType)(i.UU,{edit:({attributes:e,setAttributes:i})=>{const{slidesPerView:r,slideGap:c,showArrows:u,showDots:h,paginationType:d,autoplay:b,autoplaySpeed:p,arrowColor:m,arrowBgColor:k,arrowSize:g=40,dotColor:w}=e,x=(0,o.useBlockProps)({className:`zenithium-blocks-carousel-wrapper slides-per-view-${r}`,style:{"--zb-carousel-gap":`${c}px`,"--zb-slides-per-view":r,"--zb-arrow-color":m,"--zb-arrow-bg":k,"--zb-arrow-size":`${g}px`,"--zb-dot-color":w}});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(o.InspectorControls,{children:[(0,n.jsxs)(l.PanelBody,{title:(0,s.__)("Carousel Settings","zenithium-blocks"),initialOpen:!0,children:[(0,n.jsx)(l.RangeControl,{label:(0,s.__)("Slides Per View","zenithium-blocks"),value:r,onChange:e=>i({slidesPerView:e}),min:1,max:4}),(0,n.jsx)(l.RangeControl,{label:(0,s.__)("Gap Between Slides (px)","zenithium-blocks"),value:c,onChange:e=>i({slideGap:e}),min:0,max:50}),(0,n.jsx)(l.ToggleControl,{label:(0,s.__)("Show Navigation Arrows","zenithium-blocks"),checked:u,onChange:e=>i({showArrows:e})}),(0,n.jsx)(l.ToggleControl,{label:(0,s.__)("Show Pagination Dots","zenithium-blocks"),checked:h,onChange:e=>i({showDots:e})}),h&&(0,n.jsx)(l.SelectControl,{label:(0,s.__)("Pagination Mode","zenithium-blocks"),value:d,options:[{label:(0,s.__)("Page-by-Page Dots (Recommended)","zenithium-blocks"),value:"pages"},{label:(0,s.__)("Per Slide Dots","zenithium-blocks"),value:"slides"}],onChange:e=>i({paginationType:e})})]}),(0,n.jsxs)(l.PanelBody,{title:(0,s.__)("Autoplay Settings","zenithium-blocks"),initialOpen:!1,children:[(0,n.jsx)(l.ToggleControl,{label:(0,s.__)("Enable Autoplay","zenithium-blocks"),checked:b,onChange:e=>i({autoplay:e})}),b&&(0,n.jsx)(l.RangeControl,{label:(0,s.__)("Autoplay Speed (ms)","zenithium-blocks"),value:p,onChange:e=>i({autoplaySpeed:e}),min:1500,max:1e4,step:500})]}),(0,n.jsxs)(l.PanelBody,{title:(0,s.__)("Navigation Styling","zenithium-blocks"),initialOpen:!1,children:[u&&(0,n.jsx)(l.RangeControl,{label:(0,s.__)("Arrow Size (px)","zenithium-blocks"),value:g,onChange:e=>i({arrowSize:e}),min:24,max:80}),(0,n.jsx)("p",{children:(0,n.jsx)("strong",{children:(0,s.__)("Arrow Icon Color","zenithium-blocks")})}),(0,n.jsx)(l.ColorPalette,{value:m,onChange:e=>i({arrowColor:e||"#1e293b"})}),(0,n.jsx)("p",{children:(0,n.jsx)("strong",{children:(0,s.__)("Arrow Background","zenithium-blocks")})}),(0,n.jsx)(l.ColorPalette,{value:k,onChange:e=>i({arrowBgColor:e||"#ffffff"})}),(0,n.jsx)("p",{children:(0,n.jsx)("strong",{children:(0,s.__)("Active Dot Color","zenithium-blocks")})}),(0,n.jsx)(l.ColorPalette,{value:w,onChange:e=>i({dotColor:e||"#2563eb"})})]})]}),(0,n.jsxs)("div",{...x,children:[(0,n.jsx)("div",{className:"zenithium-blocks-carousel-track",children:(0,n.jsx)(o.InnerBlocks,{allowedBlocks:t,template:a,orientation:"horizontal",renderAppender:o.InnerBlocks.ButtonBlockAppender})}),u&&(0,n.jsxs)("div",{className:"zenithium-blocks-carousel-arrows",children:[(0,n.jsx)("button",{type:"button",className:"zenithium-blocks-carousel-arrow prev","aria-label":(0,s.__)("Previous slide","zenithium-blocks"),children:"‹"}),(0,n.jsx)("button",{type:"button",className:"zenithium-blocks-carousel-arrow next","aria-label":(0,s.__)("Next slide","zenithium-blocks"),children:"›"})]}),h&&(0,n.jsxs)("div",{className:"zenithium-blocks-carousel-dots",children:[(0,n.jsx)("span",{className:"zenithium-blocks-carousel-dot is-active"}),(0,n.jsx)("span",{className:"zenithium-blocks-carousel-dot"}),(0,n.jsx)("span",{className:"zenithium-blocks-carousel-dot"})]})]})]})},save:()=>(0,n.jsx)(o.InnerBlocks.Content,{})})}};const o={};function l(s){const i=o[s];if(void 0!==i)return i.exports;const n=o[s]={exports:{}};return e[s](n,n.exports,l),n.exports}l.m=e,(()=>{const e=[];l.O=(o,s,i,n)=>{if(s){n=n||0;for(var t=e.length;t>0&&e[t-1][2]>n;t--)e[t]=e[t-1];return void(e[t]=[s,i,n])}let a=1/0;for(t=0;t<e.length;t++){let[s,i,n]=e[t],c=!0;for(var r=0;r<s.length;r++)(!1&n||a>=n)&&Object.keys(l.O).every(e=>l.O[e](s[r]))?s.splice(r--,1):(c=!1,n<a&&(a=n));if(c){e.splice(t--,1);const l=i();void 0!==l&&(o=l)}}return o}})(),l.o=(e,o)=>Object.hasOwn(e,o),(()=>{const e={899:0,131:0};l.O.j=o=>0===e[o];const o=(o,s)=>{let[i,n,t]=s;var a,r,c=0;if(i.some(o=>0!==e[o])){for(a in n)l.o(n,a)&&(l.m[a]=n[a]);if(t)var u=t(l)}for(o&&o(s);c<i.length;c++)r=i[c],l.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return l.O(u)},s=globalThis.webpackChunkzenithium_blocks||=[];s.forEach(o.bind(null,0)),s.push=o.bind(null,s.push.bind(s))})();let s=l.O(void 0,[131],()=>l(397));s=l.O(s)})();
  • zenithium-blocks/trunk/build/blocks/carousel/render.php

    r3640847 r3769770  
    1212call_user_func(
    1313    function ($attributes, $content) {
     14        $format_color = function ($color, $default = '') {
     15            if (empty($color)) {
     16                return $default;
     17            }
     18            if (is_string($color) && str_starts_with($color, 'var:preset|color|')) {
     19                $slug = str_replace('var:preset|color|', '', $color);
     20                return "var(--wp--preset--color--{$slug})";
     21            }
     22            return $color;
     23        };
     24
    1425        $slides_per_view = (int) ($attributes['slidesPerView'] ?? 3);
    1526        $slide_gap = (int) ($attributes['slideGap'] ?? 20);
    … …  
    2031        $autoplay_speed = (int) ($attributes['autoplaySpeed'] ?? 4000);
    2132
    22         $arrow_color = $attributes['arrowColor'] ?? '#1e293b';
    23         $arrow_bg = $attributes['arrowBgColor'] ?? '#ffffff';
     33        $arrow_color = $format_color($attributes['arrowColor'] ?? '', '#1e293b');
     34        $arrow_bg = $format_color($attributes['arrowBgColor'] ?? '', '#ffffff');
    2435        $arrow_size = (int) ($attributes['arrowSize'] ?? 40);
    25         $dot_color = $attributes['dotColor'] ?? '#2563eb';
     36        $dot_color = $format_color($attributes['dotColor'] ?? '', '#2563eb');
    2637
    2738        $wrapper_classes = sprintf('zenithium-blocks-carousel-wrapper slides-per-view-%d', $slides_per_view);
    … …  
    4253                'style' => $inline_styles,
    4354                'data-slides-per-view' => $slides_per_view,
     55                'data-slide-gap' => $slide_gap,
    4456                'data-pagination-type' => esc_attr($pagination_type),
    4557                'data-autoplay' => $autoplay ? 'true' : 'false',
    … …  
    4961        ?>
    5062
    51     <div <?php echo $wrapper_attributes; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
    52         <div class="zenithium-blocks-carousel-track">
    53             <?php echo wp_kses_post($content); ?>
     63        <div <?php echo $wrapper_attributes; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
     64            <div class="zenithium-blocks-carousel-track">
     65                <?php echo $content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
     66            </div>
     67
     68            <?php if ($show_arrows): ?>
     69                <div class="zenithium-blocks-carousel-arrows">
     70                    <button type="button" class="zenithium-blocks-carousel-arrow prev"
     71                        aria-label="<?php esc_attr_e('Previous slide', 'zenithium-blocks'); ?>">
     72                        <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="<?php echo esc_attr($arrow_color); ?>"
     73                            stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
     74                            <polyline points="15 18 9 12 15 6"></polyline>
     75                        </svg>
     76                    </button>
     77                    <button type="button" class="zenithium-blocks-carousel-arrow next"
     78                        aria-label="<?php esc_attr_e('Next slide', 'zenithium-blocks'); ?>">
     79                        <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="<?php echo esc_attr($arrow_color); ?>"
     80                            stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
     81                            <polyline points="9 18 15 12 9 6"></polyline>
     82                        </svg>
     83                    </button>
     84                </div>
     85            <?php endif; ?>
     86
     87            <?php if ($show_dots): ?>
     88                <div class="zenithium-blocks-carousel-dots"></div>
     89            <?php endif; ?>
    5490        </div>
    55 
    56         <?php if ($show_arrows): ?>
    57             <div class="zenithium-blocks-carousel-arrows">
    58                 <button type="button" class="zenithium-blocks-carousel-arrow prev"
    59                     aria-label="<?php esc_attr_e('Previous slide', 'zenithium-blocks'); ?>">
    60                     <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="<?php echo esc_attr($arrow_color); ?>"
    61                         stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
    62                         <polyline points="15 18 9 12 15 6"></polyline>
    63                     </svg>
    64                 </button>
    65                 <button type="button" class="zenithium-blocks-carousel-arrow next"
    66                     aria-label="<?php esc_attr_e('Next slide', 'zenithium-blocks'); ?>">
    67                     <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="<?php echo esc_attr($arrow_color); ?>"
    68                         stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
    69                         <polyline points="9 18 15 12 9 6"></polyline>
    70                     </svg>
    71                 </button>
    72             </div>
    73         <?php endif; ?>
    74 
    75         <?php if ($show_dots): ?>
    76             <div class="zenithium-blocks-carousel-dots"></div>
    77         <?php endif; ?>
    78     </div>
    7991    <?php
    8092    },
  • zenithium-blocks/trunk/build/blocks/carousel/style-index-rtl.css

    r3640847 r3769770  
    1 .zenithium-blocks-carousel-wrapper{padding-bottom:24px;position:relative;width:100%}.zenithium-blocks-carousel-wrapper .zenithium-blocks-swiper-container{overflow:hidden;padding:10px 0;position:relative;width:100%}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track{box-sizing:content-box;display:flex;height:100%;width:100%}.zenithium-blocks-carousel-wrapper .swiper-slide,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide{background-color:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,.06);box-sizing:border-box;flex-shrink:0;height:auto;padding:24px;position:relative}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-center,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-center,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-center{text-align:center}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-center .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-center .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-center .zenithium-blocks-slide-action{display:flex;justify-content:center}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-right,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-right,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-right{text-align:left}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-right .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-right .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-right .zenithium-blocks-slide-action{display:flex;justify-content:flex-end}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-left,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-left,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-left{text-align:right}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-left .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-left .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-left .zenithium-blocks-slide-action{display:flex;justify-content:flex-start}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows{display:flex;justify-content:space-between;right:0;padding:0 8px;pointer-events:none;position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:20}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow{align-items:center!important;background-color:var(--zb-arrow-bg,#fff)!important;border:none;border-radius:50%;box-shadow:0 4px 12px rgba(0,0,0,.15);box-sizing:border-box;cursor:pointer;display:flex!important;height:var(--zb-arrow-size,40px)!important;justify-content:center!important;margin:0!important;min-height:var(--zb-arrow-size,40px)!important;min-width:var(--zb-arrow-size,40px)!important;opacity:1!important;padding:0!important;pointer-events:auto;position:relative;transition:transform .2s ease,opacity .2s ease,background-color .2s ease;visibility:visible!important;width:var(--zb-arrow-size,40px)!important}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow svg{display:block!important;height:50%!important;max-height:100%!important;max-width:100%!important;opacity:1!important;overflow:visible!important;pointer-events:none;position:relative!important;visibility:visible!important;width:50%!important;z-index:2!important}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow svg path,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow svg polyline{fill:none!important;opacity:1!important;stroke:var(--zb-arrow-color,#1e293b)!important;stroke-width:2.5px!important;visibility:visible!important}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow:hover{transform:scale(1.08)}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow.swiper-button-disabled,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow[disabled]{cursor:not-allowed;opacity:.3!important;pointer-events:none}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots{align-items:center;display:flex;gap:8px;justify-content:center;margin-top:16px}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .swiper-pagination-bullet,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .zenithium-blocks-carousel-dot{background-color:#cbd5e1;border:none;border-radius:50%;cursor:pointer;height:10px;opacity:1;padding:0;transition:all .3s ease;width:10px}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .swiper-pagination-bullet.is-active,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .swiper-pagination-bullet.swiper-pagination-bullet-active,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .zenithium-blocks-carousel-dot.is-active,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .zenithium-blocks-carousel-dot.swiper-pagination-bullet-active{background-color:var(--zb-dot-color,#2563eb);border-radius:12px;width:24px}
     1.zenithium-blocks-carousel-wrapper{box-sizing:border-box;padding-bottom:24px;position:relative;width:100%}.zenithium-blocks-carousel-wrapper .zenithium-blocks-swiper-container{overflow:hidden;padding:10px 0;position:relative;width:100%}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track{box-sizing:content-box;display:flex;height:100%;width:100%}.zenithium-blocks-carousel-wrapper .swiper-slide,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide{background-color:transparent;border:1px solid rgba(226,232,240,.8);border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,.06);box-sizing:border-box;flex-shrink:0;height:auto;padding:24px;position:relative}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-center,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-center,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-center{text-align:center}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-center .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-center .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-center .zenithium-blocks-slide-action{display:flex;justify-content:center}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-right,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-right,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-right{text-align:left}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-right .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-right .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-right .zenithium-blocks-slide-action{display:flex;justify-content:flex-end}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-left,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-left,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-left{text-align:right}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-left .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-left .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-left .zenithium-blocks-slide-action{display:flex;justify-content:flex-start}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows{display:flex;justify-content:space-between;right:0;padding:0 8px;pointer-events:none;position:absolute;left:0;top:50%;transform:translateY(-50%);z-index:20}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow{align-items:center;background-color:var(--zb-arrow-bg,#fff);border:none;border-radius:50%;box-shadow:0 4px 12px rgba(0,0,0,.15);box-sizing:border-box;cursor:pointer;display:flex;height:var(--zb-arrow-size,40px);justify-content:center;margin:0;min-height:var(--zb-arrow-size,40px);min-width:var(--zb-arrow-size,40px);padding:0;pointer-events:auto;position:relative;transition:transform .2s ease,opacity .2s ease,background-color .2s ease;width:var(--zb-arrow-size,40px)}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow svg{display:block;height:50%;max-height:100%;max-width:100%;overflow:visible;pointer-events:none;position:relative;width:50%;z-index:2}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow svg path,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow svg polyline{fill:none;stroke:var(--zb-arrow-color,#1e293b);stroke-width:2.5px}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow:hover{transform:scale(1.08)}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow.swiper-button-disabled,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow[disabled]{cursor:not-allowed;opacity:.3;pointer-events:none}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots{align-items:center;display:flex;gap:8px;justify-content:center;margin-top:16px}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .swiper-pagination-bullet,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .zenithium-blocks-carousel-dot{background-color:#cbd5e1;border:none;border-radius:50%;cursor:pointer;height:10px;opacity:1;padding:0;transition:all .3s ease;width:10px}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .swiper-pagination-bullet.is-active,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .swiper-pagination-bullet.swiper-pagination-bullet-active,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .zenithium-blocks-carousel-dot.is-active,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .zenithium-blocks-carousel-dot.swiper-pagination-bullet-active{background-color:var(--zb-dot-color,#2563eb);border-radius:12px;width:24px}
  • zenithium-blocks/trunk/build/blocks/carousel/style-index.css

    r3640847 r3769770  
    1 .zenithium-blocks-carousel-wrapper{padding-bottom:24px;position:relative;width:100%}.zenithium-blocks-carousel-wrapper .zenithium-blocks-swiper-container{overflow:hidden;padding:10px 0;position:relative;width:100%}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track{box-sizing:content-box;display:flex;height:100%;width:100%}.zenithium-blocks-carousel-wrapper .swiper-slide,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide{background-color:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,.06);box-sizing:border-box;flex-shrink:0;height:auto;padding:24px;position:relative}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-center,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-center,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-center{text-align:center}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-center .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-center .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-center .zenithium-blocks-slide-action{display:flex;justify-content:center}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-right,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-right,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-right{text-align:right}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-right .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-right .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-right .zenithium-blocks-slide-action{display:flex;justify-content:flex-end}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-left,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-left,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-left{text-align:left}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-left .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-left .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-left .zenithium-blocks-slide-action{display:flex;justify-content:flex-start}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows{display:flex;justify-content:space-between;left:0;padding:0 8px;pointer-events:none;position:absolute;right:0;top:50%;transform:translateY(-50%);z-index:20}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow{align-items:center!important;background-color:var(--zb-arrow-bg,#fff)!important;border:none;border-radius:50%;box-shadow:0 4px 12px rgba(0,0,0,.15);box-sizing:border-box;cursor:pointer;display:flex!important;height:var(--zb-arrow-size,40px)!important;justify-content:center!important;margin:0!important;min-height:var(--zb-arrow-size,40px)!important;min-width:var(--zb-arrow-size,40px)!important;opacity:1!important;padding:0!important;pointer-events:auto;position:relative;transition:transform .2s ease,opacity .2s ease,background-color .2s ease;visibility:visible!important;width:var(--zb-arrow-size,40px)!important}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow svg{display:block!important;height:50%!important;max-height:100%!important;max-width:100%!important;opacity:1!important;overflow:visible!important;pointer-events:none;position:relative!important;visibility:visible!important;width:50%!important;z-index:2!important}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow svg path,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow svg polyline{fill:none!important;opacity:1!important;stroke:var(--zb-arrow-color,#1e293b)!important;stroke-width:2.5px!important;visibility:visible!important}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow:hover{transform:scale(1.08)}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow.swiper-button-disabled,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow[disabled]{cursor:not-allowed;opacity:.3!important;pointer-events:none}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots{align-items:center;display:flex;gap:8px;justify-content:center;margin-top:16px}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .swiper-pagination-bullet,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .zenithium-blocks-carousel-dot{background-color:#cbd5e1;border:none;border-radius:50%;cursor:pointer;height:10px;opacity:1;padding:0;transition:all .3s ease;width:10px}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .swiper-pagination-bullet.is-active,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .swiper-pagination-bullet.swiper-pagination-bullet-active,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .zenithium-blocks-carousel-dot.is-active,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .zenithium-blocks-carousel-dot.swiper-pagination-bullet-active{background-color:var(--zb-dot-color,#2563eb);border-radius:12px;width:24px}
     1.zenithium-blocks-carousel-wrapper{box-sizing:border-box;padding-bottom:24px;position:relative;width:100%}.zenithium-blocks-carousel-wrapper .zenithium-blocks-swiper-container{overflow:hidden;padding:10px 0;position:relative;width:100%}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-track{box-sizing:content-box;display:flex;height:100%;width:100%}.zenithium-blocks-carousel-wrapper .swiper-slide,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide{background-color:transparent;border:1px solid rgba(226,232,240,.8);border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,.06);box-sizing:border-box;flex-shrink:0;height:auto;padding:24px;position:relative}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-center,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-center,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-center{text-align:center}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-center .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-center .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-center .zenithium-blocks-slide-action{display:flex;justify-content:center}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-right,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-right,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-right{text-align:right}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-right .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-right .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-right .zenithium-blocks-slide-action{display:flex;justify-content:flex-end}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-left,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-left,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-left{text-align:left}.zenithium-blocks-carousel-wrapper .swiper-slide.text-align-left .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .wp-block-zenithium-blocks-carousel-slide.text-align-left .zenithium-blocks-slide-action,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-slide.text-align-left .zenithium-blocks-slide-action{display:flex;justify-content:flex-start}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows{display:flex;justify-content:space-between;left:0;padding:0 8px;pointer-events:none;position:absolute;right:0;top:50%;transform:translateY(-50%);z-index:20}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow{align-items:center;background-color:var(--zb-arrow-bg,#fff);border:none;border-radius:50%;box-shadow:0 4px 12px rgba(0,0,0,.15);box-sizing:border-box;cursor:pointer;display:flex;height:var(--zb-arrow-size,40px);justify-content:center;margin:0;min-height:var(--zb-arrow-size,40px);min-width:var(--zb-arrow-size,40px);padding:0;pointer-events:auto;position:relative;transition:transform .2s ease,opacity .2s ease,background-color .2s ease;width:var(--zb-arrow-size,40px)}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow svg{display:block;height:50%;max-height:100%;max-width:100%;overflow:visible;pointer-events:none;position:relative;width:50%;z-index:2}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow svg path,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow svg polyline{fill:none;stroke:var(--zb-arrow-color,#1e293b);stroke-width:2.5px}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow:hover{transform:scale(1.08)}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow.swiper-button-disabled,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-arrows .zenithium-blocks-carousel-arrow[disabled]{cursor:not-allowed;opacity:.3;pointer-events:none}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots{align-items:center;display:flex;gap:8px;justify-content:center;margin-top:16px}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .swiper-pagination-bullet,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .zenithium-blocks-carousel-dot{background-color:#cbd5e1;border:none;border-radius:50%;cursor:pointer;height:10px;opacity:1;padding:0;transition:all .3s ease;width:10px}.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .swiper-pagination-bullet.is-active,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .swiper-pagination-bullet.swiper-pagination-bullet-active,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .zenithium-blocks-carousel-dot.is-active,.zenithium-blocks-carousel-wrapper .zenithium-blocks-carousel-dots .zenithium-blocks-carousel-dot.swiper-pagination-bullet-active{background-color:var(--zb-dot-color,#2563eb);border-radius:12px;width:24px}
  • zenithium-blocks/trunk/build/blocks/carousel/view.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array(), 'version' => '7028d6a820251536ec8a');
     1<?php return array('dependencies' => array(), 'version' => 'eaba1bc67674b1d2114f');
  • zenithium-blocks/trunk/build/blocks/carousel/view.js

    r3640847 r3769770  
    1 (()=>{"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={});const a=["__proto__","constructor","prototype"];Object.keys(i).filter(e=>a.indexOf(e)<0).forEach(a=>{void 0===s[a]?s[a]=i[a]:e(i[a])&&e(s[a])&&Object.keys(i[a]).length>0&&t(s[a],i[a])})}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const a={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,a),e}function n(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function l(){return Date.now()}function o(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function d(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let s=1;s<arguments.length;s+=1){const i=s<0||arguments.length<=s?void 0:arguments[s];if(null!=i&&!d(i)){const s=Object.keys(Object(i)).filter(e=>t.indexOf(e)<0);for(let t=0,a=s.length;t<a;t+=1){const a=s[t],r=Object.getOwnPropertyDescriptor(i,a);void 0!==r&&r.enumerable&&(o(e[a])&&o(i[a])?i[a].__swiper__?e[a]=i[a]:c(e[a],i[a]):!o(e[a])&&o(i[a])?(e[a]={},i[a].__swiper__?e[a]=i[a]:c(e[a],i[a])):e[a]=i[a])}}}return e}function p(e,t,s){e.style.setProperty(t,s)}function u(e){let{swiper:t,targetPosition:s,side:i}=e;const a=r(),n=-t.translate;let l,o=null;const d=t.params.speed;t.wrapperEl.style.scrollSnapType="none",a.cancelAnimationFrame(t.cssModeFrameID);const c=s>n?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout(()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})}),void a.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=a.requestAnimationFrame(u)};u()}function m(e,t){void 0===t&&(t="");const s=r(),i=[...e.children];return s.HTMLSlotElement&&e instanceof HTMLSlotElement&&i.push(...e.assignedElements()),t?i.filter(e=>e.matches(t)):i}function h(e){try{return void console.warn(e)}catch(e){}}function f(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter(e=>!!e.trim())}(t)),s}function g(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function v(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}function b(e,t,s){const i=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function y(e){return(Array.isArray(e)?e:[e]).filter(e=>!!e)}function S(e,t){void 0===t&&(t=""),"undefined"!=typeof trustedTypes?e.innerHTML=trustedTypes.createPolicy("html",{createHTML:e=>e}).createHTML(t):e.innerHTML=t}let T,E,x;function C(){return T||(T=function(){const e=r(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),T}function M(e){return void 0===e&&(e={}),E||(E=function(e){let{userAgent:t}=void 0===e?{}:e;const s=C(),i=r(),a=i.navigator.platform,n=t||i.navigator.userAgent,l={ios:!1,android:!1},o=i.screen.width,d=i.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===a;let f="MacIntel"===a;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!h&&(l.os="android",l.android=!0),(p||m||u)&&(l.os="ios",l.ios=!0),l}(e)),E}function P(){return x||(x=function(){const e=r(),t=M();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map(e=>Number(e));s=e<16||16===e&&i<2}}const a=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=i();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||a&&t.ios,isWebView:a}}()),x}var L={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const a=s?"unshift":"push";return e.split(" ").forEach(e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][a](t)}),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function a(){i.off(e,a),a.__emitterProxy&&delete a.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n<s;n++)r[n]=arguments[n];t.apply(i,r)}return a.__emitterProxy=t,i.on(e,a,s)},onAny(e,t){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof e)return s;const i=t?"unshift":"push";return s.eventsAnyListeners.indexOf(e)<0&&s.eventsAnyListeners[i](e),s},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const s=t.eventsAnyListeners.indexOf(e);return s>=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach(e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach((i,a)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(a,1)})}),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var a=arguments.length,r=new Array(a),n=0;n<a;n++)r[n]=arguments[n];return"string"==typeof r[0]||Array.isArray(r[0])?(t=r[0],s=r.slice(1,r.length),i=e):(t=r[0].events,s=r[0].data,i=r[0].context||e),s.unshift(i),(Array.isArray(t)?t:t.split(" ")).forEach(t=>{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach(e=>{e.apply(i,[t,...s])}),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach(e=>{e.apply(i,s)})}),e}};const k=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)},I=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)},O=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())})),t&&t.remove()}},A=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},z=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),a=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=a,r=[s-t];return r.push(...Array.from({length:t}).map((e,t)=>s+i+t)),void e.slides.forEach((t,s)=>{r.includes(t.column)&&A(e,s)})}const r=a+i-1;if(e.params.rewind||e.params.loop)for(let i=a-t;i<=r+t;i+=1){const t=(i%s+s)%s;(t<a||t>r)&&A(e,t)}else for(let i=Math.max(a-t,0);i<=Math.min(r+t,s-1);i+=1)i!==a&&(i>r||i<a)&&A(e,i)};var G={updateSize:function(){const e=this;let t,s;const i=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:i.clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:i.clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(g(i,"padding-left")||0,10)-parseInt(g(i,"padding-right")||0,10),s=s-parseInt(g(i,"padding-top")||0,10)-parseInt(g(i,"padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))},updateSlides:function(){const e=this;function t(t,s){return parseFloat(t.getPropertyValue(e.getDirectionLabel(s))||0)}const s=e.params,{wrapperEl:i,slidesEl:a,size:r,rtlTranslate:n,wrongRTL:l}=e,o=e.virtual&&s.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=m(a,`.${e.params.slideClass}, swiper-slide`),u=o?e.virtual.slides.length:c.length;let h=[];const f=[],v=[];let w=s.slidesOffsetBefore;"function"==typeof w&&(w=s.slidesOffsetBefore.call(e));let y=s.slidesOffsetAfter;"function"==typeof y&&(y=s.slidesOffsetAfter.call(e));const S=e.snapGrid.length,T=e.slidesGrid.length;let E=s.spaceBetween,x=-w,C=0,M=0;if(void 0===r)return;"string"==typeof E&&E.indexOf("%")>=0?E=parseFloat(E.replace("%",""))/100*r:"string"==typeof E&&(E=parseFloat(E)),e.virtualSize=-E,c.forEach(e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""}),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const k="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter(e=>void 0!==s.breakpoints[e].slidesPerView).length>0;for(let i=0;i<u;i+=1){let a;if(L=0,c[i]&&(a=c[i]),P&&e.grid.updateSlide(i,a,c),!c[i]||"none"!==g(a,"display")){if("auto"===s.slidesPerView){k&&(c[i].style[e.getDirectionLabel("width")]="");const r=getComputedStyle(a),n=a.style.transform,l=a.style.webkitTransform;if(n&&(a.style.transform="none"),l&&(a.style.webkitTransform="none"),s.roundLengths)L=e.isHorizontal()?b(a,"width",!0):b(a,"height",!0);else{const e=t(r,"width"),s=t(r,"padding-left"),i=t(r,"padding-right"),n=t(r,"margin-left"),l=t(r,"margin-right"),o=r.getPropertyValue("box-sizing");if(o&&"border-box"===o)L=e+n+l;else{const{clientWidth:t,offsetWidth:r}=a;L=e+s+i+n+l+(r-t)}}n&&(a.style.transform=n),l&&(a.style.webkitTransform=l),s.roundLengths&&(L=Math.floor(L))}else L=(r-(s.slidesPerView-1)*E)/s.slidesPerView,s.roundLengths&&(L=Math.floor(L)),c[i]&&(c[i].style[e.getDirectionLabel("width")]=`${L}px`);c[i]&&(c[i].swiperSlideSize=L),v.push(L),s.centeredSlides?(x=x+L/2+C/2+E,0===C&&0!==i&&(x=x-r/2-E),0===i&&(x=x-r/2-E),Math.abs(x)<.001&&(x=0),s.roundLengths&&(x=Math.floor(x)),M%s.slidesPerGroup===0&&h.push(x),f.push(x)):(s.roundLengths&&(x=Math.floor(x)),(M-Math.min(e.params.slidesPerGroupSkip,M))%e.params.slidesPerGroup===0&&h.push(x),f.push(x),x=x+L+E),e.virtualSize+=L+E,C=L,M+=1}}if(e.virtualSize=Math.max(e.virtualSize,r)+y,n&&l&&("slide"===s.effect||"coverflow"===s.effect)&&(i.style.width=`${e.virtualSize+E}px`),s.setWrapperSize&&(i.style[e.getDirectionLabel("width")]=`${e.virtualSize+E}px`),P&&e.grid.updateWrapperSize(L,h),!s.centeredSlides){const t=[];for(let i=0;i<h.length;i+=1){let a=h[i];s.roundLengths&&(a=Math.floor(a)),h[i]<=e.virtualSize-r&&t.push(a)}h=t,Math.floor(e.virtualSize-r)-Math.floor(h[h.length-1])>1&&h.push(e.virtualSize-r)}if(o&&s.loop){const t=v[0]+E;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),a=t*s.slidesPerGroup;for(let e=0;e<i;e+=1)h.push(h[h.length-1]+a)}for(let i=0;i<e.virtual.slidesBefore+e.virtual.slidesAfter;i+=1)1===s.slidesPerGroup&&h.push(h[h.length-1]+t),f.push(f[f.length-1]+t),e.virtualSize+=t}if(0===h.length&&(h=[0]),0!==E){const t=e.isHorizontal()&&n?"marginLeft":e.getDirectionLabel("marginRight");c.filter((e,t)=>!(s.cssMode&&!s.loop)||t!==c.length-1).forEach(e=>{e.style[t]=`${E}px`})}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;v.forEach(t=>{e+=t+(E||0)}),e-=E;const t=e>r?e-r:0;h=h.map(e=>e<=0?-w:e>t?t+y:e)}if(s.centerInsufficientSlides){let e=0;v.forEach(t=>{e+=t+(E||0)}),e-=E;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t<r){const s=(r-e-t)/2;h.forEach((e,t)=>{h[t]=e-s}),f.forEach((e,t)=>{f[t]=e+s})}}if(Object.assign(e,{slides:c,snapGrid:h,slidesGrid:f,slidesSizesGrid:v}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-h[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-v[v.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map(e=>e+t),e.slidesGrid=e.slidesGrid.map(e=>e+s)}if(u!==d&&e.emit("slidesLengthChange"),h.length!==S&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),f.length!==T&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let a,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach(e=>{s.push(e)});else for(a=0;a<Math.ceil(t.params.slidesPerView);a+=1){const e=t.activeIndex+a;if(e>t.slides.length&&!i)break;s.push(n(e))}else s.push(n(t.activeIndex));for(a=0;a<s.length;a+=1)if(void 0!==s[a]){const e=s[a].offsetHeight;r=e>r?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i<t.length;i+=1)t[i].swiperSlideOffset=(e.isHorizontal()?t[i].offsetLeft:t[i].offsetTop)-s-e.cssOverflowAdjustment()},updateSlidesProgress:function(e){void 0===e&&(e=this&&this.translate||0);const t=this,s=t.params,{slides:i,rtlTranslate:a,snapGrid:r}=t;if(0===i.length)return;void 0===i[0].swiperSlideOffset&&t.updateSlidesOffset();let n=-e;a&&(n=e),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e<i.length;e+=1){const o=i[e];let d=o.swiperSlideOffset;s.cssMode&&s.centeredSlides&&(d-=i[0].swiperSlideOffset);const c=(n+(s.centeredSlides?t.minTranslate():0)-d)/(o.swiperSlideSize+l),p=(n-r[0]+(s.centeredSlides?t.minTranslate():0)-d)/(o.swiperSlideSize+l),u=-(n-d),m=u+t.slidesSizesGrid[e],h=u>=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u<t.size-1||m>1&&m<=t.size||u<=0&&m>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),k(o,f,s.slideVisibleClass),k(o,h,s.slideFullyVisibleClass),o.progress=a?-c:c,o.originalProgress=a?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:a,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===i)a=0,r=!0,n=!0;else{a=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||a<=0,n=l||a>=1,s&&(a=0),l&&(a=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),a=t.slidesGrid[s],r=t.slidesGrid[i],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=a?(o-a)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:a,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",a)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:a}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>m(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(r)if(s.loop){let t=a-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${a}"]`);else n?(o=t.find(e=>e.column===a),c=t.find(e=>e.column===a+1),d=t.find(e=>e.column===a-1)):o=t[a];o&&(n||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach(e=>{I(e,e===o,s.slideActiveClass),I(e,e===c,s.slideNextClass),I(e,e===d,s.slidePrevClass)}),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:a,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let a;for(let e=0;e<t.length;e+=1)void 0!==t[e+1]?i>=t[e]&&i<t[e+1]-(t[e+1]-t[e])/2?a=e:i>=t[e]&&i<t[e+1]&&(a=e+1):i>=t[e]&&(a=e);return s.normalizeSlideIndex&&(a<0||void 0===a)&&(a=0),a}(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(a.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/a.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&a.grid&&a.grid.rows>1;let u;if(t.virtual&&a.virtual.enabled&&a.loop)u=c(d);else if(p){const e=t.slides.find(e=>e.column===d);let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/a.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&z(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let a=e.closest(`.${i.slideClass}, swiper-slide`);!a&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach(e=>{!a&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(a=e)});let r,n=!1;if(a)for(let e=0;e<s.slides.length;e+=1)if(s.slides[e]===a){n=!0,r=e;break}if(!a||!n)return s.clickedSlide=void 0,void(s.clickedIndex=void 0);s.clickedSlide=a,s.virtual&&s.params.virtual.enabled?s.clickedIndex=parseInt(a.getAttribute("data-swiper-slide-index"),10):s.clickedIndex=r,i.slideToClickedSlide&&void 0!==s.clickedIndex&&s.clickedIndex!==s.activeIndex&&s.slideToClickedSlide()}};function D(e){let{swiper:t,runCallbacks:s,direction:i,step:a}=e;const{activeIndex:r,previousIndex:n}=t;let l=i;l||(l=r>n?"next":r<n?"prev":"reset"),t.emit(`transition${a}`),s&&"reset"===l?t.emit(`slideResetTransition${a}`):s&&r!==n&&(t.emit(`slideChangeTransition${a}`),"next"===l?t.emit(`slideNextTransition${a}`):t.emit(`slidePrevTransition${a}`))}var _={slideTo:function(e,t,s,i,a){void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e&&(e=parseInt(e,10));const r=this;let n=e;n<0&&(n=0);const{params:l,snapGrid:o,slidesGrid:d,previousIndex:c,activeIndex:p,rtlTranslate:m,wrapperEl:h,enabled:f}=r;if(!f&&!i&&!a||r.destroyed||r.animating&&l.preventInteractionOnTransition)return!1;void 0===t&&(t=r.params.speed);const g=Math.min(r.params.slidesPerGroupSkip,n);let v=g+Math.floor((n-g)/r.params.slidesPerGroup);v>=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e<d.length;e+=1){const t=-Math.floor(100*w),s=Math.floor(100*d[e]),i=Math.floor(100*d[e+1]);void 0!==d[e+1]?t>=s&&t<i-(i-s)/2?n=e:t>=s&&t<i&&(n=e+1):t>=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&(m?w>r.translate&&w>r.minTranslate():w<r.translate&&w<r.minTranslate()))return!1;if(!r.allowSlidePrev&&w>r.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n<p?"prev":"reset";const y=r.virtual&&r.params.virtual.enabled;if((!y||!a)&&(m&&-w===r.translate||!m&&w===r.translate))return r.updateActiveIndex(n),l.autoHeight&&r.updateAutoHeight(),r.updateSlidesClasses(),"slide"!==l.effect&&r.setTranslate(w),"reset"!==b&&(r.transitionStart(s,b),r.transitionEnd(s,b)),!1;if(l.cssMode){const e=r.isHorizontal(),s=m?w:-w;if(0===t)y&&(r.wrapperEl.style.scrollSnapType="none",r._immediateVirtual=!0),y&&!r._cssModeVirtualInitialSet&&r.params.initialSlide>0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{h[e?"scrollLeft":"scrollTop"]=s})):h[e?"scrollLeft":"scrollTop"]=s,y&&requestAnimationFrame(()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1});else{if(!r.support.smoothScroll)return u({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}const S=P().isSafari;return y&&!a&&S&&r.isElement&&r.virtual.update(!1,!1,n),r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,i),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e&&(e=parseInt(e,10));const a=this;if(a.destroyed)return;void 0===t&&(t=a.params.speed);const r=a.grid&&a.params.grid&&a.params.grid.rows>1;let n=e;if(a.params.loop)if(a.virtual&&a.params.virtual.enabled)n+=a.virtual.slidesBefore;else{let e;if(r){const t=n*a.params.grid.rows;e=a.slides.find(e=>1*e.getAttribute("data-swiper-slide-index")===t).column}else e=a.getSlideIndexByData(n);const t=r?Math.ceil(a.slides.length/a.params.grid.rows):a.slides.length,{centeredSlides:s}=a.params;let l=a.params.slidesPerView;"auto"===l?l=a.slidesPerViewDynamic():(l=Math.ceil(parseFloat(a.params.slidesPerView,10)),s&&l%2==0&&(l+=1));let o=t-e<l;if(s&&(o=o||e<Math.ceil(l/2)),i&&s&&"auto"!==a.params.slidesPerView&&!r&&(o=!1),o){const i=s?e<a.activeIndex?"prev":"next":e-a.activeIndex-1<a.params.slidesPerView?"next":"prev";a.loopFix({direction:i,slideTo:!0,activeSlideIndex:"next"===i?e+1:e-t+1,slideRealIndex:"next"===i?a.realIndex:void 0})}if(r){const e=n*a.params.grid.rows;n=a.slides.find(t=>1*t.getAttribute("data-swiper-slide-index")===e).column}else n=a.getSlideIndexByData(n)}return requestAnimationFrame(()=>{a.slideTo(n,t,s,i)}),a},slideNext:function(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:a,params:r,animating:n}=i;if(!a||i.destroyed)return i;void 0===e&&(e=i.params.speed);let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex<r.slidesPerGroupSkip?1:l,d=i.virtual&&r.virtual.enabled;if(r.loop){if(n&&!d&&r.loopPreventsSliding)return!1;if(i.loopFix({direction:"next"}),i._clientLeft=i.wrapperEl.clientLeft,i.activeIndex===i.slides.length-1&&r.cssMode)return requestAnimationFrame(()=>{i.slideTo(i.activeIndex+o,e,t,s)}),!0}return r.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const i=this,{params:a,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=i;if(!o||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&a.virtual.enabled;if(a.loop){if(d&&!c&&a.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?i.translate:-i.translate),m=r.map(e=>p(e)),h=a.freeMode&&a.freeMode.enabled;let f=r[m.indexOf(u)-1];if(void 0===f&&(a.cssMode||h)){let e;r.forEach((t,s)=>{u>=t&&(e=s)}),void 0!==e&&(f=h?r[e]:r[e>0?e-1:e])}let g=0;if(void 0!==f&&(g=n.indexOf(f),g<0&&(g=i.activeIndex-1),"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(g=g-i.slidesPerViewDynamic("previous",!0)+1,g=Math.max(g,0))),a.rewind&&i.isBeginning){const a=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(a,e,t,s)}return a.loop&&0===i.activeIndex&&a.cssMode?(requestAnimationFrame(()=>{i.slideTo(g,e,t,s)}),!0):i.slideTo(g,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const a=this;if(a.destroyed)return;void 0===e&&(e=a.params.speed);let r=a.activeIndex;const n=Math.min(a.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/a.params.slidesPerGroup),o=a.rtlTranslate?a.translate:-a.translate;if(o>=a.snapGrid[l]){const e=a.snapGrid[l];o-e>(a.snapGrid[l+1]-e)*i&&(r+=a.params.slidesPerGroup)}else{const e=a.snapGrid[l-1];o-e<=(a.snapGrid[l]-e)*i&&(r-=a.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,a.slidesGrid.length-1),a.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let a,r=e.getSlideIndexWhenGrid(e.clickedIndex);const l=e.isElement?"swiper-slide":`.${t.slideClass}`,o=e.grid&&e.params.grid&&e.params.grid.rows>1;if(t.loop){if(e.animating)return;a=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?e.slideToLoop(a):r>(o?(e.slides.length-i)/2-(e.params.grid.rows-1):e.slides.length-i)?(e.loopFix(),r=e.getSlideIndex(m(s,`${l}[data-swiper-slide-index="${a}"]`)[0]),n(()=>{e.slideTo(r)})):e.slideTo(r)}else e.slideTo(r)}},B={loopCreate:function(e,t){const s=this,{params:i,slidesEl:a}=s;if(!i.loop||s.virtual&&s.params.virtual.enabled)return;const r=()=>{m(a,`.${i.slideClass}, swiper-slide`).forEach((e,t)=>{e.setAttribute("data-swiper-slide-index",t)})},n=s.grid&&i.grid&&i.grid.rows>1;i.loopAddBlankSlides&&(i.slidesPerGroup>1||n)&&(()=>{const e=m(a,`.${i.slideBlankClass}`);e.forEach(e=>{e.remove()}),e.length>0&&(s.recalcSlides(),s.updateSlides())})();const l=i.slidesPerGroup*(n?i.grid.rows:1),o=s.slides.length%l!==0,d=n&&s.slides.length%i.grid.rows!==0,c=e=>{for(let t=0;t<e;t+=1){const e=s.isElement?f("swiper-slide",[i.slideBlankClass]):f("div",[i.slideClass,i.slideBlankClass]);s.slidesEl.append(e)}};o?(i.loopAddBlankSlides?(c(l-s.slides.length%l),s.recalcSlides(),s.updateSlides()):h("Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)"),r()):d?(i.loopAddBlankSlides?(c(i.grid.rows-s.slides.length%i.grid.rows),s.recalcSlides(),s.updateSlides()):h("Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)"),r()):r(),s.loopFix({slideRealIndex:e,direction:i.centeredSlides?void 0:"next",initial:t})},loopFix:function(e){let{slideRealIndex:t,slideTo:s=!0,direction:i,setTranslate:a,activeSlideIndex:r,initial:n,byController:l,byMousewheel:o}=void 0===e?{}:e;const d=this;if(!d.params.loop)return;d.emit("beforeLoopFix");const{slides:c,allowSlidePrev:p,allowSlideNext:u,slidesEl:m,params:f}=d,{centeredSlides:g,initialSlide:v}=f;if(d.allowSlidePrev=!0,d.allowSlideNext=!0,d.virtual&&f.virtual.enabled)return s&&(f.centeredSlides||0!==d.snapIndex?f.centeredSlides&&d.snapIndex<f.slidesPerView?d.slideTo(d.virtual.slides.length+d.snapIndex,0,!1,!0):d.snapIndex===d.snapGrid.length-1&&d.slideTo(d.virtual.slidesBefore,0,!1,!0):d.slideTo(d.virtual.slides.length,0,!1,!0)),d.allowSlidePrev=p,d.allowSlideNext=u,void d.emit("loopFix");let w=f.slidesPerView;"auto"===w?w=d.slidesPerViewDynamic():(w=Math.ceil(parseFloat(f.slidesPerView,10)),g&&w%2==0&&(w+=1));const b=f.slidesPerGroupAuto?w:f.slidesPerGroup;let y=g?Math.max(b,Math.ceil(w/2)):b;y%b!==0&&(y+=b-y%b),y+=f.loopAdditionalSlides,d.loopedSlides=y;const S=d.grid&&f.grid&&f.grid.rows>1;c.length<w+y||"cards"===d.params.effect&&c.length<w+2*y?h("Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters"):S&&"row"===f.grid.fill&&h("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`");const T=[],E=[],x=S?Math.ceil(c.length/f.grid.rows):c.length,C=n&&x-v<w&&!g;let M=C?v:d.activeIndex;void 0===r?r=d.getSlideIndex(c.find(e=>e.classList.contains(f.slideActiveClass))):M=r;const P="next"===i||!i,L="prev"===i||!i;let k=0,I=0;const O=(S?c[r].column:r)+(g&&void 0===a?-w/2+.5:0);if(O<y){k=Math.max(y-O,b);for(let e=0;e<y-O;e+=1){const t=e-Math.floor(e/x)*x;if(S){const e=x-t-1;for(let t=c.length-1;t>=0;t-=1)c[t].column===e&&T.push(t)}else T.push(x-t-1)}}else if(O+w>x-y){I=Math.max(O-(x-2*y),b),C&&(I=Math.max(I,w-x+v+1));for(let e=0;e<I;e+=1){const t=e-Math.floor(e/x)*x;S?c.forEach((e,s)=>{e.column===t&&E.push(s)}):E.push(t)}}if(d.__preventObserver__=!0,requestAnimationFrame(()=>{d.__preventObserver__=!1}),"cards"===d.params.effect&&c.length<w+2*y&&(E.includes(r)&&E.splice(E.indexOf(r),1),T.includes(r)&&T.splice(T.indexOf(r),1)),L&&T.forEach(e=>{c[e].swiperLoopMoveDOM=!0,m.prepend(c[e]),c[e].swiperLoopMoveDOM=!1}),P&&E.forEach(e=>{c[e].swiperLoopMoveDOM=!0,m.append(c[e]),c[e].swiperLoopMoveDOM=!1}),d.recalcSlides(),"auto"===f.slidesPerView?d.updateSlides():S&&(T.length>0&&L||E.length>0&&P)&&d.slides.forEach((e,t)=>{d.grid.updateSlide(t,e,d.slides)}),f.watchSlidesProgress&&d.updateSlidesOffset(),s)if(T.length>0&&L){if(void 0===t){const e=d.slidesGrid[M],t=d.slidesGrid[M+k]-e;o?d.setTranslate(d.translate-t):(d.slideTo(M+Math.ceil(k),0,!1,!0),a&&(d.touchEventsData.startTranslate=d.touchEventsData.startTranslate-t,d.touchEventsData.currentTranslate=d.touchEventsData.currentTranslate-t))}else if(a){const e=S?T.length/f.grid.rows:T.length;d.slideTo(d.activeIndex+e,0,!1,!0),d.touchEventsData.currentTranslate=d.translate}}else if(E.length>0&&P)if(void 0===t){const e=d.slidesGrid[M],t=d.slidesGrid[M-I]-e;o?d.setTranslate(d.translate-t):(d.slideTo(M-I,0,!1,!0),a&&(d.touchEventsData.startTranslate=d.touchEventsData.startTranslate-t,d.touchEventsData.currentTranslate=d.touchEventsData.currentTranslate-t))}else{const e=S?E.length/f.grid.rows:E.length;d.slideTo(d.activeIndex-e,0,!1,!0)}if(d.allowSlidePrev=p,d.allowSlideNext=u,d.controller&&d.controller.control&&!l){const e={slideRealIndex:t,direction:i,setTranslate:a,activeSlideIndex:r,byController:!0};Array.isArray(d.controller.control)?d.controller.control.forEach(t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===f.slidesPerView&&s})}):d.controller.control instanceof d.constructor&&d.controller.control.params.loop&&d.controller.control.loopFix({...e,slideTo:d.controller.control.params.slidesPerView===f.slidesPerView&&s})}d.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||!s||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach(e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e}),e.slides.forEach(e=>{e.removeAttribute("data-swiper-slide-index")}),i.forEach(e=>{s.append(e)}),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function $(e,t,s){const i=r(),{params:a}=e,n=a.edgeSwipeDetection,l=a.edgeSwipeThreshold;return!n||!(s<=l||s>=i.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function F(e){const t=this,s=i();let a=e;a.originalEvent&&(a=a.originalEvent);const n=t.touchEventsData;if("pointerdown"===a.type){if(null!==n.pointerId&&n.pointerId!==a.pointerId)return;n.pointerId=a.pointerId}else"touchstart"===a.type&&1===a.targetTouches.length&&(n.touchId=a.targetTouches[0].identifier);if("touchstart"===a.type)return void $(t,a,a.targetTouches[0].pageX);const{params:o,touches:d,enabled:c}=t;if(!c)return;if(!o.simulateTouch&&"mouse"===a.pointerType)return;if(t.animating&&o.preventInteractionOnTransition)return;!t.animating&&o.cssMode&&o.loop&&t.loopFix();let p=a.target;if("wrapper"===o.touchEventsTarget&&!function(e,t){const s=r();let i=t.contains(e);return!i&&s.HTMLSlotElement&&t instanceof HTMLSlotElement&&(i=[...t.assignedElements()].includes(e),i||(i=function(e,t){const s=[t];for(;s.length>0;){const t=s.shift();if(e===t)return!0;s.push(...t.children,...t.shadowRoot?t.shadowRoot.children:[],...t.assignedElements?t.assignedElements():[])}}(e,t))),i}(p,t.wrapperEl))return;if("which"in a&&3===a.which)return;if("button"in a&&a.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!o.noSwipingClass&&""!==o.noSwipingClass,m=a.composedPath?a.composedPath():a.path;u&&a.target&&a.target.shadowRoot&&m&&(p=m[0]);const h=o.noSwipingSelector?o.noSwipingSelector:`.${o.noSwipingClass}`,f=!(!a.target||!a.target.shadowRoot);if(o.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const a=s.closest(e);return a||s.getRootNode?a||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(o.swipeHandler&&!p.closest(o.swipeHandler))return;d.currentX=a.pageX,d.currentY=a.pageY;const g=d.currentX,v=d.currentY;if(!$(t,a,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=l(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,o.threshold>0&&(n.allowThresholdMove=!1);let w=!0;p.matches(n.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==p&&("mouse"===a.pointerType||"mouse"!==a.pointerType&&!p.matches(n.focusableElements))&&s.activeElement.blur();const b=w&&t.allowTouchMove&&o.touchStartPreventDefault;!o.touchStartForcePreventDefault&&!b||p.isContentEditable||a.preventDefault(),o.freeMode&&o.freeMode.enabled&&t.freeMode&&t.animating&&!o.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",a)}function N(e){const t=i(),s=this,a=s.touchEventsData,{params:r,touches:n,rtlTranslate:o,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==a.touchId)return;if(p.pointerId!==a.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].find(e=>e.identifier===a.touchId),!c||c.identifier!==a.touchId)return}else c=p;if(!a.isTouched)return void(a.startMoving&&a.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,m=c.pageY;if(p.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return p.target.matches(a.focusableElements)||(s.allowClick=!1),void(a.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),a.touchStartTime=l()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(m<n.startY&&s.translate<=s.maxTranslate()||m>n.startY&&s.translate>=s.minTranslate())return a.isTouched=!1,void(a.isMoved=!1)}else{if(o&&(u>n.startX&&-s.translate<=s.maxTranslate()||u<n.startX&&-s.translate>=s.minTranslate()))return;if(!o&&(u<n.startX&&s.translate<=s.maxTranslate()||u>n.startX&&s.translate>=s.minTranslate()))return}if(t.activeElement&&t.activeElement.matches(a.focusableElements)&&t.activeElement!==p.target&&"mouse"!==p.pointerType&&t.activeElement.blur(),t.activeElement&&p.target===t.activeElement&&p.target.matches(a.focusableElements))return a.isMoved=!0,void(s.allowClick=!1);a.allowTouchCallbacks&&s.emit("touchMove",p),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)<s.params.threshold)return;if(void 0===a.isScrolling){let e;s.isHorizontal()&&n.currentY===n.startY||s.isVertical()&&n.currentX===n.startX?a.isScrolling=!1:h*h+f*f>=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,a.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(a.isScrolling&&s.emit("touchMoveOpposite",p),void 0===a.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(a.startMoving=!0)),a.isScrolling||"touchmove"===p.type&&a.preventTouchMoveFromPointerMove)return void(a.isTouched=!1);if(!a.startMoving)return;s.allowClick=!1,!r.cssMode&&p.cancelable&&p.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&p.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(o?1:-1),v=Math.abs(v)*(o?1:-1)),n.diff=g,g*=r.touchRatio,o&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!a.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),a.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}a.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),!1!==r._loopSwapReset&&a.isMoved&&a.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:a.currentTranslate}),a.loopSwapReset=!0,void(a.startTranslate=a.currentTranslate);s.emit("sliderMove",p),a.isMoved=!0,a.currentTranslate=g+a.startTranslate;let S=!0,T=r.resistanceRatio;if(r.touchReleaseOnEdges&&(T=0),g>0?(b&&y&&a.allowThresholdMove&&a.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]-("auto"!==r.slidesPerView&&s.slides.length-r.slidesPerView>=2?s.slidesSizesGrid[s.activeIndex+1]+s.params.spaceBetween:0)-s.params.spaceBetween:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),a.currentTranslate>s.minTranslate()&&(S=!1,r.resistance&&(a.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+a.startTranslate+g)**T))):g<0&&(b&&y&&a.allowThresholdMove&&a.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween+("auto"!==r.slidesPerView&&s.slides.length-r.slidesPerView>=2?s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween:0):s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),a.currentTranslate<s.maxTranslate()&&(S=!1,r.resistance&&(a.currentTranslate=s.maxTranslate()+1-(s.maxTranslate()-a.startTranslate-g)**T))),S&&(p.preventedByNestedSwiper=!0),!s.allowSlideNext&&"next"===s.swipeDirection&&a.currentTranslate<a.startTranslate&&(a.currentTranslate=a.startTranslate),!s.allowSlidePrev&&"prev"===s.swipeDirection&&a.currentTranslate>a.startTranslate&&(a.currentTranslate=a.startTranslate),s.allowSlidePrev||s.allowSlideNext||(a.currentTranslate=a.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||a.allowThresholdMove))return void(a.currentTranslate=a.startTranslate);if(!a.allowThresholdMove)return a.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,a.currentTranslate=a.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(a.currentTranslate),s.setTranslate(a.currentTranslate))}function V(e){const t=this,s=t.touchEventsData;let i,a=e;if(a.originalEvent&&(a=a.originalEvent),"touchend"===a.type||"touchcancel"===a.type){if(i=[...a.changedTouches].find(e=>e.identifier===s.touchId),!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(a.pointerId!==s.pointerId)return;i=a}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(a.type)&&(!["pointercancel","contextmenu"].includes(a.type)||!t.browser.isSafari&&!t.browser.isWebView))return;s.pointerId=null,s.touchId=null;const{params:r,touches:o,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!r.simulateTouch&&"mouse"===a.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",a),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=l(),m=u-s.touchStartTime;if(t.allowClick){const e=a.path||a.composedPath&&a.composedPath();t.updateClickedSlide(e&&e[0]||a.target,e),t.emit("tap click",a),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",a)}if(s.lastClickTime=l(),n(()=>{t.destroyed||(t.allowClick=!0)}),!s.isTouched||!s.isMoved||!t.swipeDirection||0===o.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e<c.length;e+=e<r.slidesPerGroupSkip?1:r.slidesPerGroup){const t=e<r.slidesPerGroupSkip-1?1:r.slidesPerGroup;void 0!==c[e+t]?(f||h>=c[e]&&h<c[e+t])&&(g=e,v=c[e+t]-c[e]):(f||h>=c[e])&&(g=e,v=c[c.length-1]-c[c.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-c[g])/v,S=g<r.slidesPerGroupSkip-1?1:r.slidesPerGroup;if(m>r.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+S):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+S):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);!t.navigation||a.target!==t.navigation.nextEl&&a.target!==t.navigation.prevEl?("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+S),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g)):a.target===t.navigation.nextEl?t.slideTo(g+S):t.slideTo(g)}}function H(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:a,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout(()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()},500)),e.allowSlidePrev=a,e.allowSlideNext=i,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function R(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function q(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let a;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();a=0===r?0:(e.translate-e.minTranslate())/r,a!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function j(e){const t=this;O(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function W(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const X=(e,t)=>{const s=i(),{params:a,el:r,wrapperEl:n,device:l}=e,o=!!a.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;r&&"string"!=typeof r&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(a.preventClicks||a.preventClicksPropagation)&&r[d]("click",e.onClick,!0),a.cssMode&&n[d]("scroll",e.onScroll),a.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",H,!0):e[c]("observerUpdate",H,!0),r[d]("load",e.onLoad,{capture:!0}))},Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var U={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function K(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],a=s[i];"object"==typeof a&&null!==a?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in a?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const J={eventsEmitter:L,update:G,translate:{getTranslate:function(e){void 0===e&&(e=this.isHorizontal()?"x":"y");const{params:t,rtlTranslate:s,translate:i,wrapperEl:a}=this;if(t.virtualTranslate)return s?-i:i;if(t.cssMode)return i;let n=function(e,t){void 0===t&&(t="x");const s=r();let i,a,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(a=l.transform||l.webkitTransform,a.split(",").length>6&&(a=a.split(", ").map(e=>e.replace(",",".")).join(", ")),n=new s.WebKitCSSMatrix("none"===a?"":a)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=n.toString().split(",")),"x"===t&&(a=s.WebKitCSSMatrix?n.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(a=s.WebKitCSSMatrix?n.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),a||0}(a,e);return n+=this.cssOverflowAdjustment(),s&&(n=-n),n||0},setTranslate:function(e,t){const s=this,{rtlTranslate:i,params:a,wrapperEl:r,progress:n}=s;let l,o=0,d=0;s.isHorizontal()?o=i?-e:e:d=e,a.roundLengths&&(o=Math.floor(o),d=Math.floor(d)),s.previousTranslate=s.translate,s.translate=s.isHorizontal()?o:d,a.cssMode?r[s.isHorizontal()?"scrollLeft":"scrollTop"]=s.isHorizontal()?-o:-d:a.virtualTranslate||(s.isHorizontal()?o-=s.cssOverflowAdjustment():d-=s.cssOverflowAdjustment(),r.style.transform=`translate3d(${o}px, ${d}px, 0px)`);const c=s.maxTranslate()-s.minTranslate();l=0===c?0:(e-s.minTranslate())/c,l!==n&&s.updateProgress(e),s.emit("setTranslate",s.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e,t,s,i,a){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),void 0===i&&(i=!0);const r=this,{params:n,wrapperEl:l}=r;if(r.animating&&n.preventInteractionOnTransition)return!1;const o=r.minTranslate(),d=r.maxTranslate();let c;if(c=i&&e>o?o:i&&e<d?d:e,r.updateProgress(c),n.cssMode){const e=r.isHorizontal();if(0===t)l[e?"scrollLeft":"scrollTop"]=-c;else{if(!r.support.smoothScroll)return u({swiper:r,targetPosition:-c,side:e?"left":"top"}),!0;l.scrollTo({[e?"left":"top"]:-c,behavior:"smooth"})}return!0}return 0===t?(r.setTransition(0),r.setTranslate(c),s&&(r.emit("beforeTransitionStart",t,a),r.emit("transitionEnd"))):(r.setTransition(t),r.setTranslate(c),s&&(r.emit("beforeTransitionStart",t,a),r.emit("transitionStart")),r.animating||(r.animating=!0,r.onTranslateToWrapperTransitionEnd||(r.onTranslateToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.onTranslateToWrapperTransitionEnd=null,delete r.onTranslateToWrapperTransitionEnd,r.animating=!1,s&&r.emit("transitionEnd"))}),r.wrapperEl.addEventListener("transitionend",r.onTranslateToWrapperTransitionEnd))),!0}},transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),D({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),D({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:_,loop:B,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1})},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1}))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=F.bind(e),e.onTouchMove=N.bind(e),e.onTouchEnd=V.bind(e),e.onDocumentTouchStart=W.bind(e),t.cssMode&&(e.onScroll=q.bind(e)),e.onClick=R.bind(e),e.onLoad=j.bind(e),X(e,"on")},detachEvents:function(){X(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:a,el:r}=e,n=a.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=i(),o="window"!==a.breakpointsBase&&a.breakpointsBase?"container":a.breakpointsBase,d=["window","container"].includes(a.breakpointsBase)||!a.breakpointsBase?e.el:l.querySelector(a.breakpointsBase),p=e.getBreakpoint(n,o,d);if(!p||e.currentBreakpoint===p)return;const u=(p in n?n[p]:void 0)||e.originalParams,m=Y(e,a),h=Y(e,u),f=e.params.grabCursor,g=u.grabCursor,v=a.enabled;m&&!h?(r.classList.remove(`${a.containerModifierClass}grid`,`${a.containerModifierClass}grid-column`),e.emitContainerClasses()):!m&&h&&(r.classList.add(`${a.containerModifierClass}grid`),(u.grid.fill&&"column"===u.grid.fill||!u.grid.fill&&"column"===a.grid.fill)&&r.classList.add(`${a.containerModifierClass}grid-column`),e.emitContainerClasses()),f&&!g?e.unsetGrabCursor():!f&&g&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(t=>{if(void 0===u[t])return;const s=a[t]&&a[t].enabled,i=u[t]&&u[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()});const w=u.direction&&u.direction!==a.direction,b=a.loop&&(u.slidesPerView!==a.slidesPerView||w),y=a.loop;w&&s&&e.changeDirection(),c(e.params,u);const S=e.params.enabled,T=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),v&&!S?e.disable():!v&&S&&e.enable(),e.currentBreakpoint=p,e.emit("_beforeBreakpoint",u),s&&(b?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!y&&T?(e.loopCreate(t),e.updateSlides()):y&&!T&&e.loopDestroy()),e.emit("breakpoint",u)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const a=r(),n="window"===t?a.innerHeight:s.clientHeight,l=Object.keys(e).map(e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}});l.sort((e,t)=>parseInt(e.value,10)-parseInt(t.value,10));for(let e=0;e<l.length;e+=1){const{point:r,value:n}=l[e];"window"===t?a.matchMedia(`(min-width: ${n}px)`).matches&&(i=r):n<=s.clientWidth&&(i=r)}return i||"max"}},checkOverflow:{checkOverflow:function(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:i}=s;if(i){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*i;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:a,device:r}=e,n=function(e,t){const s=[];return e.forEach(e=>{"object"==typeof e?Object.keys(e).forEach(i=>{e[i]&&s.push(t+i)}):"string"==typeof e&&s.push(t+e)}),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),a.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},Q={};class Z{constructor(){let e,t;for(var s=arguments.length,a=new Array(s),r=0;r<s;r++)a[r]=arguments[r];1===a.length&&a[0].constructor&&"Object"===Object.prototype.toString.call(a[0]).slice(8,-1)?t=a[0]:[e,t]=a,t||(t={}),t=c({},t),e&&!t.el&&(t.el=e);const n=i();if(t.el&&"string"==typeof t.el&&n.querySelectorAll(t.el).length>1){const e=[];return n.querySelectorAll(t.el).forEach(s=>{const i=c({},t,{el:s});e.push(new Z(i))}),e}const l=this;l.__swiper__=!0,l.support=C(),l.device=M({userAgent:t.userAgent}),l.browser=P(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach(e=>{e({params:t,swiper:l,extendParams:K(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})});const d=c({},U,o);return l.params=c({},d,Q,t),l.originalParams=c({},l.params),l.passedParams=c({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach(e=>{l.on(e,l.params.on[e])}),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=v(m(t,`.${s.slideClass}, swiper-slide`)[0]);return v(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.find(t=>1*t.getAttribute("data-swiper-slide-index")===e))}getSlideIndexWhenGrid(e){return this.grid&&this.params.grid&&this.params.grid.rows>1&&("column"===this.params.grid.fill?e=Math.floor(e/this.params.grid.rows):"row"===this.params.grid.fill&&(e%=Math.ceil(this.slides.length/this.params.grid.rows))),e}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=m(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),a=(s.maxTranslate()-i)*e+i;s.translateTo(a,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter(t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter(e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach(s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)}),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:a,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?Math.ceil(i[l].swiperSlideSize):0;for(let s=l+1;s<i.length;s+=1)i[s]&&!e&&(t+=Math.ceil(i[s].swiperSlideSize),o+=1,t>n&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e<i.length;e+=1)(t?a[e]+r[e]-a[l]<n:a[e]-a[l]<n)&&(o+=1);else for(let e=l-1;e>=0;e-=1)a[l]-a[e]<n&&(o+=1);return o}update(){const e=this;if(!e||e.destroyed)return;const{snapGrid:t,params:s}=e;function i(){const t=e.rtlTranslate?-1*e.translate:e.translate,s=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(s),e.updateActiveIndex(),e.updateSlidesClasses()}let a;if(s.breakpoints&&e.setBreakpoint(),[...e.el.querySelectorAll('[loading="lazy"]')].forEach(t=>{t.complete&&O(e,t)}),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;a=e.slideTo(t.length-1,0,!1,!0)}else a=e.slideTo(e.activeIndex,0,!1,!0);a||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach(t=>{"vertical"===e?t.style.width="":t.style.height=""}),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let a=s&&s.shadowRoot&&s.shadowRoot.querySelector?s.shadowRoot.querySelector(i()):m(s,i())[0];return!a&&t.params.createElements&&(a=f("div",t.params.wrapperClass),s.append(a),m(s,`.${t.params.slideClass}`).forEach(e=>{a.append(e)})),Object.assign(t,{el:s,wrapperEl:a,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:a,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===g(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===g(s,"direction")),wrongRTL:"-webkit-box"===g(a,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(void 0,!0),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach(e=>{e.complete?O(t,e):e.addEventListener("load",e=>{O(t,e.target)})}),z(t),t.initialized=!0,z(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:a,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),a&&"string"!=typeof a&&a.removeAttribute("style"),r&&r.removeAttribute("style"),n&&n.length&&n.forEach(e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")})),s.emit("destroy"),Object.keys(s.eventsListeners).forEach(e=>{s.off(e)}),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach(e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}})}(s)),s.destroyed=!0),null}static extendDefaults(e){c(Q,e)}static get extendedDefaults(){return Q}static get defaults(){return U}static installModule(e){Z.prototype.__modules__||(Z.prototype.__modules__=[]);const t=Z.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach(e=>Z.installModule(e)),Z):(Z.installModule(e),Z)}}function ee(e,t,s,i){return e.params.createElements&&Object.keys(i).forEach(a=>{if(!s[a]&&!0===s.auto){let r=m(e.el,`.${i[a]}`)[0];r||(r=f("div",i[a]),r.className=i[a],e.el.append(r)),s[a]=r,t[a]=r}}),s}function te(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;function r(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e)||t.hostEl.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s&&s.length>1&&1===t.el.querySelectorAll(e).length?s=t.el.querySelector(e):s&&1===s.length&&(s=s[0])),e&&!s?e:s)}function n(e,s){const i=t.params.navigation;(e=y(e)).forEach(e=>{e&&(e.classList[s?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](i.lockClass))})}function l(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return n(s,!1),void n(e,!1);n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),a("navigationPrev"))}function d(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),a("navigationNext"))}function c(){const e=t.params.navigation;if(t.params.navigation=ee(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=r(e.nextEl),i=r(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:i}),s=y(s),i=y(i);const a=(s,i)=>{s&&s.addEventListener("click","next"===i?d:o),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach(e=>a(e,"next")),i.forEach(e=>a(e,"prev"))}function p(){let{nextEl:e,prevEl:s}=t.navigation;e=y(e),s=y(s);const i=(e,s)=>{e.removeEventListener("click","next"===s?d:o),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach(e=>i(e,"next")),s.forEach(e=>i(e,"prev"))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null},i("init",()=>{!1===t.params.navigation.enabled?u():(c(),l())}),i("toEdge fromEdge lock unlock",()=>{l()}),i("destroy",()=>{p()}),i("enable disable",()=>{let{nextEl:e,prevEl:s}=t.navigation;e=y(e),s=y(s),t.enabled?l():[...e,...s].filter(e=>!!e).forEach(e=>e.classList.add(t.params.navigation.lockClass))}),i("click",(e,s)=>{let{nextEl:i,prevEl:r}=t.navigation;i=y(i),r=y(r);const n=s.target;let l=r.includes(n)||i.includes(n);if(t.isElement&&!l){const e=s.path||s.composedPath&&s.composedPath();e&&(l=e.find(e=>i.includes(e)||r.includes(e)))}if(t.params.navigation.hideOnClick&&!l){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;i.length?e=i[0].classList.contains(t.params.navigation.hiddenClass):r.length&&(e=r[0].classList.contains(t.params.navigation.hiddenClass)),a(!0===e?"navigationShow":"navigationHide"),[...i,...r].filter(e=>!!e).forEach(e=>e.classList.toggle(t.params.navigation.hiddenClass))}});const u=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),p()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),c(),l()},disable:u,update:l,init:c,destroy:p})}function se(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/()[\]])/g,"\\$1").replace(/ /g,".")}`}function ie(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function d(e,s){const{bulletActiveClass:i}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${i}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${i}-${s}-${s}`))}function c(e){const s=e.target.closest(se(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const i=v(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===i)return;const e=(a=t.realIndex,r=i,(r%=n=t.slides.length)===1+(a%=n)?"next":r===a-1?"previous":void 0);"next"===e?t.slideNext():"previous"===e?t.slidePrev():t.slideToLoop(i)}else t.slideTo(i);var a,r,n}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;let i,r,c=t.pagination.el;c=y(c);const p=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,u=t.params.loop?Math.ceil(p/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,i=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(i=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,i=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let o,p,u;if(s.dynamicBullets&&(n=b(a[0],t.isHorizontal()?"width":"height",!0),c.forEach(e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"}),s.dynamicMainBullets>1&&void 0!==r&&(l+=i-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(i-l,0),p=o+(Math.min(a.length,s.dynamicMainBullets)-1),u=(p+o)/2),a.forEach(e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map(e=>`${s.bulletActiveClass}${e}`)].map(e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e).flat();e.classList.remove(...t)}),c.length>1)a.forEach(e=>{const a=v(e);a===i?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(a>=o&&a<=p&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),a===o&&d(e,"prev"),a===p&&d(e,"next"))});else{const e=a[i];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&a.forEach((e,t)=>{e.setAttribute("part",t===i?"bullet-active":"bullet")}),s.dynamicBullets){const e=a[o],t=a[p];for(let e=o;e<=p;e+=1)a[e]&&a[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));d(e,"prev"),d(t,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.forEach(e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`})}}c.forEach((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(se(s.currentClass)).forEach(e=>{e.textContent=s.formatFractionCurrent(i+1)}),e.querySelectorAll(se(s.totalClass)).forEach(e=>{e.textContent=s.formatFractionTotal(u)})),"progressbar"===s.type){let a;a=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(i+1)/u;let n=1,l=1;"horizontal"===a?n=r:l=r,e.querySelectorAll(se(s.progressbarFillClass)).forEach(e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`})}"custom"===s.type&&s.renderCustom?(S(e,s.renderCustom(t,i+1,u)),0===r&&a("paginationRender",e)):(0===r&&a("paginationRender",e),a("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)})}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let i=t.pagination.el;i=y(i);let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&i>s&&(i=s);for(let s=0;s<i;s+=1)e.renderBullet?r+=e.renderBullet.call(t,s,e.bulletClass):r+=`<${e.bulletElement} ${t.isElement?'part="bullet"':""} class="${e.bulletClass}"></${e.bulletElement}>`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):`<span class="${e.currentClass}"></span> / <span class="${e.totalClass}"></span>`),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):`<span class="${e.progressbarFillClass}"></span>`),t.pagination.bullets=[],i.forEach(s=>{"custom"!==e.type&&S(s,r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(se(e.bulletClass)))}),"custom"!==e.type&&a("paginationRender",i[0])}function m(){t.params.pagination=ee(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.find(e=>w(e,".swiper")[0]===t.el))),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=y(s),s.forEach(s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),t.enabled||s.classList.add(e.lockClass)}))}function h(){const e=t.params.pagination;if(o())return;let s=t.pagination.el;s&&(s=y(s),s.forEach(s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))})),t.pagination.bullets&&t.pagination.bullets.forEach(t=>t.classList.remove(...e.bulletActiveClass.split(" ")))}i("changeDirection",()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=y(s),s.forEach(s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)})}),i("init",()=>{!1===t.params.pagination.enabled?f():(m(),u(),p())}),i("activeIndexChange",()=>{void 0===t.snapIndex&&p()}),i("snapIndexChange",()=>{p()}),i("snapGridLengthChange",()=>{u(),p()}),i("destroy",()=>{h()}),i("enable disable",()=>{let{el:e}=t.pagination;e&&(e=y(e),e.forEach(e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass)))}),i("lock unlock",()=>{p()}),i("click",(e,s)=>{const i=s.target,r=y(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!i.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&i===t.navigation.nextEl||t.navigation.prevEl&&i===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);a(!0===e?"paginationShow":"paginationHide"),r.forEach(e=>e.classList.toggle(t.params.pagination.hiddenClass))}});const f=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=y(e),e.forEach(e=>e.classList.add(t.params.pagination.paginationDisabledClass))),h()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=y(e),e.forEach(e=>e.classList.remove(t.params.pagination.paginationDisabledClass))),m(),u(),p()},disable:f,render:u,update:p,init:m,destroy:h})}function ae(e){let t,s,{swiper:a,extendParams:r,on:n,emit:l,params:o}=e;a.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,c,p,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){a&&!a.destroyed&&a.wrapperEl&&e.target===a.wrapperEl&&(a.wrapperEl.removeEventListener("transitionend",y),g||e.detail&&e.detail.bySwiperTouchMove||M())}const S=()=>{if(a.destroyed||!a.autoplay.running)return;a.autoplay.paused?c=!0:c&&(w=d,c=!1);const e=a.autoplay.paused?d:b+w-(new Date).getTime();a.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame(()=>{S()})},T=e=>{if(a.destroyed||!a.autoplay.running)return;cancelAnimationFrame(s),S();let i=void 0===e?a.params.autoplay.delay:e;v=a.params.autoplay.delay,w=a.params.autoplay.delay;const r=(()=>{let e;if(e=a.virtual&&a.params.virtual.enabled?a.slides.find(e=>e.classList.contains("swiper-slide-active")):a.slides[a.activeIndex],e)return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(i=r,v=r,w=r),d=i;const n=a.params.speed,o=()=>{a&&!a.destroyed&&(a.params.autoplay.reverseDirection?!a.isBeginning||a.params.loop||a.params.rewind?(a.slidePrev(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(a.slides.length-1,n,!0,!0),l("autoplay")):!a.isEnd||a.params.loop||a.params.rewind?(a.slideNext(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(0,n,!0,!0),l("autoplay")),a.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame(()=>{T()})))};return i>0?(clearTimeout(t),t=setTimeout(()=>{o()},i)):requestAnimationFrame(()=>{o()}),i},E=()=>{b=(new Date).getTime(),a.autoplay.running=!0,T(),l("autoplayStart")},x=()=>{a.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},C=(e,s)=>{if(a.destroyed||!a.autoplay.running)return;clearTimeout(t),e||(f=!0);const i=()=>{l("autoplayPause"),a.params.autoplay.waitForTransition?a.wrapperEl.addEventListener("transitionend",y):M()};if(a.autoplay.paused=!0,s)return h&&(d=a.params.autoplay.delay),h=!1,void i();const r=d||a.params.autoplay.delay;d=r-((new Date).getTime()-b),a.isEnd&&d<0&&!a.params.loop||(d<0&&(d=0),i())},M=()=>{a.isEnd&&d<0&&!a.params.loop||a.destroyed||!a.autoplay.running||(b=(new Date).getTime(),f?(f=!1,T(d)):T(),a.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(a.destroyed||!a.autoplay.running)return;const e=i();"hidden"===e.visibilityState&&(f=!0,C(!0)),"visible"===e.visibilityState&&M()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,a.animating||a.autoplay.paused||C(!0))},k=e=>{"mouse"===e.pointerType&&(g=!1,a.autoplay.paused&&M())};n("init",()=>{a.params.autoplay.enabled&&(a.params.autoplay.pauseOnMouseEnter&&(a.el.addEventListener("pointerenter",L),a.el.addEventListener("pointerleave",k)),i().addEventListener("visibilitychange",P),E())}),n("destroy",()=>{a.el&&"string"!=typeof a.el&&(a.el.removeEventListener("pointerenter",L),a.el.removeEventListener("pointerleave",k)),i().removeEventListener("visibilitychange",P),a.autoplay.running&&x()}),n("_freeModeStaticRelease",()=>{(u||f)&&M()}),n("_freeModeNoMomentumRelease",()=>{a.params.autoplay.disableOnInteraction?x():C(!0,!0)}),n("beforeTransitionStart",(e,t,s)=>{!a.destroyed&&a.autoplay.running&&(s||!a.params.autoplay.disableOnInteraction?C(!0,!0):x())}),n("sliderFirstMove",()=>{!a.destroyed&&a.autoplay.running&&(a.params.autoplay.disableOnInteraction?x():(p=!0,u=!1,f=!1,m=setTimeout(()=>{f=!0,u=!0,C(!0)},200)))}),n("touchEnd",()=>{if(!a.destroyed&&a.autoplay.running&&p){if(clearTimeout(m),clearTimeout(t),a.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&a.params.cssMode&&M(),u=!1,p=!1}}),n("slideChange",()=>{!a.destroyed&&a.autoplay.running&&(h=!0)}),Object.assign(a.autoplay,{start:E,stop:x,pause:C,resume:M})}Object.keys(J).forEach(e=>{Object.keys(J[e]).forEach(t=>{Z.prototype[t]=J[e][t]})}),Z.use([function(e){let{swiper:t,on:s,emit:i}=e;const a=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",()=>{t.params.resizeObserver&&void 0!==a.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver(e=>{l=a.requestAnimationFrame(()=>{const{width:s,height:i}=t;let a=s,r=i;e.forEach(e=>{let{contentBoxSize:s,contentRect:i,target:n}=e;n&&n!==t.el||(a=i?i.width:(s[0]||s).inlineSize,r=i?i.height:(s[0]||s).blockSize)}),a===s&&r===i||o()})}),n.observe(t.el)):(a.addEventListener("resize",o),a.addEventListener("orientationchange",d))}),s("destroy",()=>{l&&a.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),a.removeEventListener("resize",o),a.removeEventListener("orientationchange",d)})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const i=new(l.MutationObserver||l.WebkitMutationObserver)(e=>{if(t.__preventObserver__)return;if(1===e.length)return void a("observerUpdate",e[0]);const s=function(){a("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)});i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",()=>{if(t.params.observer){if(t.params.observeParents){const e=w(t.hostEl);for(let t=0;t<e.length;t+=1)o(e[t])}o(t.hostEl,{childList:t.params.observeSlideChildren}),o(t.wrapperEl,{attributes:!1})}}),i("destroy",()=>{n.forEach(e=>{e.disconnect()}),n.splice(0,n.length)})}]),document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".zenithium-blocks-carousel-wrapper").forEach(e=>{const t=e.querySelector(".zenithium-blocks-carousel-track");if(!t)return;if(e.classList.contains("swiper-initialized"))return;t.classList.add("swiper-wrapper");let s=e.querySelector(".zenithium-blocks-swiper-container");s||(s=document.createElement("div"),s.classList.add("zenithium-blocks-swiper-container","swiper"),t.parentNode.insertBefore(s,t),s.appendChild(t));const i=Array.from(t.children);i.forEach(e=>{e.classList.add("swiper-slide")});const a=parseInt(e.dataset.slidesPerView,10)||3,r="true"===e.dataset.autoplay,n=parseInt(e.dataset.autoplaySpeed,10)||4e3,l=e.querySelector(".zenithium-blocks-carousel-arrow.prev"),o=e.querySelector(".zenithium-blocks-carousel-arrow.next"),d=e.querySelector(".zenithium-blocks-carousel-dots"),c=[te,ie];r&&c.push(ae),new Z(s,{modules:c,loop:!0,loopedSlides:i.length,slidesPerView:1,spaceBetween:20,observer:!0,observeParents:!0,breakpoints:{640:{slidesPerView:Math.min(2,a)},1024:{slidesPerView:a}},navigation:{nextEl:o,prevEl:l},pagination:{el:d,clickable:!0,bulletClass:"zenithium-blocks-carousel-dot",bulletActiveClass:"is-active"},autoplay:!!r&&{delay:n,disableOnInteraction:!1,pauseOnMouseEnter:!0}}),e.classList.add("swiper-initialized")})})})();
     1(()=>{"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={});const a=["__proto__","constructor","prototype"];Object.keys(i).filter(e=>a.indexOf(e)<0).forEach(a=>{void 0===s[a]?s[a]=i[a]:e(i[a])&&e(s[a])&&Object.keys(i[a]).length>0&&t(s[a],i[a])})}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const a={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,a),e}function n(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function l(){return Date.now()}function o(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function d(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let s=1;s<arguments.length;s+=1){const i=s<0||arguments.length<=s?void 0:arguments[s];if(null!=i&&!d(i)){const s=Object.keys(Object(i)).filter(e=>t.indexOf(e)<0);for(let t=0,a=s.length;t<a;t+=1){const a=s[t],r=Object.getOwnPropertyDescriptor(i,a);void 0!==r&&r.enumerable&&(o(e[a])&&o(i[a])?i[a].__swiper__?e[a]=i[a]:c(e[a],i[a]):!o(e[a])&&o(i[a])?(e[a]={},i[a].__swiper__?e[a]=i[a]:c(e[a],i[a])):e[a]=i[a])}}}return e}function p(e,t,s){e.style.setProperty(t,s)}function u(e){let{swiper:t,targetPosition:s,side:i}=e;const a=r(),n=-t.translate;let l,o=null;const d=t.params.speed;t.wrapperEl.style.scrollSnapType="none",a.cancelAnimationFrame(t.cssModeFrameID);const c=s>n?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout(()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})}),void a.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=a.requestAnimationFrame(u)};u()}function m(e,t){void 0===t&&(t="");const s=r(),i=[...e.children];return s.HTMLSlotElement&&e instanceof HTMLSlotElement&&i.push(...e.assignedElements()),t?i.filter(e=>e.matches(t)):i}function h(e){try{return void console.warn(e)}catch(e){}}function f(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter(e=>!!e.trim())}(t)),s}function g(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function v(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}function b(e,t,s){const i=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function y(e){return(Array.isArray(e)?e:[e]).filter(e=>!!e)}function S(e,t){void 0===t&&(t=""),"undefined"!=typeof trustedTypes?e.innerHTML=trustedTypes.createPolicy("html",{createHTML:e=>e}).createHTML(t):e.innerHTML=t}let T,E,x;function C(){return T||(T=function(){const e=r(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),T}function M(e){return void 0===e&&(e={}),E||(E=function(e){let{userAgent:t}=void 0===e?{}:e;const s=C(),i=r(),a=i.navigator.platform,n=t||i.navigator.userAgent,l={ios:!1,android:!1},o=i.screen.width,d=i.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===a;let f="MacIntel"===a;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!h&&(l.os="android",l.android=!0),(p||m||u)&&(l.os="ios",l.ios=!0),l}(e)),E}function P(){return x||(x=function(){const e=r(),t=M();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map(e=>Number(e));s=e<16||16===e&&i<2}}const a=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=i();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||a&&t.ios,isWebView:a}}()),x}var L={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const a=s?"unshift":"push";return e.split(" ").forEach(e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][a](t)}),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function a(){i.off(e,a),a.__emitterProxy&&delete a.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n<s;n++)r[n]=arguments[n];t.apply(i,r)}return a.__emitterProxy=t,i.on(e,a,s)},onAny(e,t){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof e)return s;const i=t?"unshift":"push";return s.eventsAnyListeners.indexOf(e)<0&&s.eventsAnyListeners[i](e),s},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const s=t.eventsAnyListeners.indexOf(e);return s>=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach(e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach((i,a)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(a,1)})}),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var a=arguments.length,r=new Array(a),n=0;n<a;n++)r[n]=arguments[n];return"string"==typeof r[0]||Array.isArray(r[0])?(t=r[0],s=r.slice(1,r.length),i=e):(t=r[0].events,s=r[0].data,i=r[0].context||e),s.unshift(i),(Array.isArray(t)?t:t.split(" ")).forEach(t=>{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach(e=>{e.apply(i,[t,...s])}),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach(e=>{e.apply(i,s)})}),e}};const k=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)},I=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)},O=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame(()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())})),t&&t.remove()}},A=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},z=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),a=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=a,r=[s-t];return r.push(...Array.from({length:t}).map((e,t)=>s+i+t)),void e.slides.forEach((t,s)=>{r.includes(t.column)&&A(e,s)})}const r=a+i-1;if(e.params.rewind||e.params.loop)for(let i=a-t;i<=r+t;i+=1){const t=(i%s+s)%s;(t<a||t>r)&&A(e,t)}else for(let i=Math.max(a-t,0);i<=Math.min(r+t,s-1);i+=1)i!==a&&(i>r||i<a)&&A(e,i)};var G={updateSize:function(){const e=this;let t,s;const i=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:i.clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:i.clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(g(i,"padding-left")||0,10)-parseInt(g(i,"padding-right")||0,10),s=s-parseInt(g(i,"padding-top")||0,10)-parseInt(g(i,"padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))},updateSlides:function(){const e=this;function t(t,s){return parseFloat(t.getPropertyValue(e.getDirectionLabel(s))||0)}const s=e.params,{wrapperEl:i,slidesEl:a,size:r,rtlTranslate:n,wrongRTL:l}=e,o=e.virtual&&s.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=m(a,`.${e.params.slideClass}, swiper-slide`),u=o?e.virtual.slides.length:c.length;let h=[];const f=[],v=[];let w=s.slidesOffsetBefore;"function"==typeof w&&(w=s.slidesOffsetBefore.call(e));let y=s.slidesOffsetAfter;"function"==typeof y&&(y=s.slidesOffsetAfter.call(e));const S=e.snapGrid.length,T=e.slidesGrid.length;let E=s.spaceBetween,x=-w,C=0,M=0;if(void 0===r)return;"string"==typeof E&&E.indexOf("%")>=0?E=parseFloat(E.replace("%",""))/100*r:"string"==typeof E&&(E=parseFloat(E)),e.virtualSize=-E,c.forEach(e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""}),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const k="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter(e=>void 0!==s.breakpoints[e].slidesPerView).length>0;for(let i=0;i<u;i+=1){let a;if(L=0,c[i]&&(a=c[i]),P&&e.grid.updateSlide(i,a,c),!c[i]||"none"!==g(a,"display")){if("auto"===s.slidesPerView){k&&(c[i].style[e.getDirectionLabel("width")]="");const r=getComputedStyle(a),n=a.style.transform,l=a.style.webkitTransform;if(n&&(a.style.transform="none"),l&&(a.style.webkitTransform="none"),s.roundLengths)L=e.isHorizontal()?b(a,"width",!0):b(a,"height",!0);else{const e=t(r,"width"),s=t(r,"padding-left"),i=t(r,"padding-right"),n=t(r,"margin-left"),l=t(r,"margin-right"),o=r.getPropertyValue("box-sizing");if(o&&"border-box"===o)L=e+n+l;else{const{clientWidth:t,offsetWidth:r}=a;L=e+s+i+n+l+(r-t)}}n&&(a.style.transform=n),l&&(a.style.webkitTransform=l),s.roundLengths&&(L=Math.floor(L))}else L=(r-(s.slidesPerView-1)*E)/s.slidesPerView,s.roundLengths&&(L=Math.floor(L)),c[i]&&(c[i].style[e.getDirectionLabel("width")]=`${L}px`);c[i]&&(c[i].swiperSlideSize=L),v.push(L),s.centeredSlides?(x=x+L/2+C/2+E,0===C&&0!==i&&(x=x-r/2-E),0===i&&(x=x-r/2-E),Math.abs(x)<.001&&(x=0),s.roundLengths&&(x=Math.floor(x)),M%s.slidesPerGroup===0&&h.push(x),f.push(x)):(s.roundLengths&&(x=Math.floor(x)),(M-Math.min(e.params.slidesPerGroupSkip,M))%e.params.slidesPerGroup===0&&h.push(x),f.push(x),x=x+L+E),e.virtualSize+=L+E,C=L,M+=1}}if(e.virtualSize=Math.max(e.virtualSize,r)+y,n&&l&&("slide"===s.effect||"coverflow"===s.effect)&&(i.style.width=`${e.virtualSize+E}px`),s.setWrapperSize&&(i.style[e.getDirectionLabel("width")]=`${e.virtualSize+E}px`),P&&e.grid.updateWrapperSize(L,h),!s.centeredSlides){const t=[];for(let i=0;i<h.length;i+=1){let a=h[i];s.roundLengths&&(a=Math.floor(a)),h[i]<=e.virtualSize-r&&t.push(a)}h=t,Math.floor(e.virtualSize-r)-Math.floor(h[h.length-1])>1&&h.push(e.virtualSize-r)}if(o&&s.loop){const t=v[0]+E;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),a=t*s.slidesPerGroup;for(let e=0;e<i;e+=1)h.push(h[h.length-1]+a)}for(let i=0;i<e.virtual.slidesBefore+e.virtual.slidesAfter;i+=1)1===s.slidesPerGroup&&h.push(h[h.length-1]+t),f.push(f[f.length-1]+t),e.virtualSize+=t}if(0===h.length&&(h=[0]),0!==E){const t=e.isHorizontal()&&n?"marginLeft":e.getDirectionLabel("marginRight");c.filter((e,t)=>!(s.cssMode&&!s.loop)||t!==c.length-1).forEach(e=>{e.style[t]=`${E}px`})}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;v.forEach(t=>{e+=t+(E||0)}),e-=E;const t=e>r?e-r:0;h=h.map(e=>e<=0?-w:e>t?t+y:e)}if(s.centerInsufficientSlides){let e=0;v.forEach(t=>{e+=t+(E||0)}),e-=E;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t<r){const s=(r-e-t)/2;h.forEach((e,t)=>{h[t]=e-s}),f.forEach((e,t)=>{f[t]=e+s})}}if(Object.assign(e,{slides:c,snapGrid:h,slidesGrid:f,slidesSizesGrid:v}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-h[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-v[v.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map(e=>e+t),e.slidesGrid=e.slidesGrid.map(e=>e+s)}if(u!==d&&e.emit("slidesLengthChange"),h.length!==S&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),f.length!==T&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let a,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach(e=>{s.push(e)});else for(a=0;a<Math.ceil(t.params.slidesPerView);a+=1){const e=t.activeIndex+a;if(e>t.slides.length&&!i)break;s.push(n(e))}else s.push(n(t.activeIndex));for(a=0;a<s.length;a+=1)if(void 0!==s[a]){const e=s[a].offsetHeight;r=e>r?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i<t.length;i+=1)t[i].swiperSlideOffset=(e.isHorizontal()?t[i].offsetLeft:t[i].offsetTop)-s-e.cssOverflowAdjustment()},updateSlidesProgress:function(e){void 0===e&&(e=this&&this.translate||0);const t=this,s=t.params,{slides:i,rtlTranslate:a,snapGrid:r}=t;if(0===i.length)return;void 0===i[0].swiperSlideOffset&&t.updateSlidesOffset();let n=-e;a&&(n=e),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e<i.length;e+=1){const o=i[e];let d=o.swiperSlideOffset;s.cssMode&&s.centeredSlides&&(d-=i[0].swiperSlideOffset);const c=(n+(s.centeredSlides?t.minTranslate():0)-d)/(o.swiperSlideSize+l),p=(n-r[0]+(s.centeredSlides?t.minTranslate():0)-d)/(o.swiperSlideSize+l),u=-(n-d),m=u+t.slidesSizesGrid[e],h=u>=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u<t.size-1||m>1&&m<=t.size||u<=0&&m>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),k(o,f,s.slideVisibleClass),k(o,h,s.slideFullyVisibleClass),o.progress=a?-c:c,o.originalProgress=a?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:a,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===i)a=0,r=!0,n=!0;else{a=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||a<=0,n=l||a>=1,s&&(a=0),l&&(a=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),a=t.slidesGrid[s],r=t.slidesGrid[i],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=a?(o-a)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:a,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",a)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:a}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>m(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(r)if(s.loop){let t=a-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${a}"]`);else n?(o=t.find(e=>e.column===a),c=t.find(e=>e.column===a+1),d=t.find(e=>e.column===a-1)):o=t[a];o&&(n||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach(e=>{I(e,e===o,s.slideActiveClass),I(e,e===c,s.slideNextClass),I(e,e===d,s.slidePrevClass)}),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:a,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let a;for(let e=0;e<t.length;e+=1)void 0!==t[e+1]?i>=t[e]&&i<t[e+1]-(t[e+1]-t[e])/2?a=e:i>=t[e]&&i<t[e+1]&&(a=e+1):i>=t[e]&&(a=e);return s.normalizeSlideIndex&&(a<0||void 0===a)&&(a=0),a}(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(a.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/a.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&a.grid&&a.grid.rows>1;let u;if(t.virtual&&a.virtual.enabled&&a.loop)u=c(d);else if(p){const e=t.slides.find(e=>e.column===d);let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/a.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&z(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let a=e.closest(`.${i.slideClass}, swiper-slide`);!a&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach(e=>{!a&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(a=e)});let r,n=!1;if(a)for(let e=0;e<s.slides.length;e+=1)if(s.slides[e]===a){n=!0,r=e;break}if(!a||!n)return s.clickedSlide=void 0,void(s.clickedIndex=void 0);s.clickedSlide=a,s.virtual&&s.params.virtual.enabled?s.clickedIndex=parseInt(a.getAttribute("data-swiper-slide-index"),10):s.clickedIndex=r,i.slideToClickedSlide&&void 0!==s.clickedIndex&&s.clickedIndex!==s.activeIndex&&s.slideToClickedSlide()}};function D(e){let{swiper:t,runCallbacks:s,direction:i,step:a}=e;const{activeIndex:r,previousIndex:n}=t;let l=i;l||(l=r>n?"next":r<n?"prev":"reset"),t.emit(`transition${a}`),s&&"reset"===l?t.emit(`slideResetTransition${a}`):s&&r!==n&&(t.emit(`slideChangeTransition${a}`),"next"===l?t.emit(`slideNextTransition${a}`):t.emit(`slidePrevTransition${a}`))}var _={slideTo:function(e,t,s,i,a){void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e&&(e=parseInt(e,10));const r=this;let n=e;n<0&&(n=0);const{params:l,snapGrid:o,slidesGrid:d,previousIndex:c,activeIndex:p,rtlTranslate:m,wrapperEl:h,enabled:f}=r;if(!f&&!i&&!a||r.destroyed||r.animating&&l.preventInteractionOnTransition)return!1;void 0===t&&(t=r.params.speed);const g=Math.min(r.params.slidesPerGroupSkip,n);let v=g+Math.floor((n-g)/r.params.slidesPerGroup);v>=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e<d.length;e+=1){const t=-Math.floor(100*w),s=Math.floor(100*d[e]),i=Math.floor(100*d[e+1]);void 0!==d[e+1]?t>=s&&t<i-(i-s)/2?n=e:t>=s&&t<i&&(n=e+1):t>=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&(m?w>r.translate&&w>r.minTranslate():w<r.translate&&w<r.minTranslate()))return!1;if(!r.allowSlidePrev&&w>r.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n<p?"prev":"reset";const y=r.virtual&&r.params.virtual.enabled;if((!y||!a)&&(m&&-w===r.translate||!m&&w===r.translate))return r.updateActiveIndex(n),l.autoHeight&&r.updateAutoHeight(),r.updateSlidesClasses(),"slide"!==l.effect&&r.setTranslate(w),"reset"!==b&&(r.transitionStart(s,b),r.transitionEnd(s,b)),!1;if(l.cssMode){const e=r.isHorizontal(),s=m?w:-w;if(0===t)y&&(r.wrapperEl.style.scrollSnapType="none",r._immediateVirtual=!0),y&&!r._cssModeVirtualInitialSet&&r.params.initialSlide>0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame(()=>{h[e?"scrollLeft":"scrollTop"]=s})):h[e?"scrollLeft":"scrollTop"]=s,y&&requestAnimationFrame(()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1});else{if(!r.support.smoothScroll)return u({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}const S=P().isSafari;return y&&!a&&S&&r.isElement&&r.virtual.update(!1,!1,n),r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,i),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e&&(e=parseInt(e,10));const a=this;if(a.destroyed)return;void 0===t&&(t=a.params.speed);const r=a.grid&&a.params.grid&&a.params.grid.rows>1;let n=e;if(a.params.loop)if(a.virtual&&a.params.virtual.enabled)n+=a.virtual.slidesBefore;else{let e;if(r){const t=n*a.params.grid.rows;e=a.slides.find(e=>1*e.getAttribute("data-swiper-slide-index")===t).column}else e=a.getSlideIndexByData(n);const t=r?Math.ceil(a.slides.length/a.params.grid.rows):a.slides.length,{centeredSlides:s}=a.params;let l=a.params.slidesPerView;"auto"===l?l=a.slidesPerViewDynamic():(l=Math.ceil(parseFloat(a.params.slidesPerView,10)),s&&l%2==0&&(l+=1));let o=t-e<l;if(s&&(o=o||e<Math.ceil(l/2)),i&&s&&"auto"!==a.params.slidesPerView&&!r&&(o=!1),o){const i=s?e<a.activeIndex?"prev":"next":e-a.activeIndex-1<a.params.slidesPerView?"next":"prev";a.loopFix({direction:i,slideTo:!0,activeSlideIndex:"next"===i?e+1:e-t+1,slideRealIndex:"next"===i?a.realIndex:void 0})}if(r){const e=n*a.params.grid.rows;n=a.slides.find(t=>1*t.getAttribute("data-swiper-slide-index")===e).column}else n=a.getSlideIndexByData(n)}return requestAnimationFrame(()=>{a.slideTo(n,t,s,i)}),a},slideNext:function(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:a,params:r,animating:n}=i;if(!a||i.destroyed)return i;void 0===e&&(e=i.params.speed);let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex<r.slidesPerGroupSkip?1:l,d=i.virtual&&r.virtual.enabled;if(r.loop){if(n&&!d&&r.loopPreventsSliding)return!1;if(i.loopFix({direction:"next"}),i._clientLeft=i.wrapperEl.clientLeft,i.activeIndex===i.slides.length-1&&r.cssMode)return requestAnimationFrame(()=>{i.slideTo(i.activeIndex+o,e,t,s)}),!0}return r.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const i=this,{params:a,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=i;if(!o||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&a.virtual.enabled;if(a.loop){if(d&&!c&&a.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?i.translate:-i.translate),m=r.map(e=>p(e)),h=a.freeMode&&a.freeMode.enabled;let f=r[m.indexOf(u)-1];if(void 0===f&&(a.cssMode||h)){let e;r.forEach((t,s)=>{u>=t&&(e=s)}),void 0!==e&&(f=h?r[e]:r[e>0?e-1:e])}let g=0;if(void 0!==f&&(g=n.indexOf(f),g<0&&(g=i.activeIndex-1),"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(g=g-i.slidesPerViewDynamic("previous",!0)+1,g=Math.max(g,0))),a.rewind&&i.isBeginning){const a=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(a,e,t,s)}return a.loop&&0===i.activeIndex&&a.cssMode?(requestAnimationFrame(()=>{i.slideTo(g,e,t,s)}),!0):i.slideTo(g,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const a=this;if(a.destroyed)return;void 0===e&&(e=a.params.speed);let r=a.activeIndex;const n=Math.min(a.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/a.params.slidesPerGroup),o=a.rtlTranslate?a.translate:-a.translate;if(o>=a.snapGrid[l]){const e=a.snapGrid[l];o-e>(a.snapGrid[l+1]-e)*i&&(r+=a.params.slidesPerGroup)}else{const e=a.snapGrid[l-1];o-e<=(a.snapGrid[l]-e)*i&&(r-=a.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,a.slidesGrid.length-1),a.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let a,r=e.getSlideIndexWhenGrid(e.clickedIndex);const l=e.isElement?"swiper-slide":`.${t.slideClass}`,o=e.grid&&e.params.grid&&e.params.grid.rows>1;if(t.loop){if(e.animating)return;a=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?e.slideToLoop(a):r>(o?(e.slides.length-i)/2-(e.params.grid.rows-1):e.slides.length-i)?(e.loopFix(),r=e.getSlideIndex(m(s,`${l}[data-swiper-slide-index="${a}"]`)[0]),n(()=>{e.slideTo(r)})):e.slideTo(r)}else e.slideTo(r)}},B={loopCreate:function(e,t){const s=this,{params:i,slidesEl:a}=s;if(!i.loop||s.virtual&&s.params.virtual.enabled)return;const r=()=>{m(a,`.${i.slideClass}, swiper-slide`).forEach((e,t)=>{e.setAttribute("data-swiper-slide-index",t)})},n=s.grid&&i.grid&&i.grid.rows>1;i.loopAddBlankSlides&&(i.slidesPerGroup>1||n)&&(()=>{const e=m(a,`.${i.slideBlankClass}`);e.forEach(e=>{e.remove()}),e.length>0&&(s.recalcSlides(),s.updateSlides())})();const l=i.slidesPerGroup*(n?i.grid.rows:1),o=s.slides.length%l!==0,d=n&&s.slides.length%i.grid.rows!==0,c=e=>{for(let t=0;t<e;t+=1){const e=s.isElement?f("swiper-slide",[i.slideBlankClass]):f("div",[i.slideClass,i.slideBlankClass]);s.slidesEl.append(e)}};o?(i.loopAddBlankSlides?(c(l-s.slides.length%l),s.recalcSlides(),s.updateSlides()):h("Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)"),r()):d?(i.loopAddBlankSlides?(c(i.grid.rows-s.slides.length%i.grid.rows),s.recalcSlides(),s.updateSlides()):h("Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)"),r()):r(),s.loopFix({slideRealIndex:e,direction:i.centeredSlides?void 0:"next",initial:t})},loopFix:function(e){let{slideRealIndex:t,slideTo:s=!0,direction:i,setTranslate:a,activeSlideIndex:r,initial:n,byController:l,byMousewheel:o}=void 0===e?{}:e;const d=this;if(!d.params.loop)return;d.emit("beforeLoopFix");const{slides:c,allowSlidePrev:p,allowSlideNext:u,slidesEl:m,params:f}=d,{centeredSlides:g,initialSlide:v}=f;if(d.allowSlidePrev=!0,d.allowSlideNext=!0,d.virtual&&f.virtual.enabled)return s&&(f.centeredSlides||0!==d.snapIndex?f.centeredSlides&&d.snapIndex<f.slidesPerView?d.slideTo(d.virtual.slides.length+d.snapIndex,0,!1,!0):d.snapIndex===d.snapGrid.length-1&&d.slideTo(d.virtual.slidesBefore,0,!1,!0):d.slideTo(d.virtual.slides.length,0,!1,!0)),d.allowSlidePrev=p,d.allowSlideNext=u,void d.emit("loopFix");let w=f.slidesPerView;"auto"===w?w=d.slidesPerViewDynamic():(w=Math.ceil(parseFloat(f.slidesPerView,10)),g&&w%2==0&&(w+=1));const b=f.slidesPerGroupAuto?w:f.slidesPerGroup;let y=g?Math.max(b,Math.ceil(w/2)):b;y%b!==0&&(y+=b-y%b),y+=f.loopAdditionalSlides,d.loopedSlides=y;const S=d.grid&&f.grid&&f.grid.rows>1;c.length<w+y||"cards"===d.params.effect&&c.length<w+2*y?h("Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters"):S&&"row"===f.grid.fill&&h("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`");const T=[],E=[],x=S?Math.ceil(c.length/f.grid.rows):c.length,C=n&&x-v<w&&!g;let M=C?v:d.activeIndex;void 0===r?r=d.getSlideIndex(c.find(e=>e.classList.contains(f.slideActiveClass))):M=r;const P="next"===i||!i,L="prev"===i||!i;let k=0,I=0;const O=(S?c[r].column:r)+(g&&void 0===a?-w/2+.5:0);if(O<y){k=Math.max(y-O,b);for(let e=0;e<y-O;e+=1){const t=e-Math.floor(e/x)*x;if(S){const e=x-t-1;for(let t=c.length-1;t>=0;t-=1)c[t].column===e&&T.push(t)}else T.push(x-t-1)}}else if(O+w>x-y){I=Math.max(O-(x-2*y),b),C&&(I=Math.max(I,w-x+v+1));for(let e=0;e<I;e+=1){const t=e-Math.floor(e/x)*x;S?c.forEach((e,s)=>{e.column===t&&E.push(s)}):E.push(t)}}if(d.__preventObserver__=!0,requestAnimationFrame(()=>{d.__preventObserver__=!1}),"cards"===d.params.effect&&c.length<w+2*y&&(E.includes(r)&&E.splice(E.indexOf(r),1),T.includes(r)&&T.splice(T.indexOf(r),1)),L&&T.forEach(e=>{c[e].swiperLoopMoveDOM=!0,m.prepend(c[e]),c[e].swiperLoopMoveDOM=!1}),P&&E.forEach(e=>{c[e].swiperLoopMoveDOM=!0,m.append(c[e]),c[e].swiperLoopMoveDOM=!1}),d.recalcSlides(),"auto"===f.slidesPerView?d.updateSlides():S&&(T.length>0&&L||E.length>0&&P)&&d.slides.forEach((e,t)=>{d.grid.updateSlide(t,e,d.slides)}),f.watchSlidesProgress&&d.updateSlidesOffset(),s)if(T.length>0&&L){if(void 0===t){const e=d.slidesGrid[M],t=d.slidesGrid[M+k]-e;o?d.setTranslate(d.translate-t):(d.slideTo(M+Math.ceil(k),0,!1,!0),a&&(d.touchEventsData.startTranslate=d.touchEventsData.startTranslate-t,d.touchEventsData.currentTranslate=d.touchEventsData.currentTranslate-t))}else if(a){const e=S?T.length/f.grid.rows:T.length;d.slideTo(d.activeIndex+e,0,!1,!0),d.touchEventsData.currentTranslate=d.translate}}else if(E.length>0&&P)if(void 0===t){const e=d.slidesGrid[M],t=d.slidesGrid[M-I]-e;o?d.setTranslate(d.translate-t):(d.slideTo(M-I,0,!1,!0),a&&(d.touchEventsData.startTranslate=d.touchEventsData.startTranslate-t,d.touchEventsData.currentTranslate=d.touchEventsData.currentTranslate-t))}else{const e=S?E.length/f.grid.rows:E.length;d.slideTo(d.activeIndex-e,0,!1,!0)}if(d.allowSlidePrev=p,d.allowSlideNext=u,d.controller&&d.controller.control&&!l){const e={slideRealIndex:t,direction:i,setTranslate:a,activeSlideIndex:r,byController:!0};Array.isArray(d.controller.control)?d.controller.control.forEach(t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===f.slidesPerView&&s})}):d.controller.control instanceof d.constructor&&d.controller.control.params.loop&&d.controller.control.loopFix({...e,slideTo:d.controller.control.params.slidesPerView===f.slidesPerView&&s})}d.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||!s||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach(e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e}),e.slides.forEach(e=>{e.removeAttribute("data-swiper-slide-index")}),i.forEach(e=>{s.append(e)}),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function $(e,t,s){const i=r(),{params:a}=e,n=a.edgeSwipeDetection,l=a.edgeSwipeThreshold;return!n||!(s<=l||s>=i.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function F(e){const t=this,s=i();let a=e;a.originalEvent&&(a=a.originalEvent);const n=t.touchEventsData;if("pointerdown"===a.type){if(null!==n.pointerId&&n.pointerId!==a.pointerId)return;n.pointerId=a.pointerId}else"touchstart"===a.type&&1===a.targetTouches.length&&(n.touchId=a.targetTouches[0].identifier);if("touchstart"===a.type)return void $(t,a,a.targetTouches[0].pageX);const{params:o,touches:d,enabled:c}=t;if(!c)return;if(!o.simulateTouch&&"mouse"===a.pointerType)return;if(t.animating&&o.preventInteractionOnTransition)return;!t.animating&&o.cssMode&&o.loop&&t.loopFix();let p=a.target;if("wrapper"===o.touchEventsTarget&&!function(e,t){const s=r();let i=t.contains(e);return!i&&s.HTMLSlotElement&&t instanceof HTMLSlotElement&&(i=[...t.assignedElements()].includes(e),i||(i=function(e,t){const s=[t];for(;s.length>0;){const t=s.shift();if(e===t)return!0;s.push(...t.children,...t.shadowRoot?t.shadowRoot.children:[],...t.assignedElements?t.assignedElements():[])}}(e,t))),i}(p,t.wrapperEl))return;if("which"in a&&3===a.which)return;if("button"in a&&a.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!o.noSwipingClass&&""!==o.noSwipingClass,m=a.composedPath?a.composedPath():a.path;u&&a.target&&a.target.shadowRoot&&m&&(p=m[0]);const h=o.noSwipingSelector?o.noSwipingSelector:`.${o.noSwipingClass}`,f=!(!a.target||!a.target.shadowRoot);if(o.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const a=s.closest(e);return a||s.getRootNode?a||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(o.swipeHandler&&!p.closest(o.swipeHandler))return;d.currentX=a.pageX,d.currentY=a.pageY;const g=d.currentX,v=d.currentY;if(!$(t,a,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=l(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,o.threshold>0&&(n.allowThresholdMove=!1);let w=!0;p.matches(n.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==p&&("mouse"===a.pointerType||"mouse"!==a.pointerType&&!p.matches(n.focusableElements))&&s.activeElement.blur();const b=w&&t.allowTouchMove&&o.touchStartPreventDefault;!o.touchStartForcePreventDefault&&!b||p.isContentEditable||a.preventDefault(),o.freeMode&&o.freeMode.enabled&&t.freeMode&&t.animating&&!o.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",a)}function N(e){const t=i(),s=this,a=s.touchEventsData,{params:r,touches:n,rtlTranslate:o,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==a.touchId)return;if(p.pointerId!==a.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].find(e=>e.identifier===a.touchId),!c||c.identifier!==a.touchId)return}else c=p;if(!a.isTouched)return void(a.startMoving&&a.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,m=c.pageY;if(p.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return p.target.matches(a.focusableElements)||(s.allowClick=!1),void(a.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),a.touchStartTime=l()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(m<n.startY&&s.translate<=s.maxTranslate()||m>n.startY&&s.translate>=s.minTranslate())return a.isTouched=!1,void(a.isMoved=!1)}else{if(o&&(u>n.startX&&-s.translate<=s.maxTranslate()||u<n.startX&&-s.translate>=s.minTranslate()))return;if(!o&&(u<n.startX&&s.translate<=s.maxTranslate()||u>n.startX&&s.translate>=s.minTranslate()))return}if(t.activeElement&&t.activeElement.matches(a.focusableElements)&&t.activeElement!==p.target&&"mouse"!==p.pointerType&&t.activeElement.blur(),t.activeElement&&p.target===t.activeElement&&p.target.matches(a.focusableElements))return a.isMoved=!0,void(s.allowClick=!1);a.allowTouchCallbacks&&s.emit("touchMove",p),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)<s.params.threshold)return;if(void 0===a.isScrolling){let e;s.isHorizontal()&&n.currentY===n.startY||s.isVertical()&&n.currentX===n.startX?a.isScrolling=!1:h*h+f*f>=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,a.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(a.isScrolling&&s.emit("touchMoveOpposite",p),void 0===a.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(a.startMoving=!0)),a.isScrolling||"touchmove"===p.type&&a.preventTouchMoveFromPointerMove)return void(a.isTouched=!1);if(!a.startMoving)return;s.allowClick=!1,!r.cssMode&&p.cancelable&&p.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&p.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(o?1:-1),v=Math.abs(v)*(o?1:-1)),n.diff=g,g*=r.touchRatio,o&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!a.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),a.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}a.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),!1!==r._loopSwapReset&&a.isMoved&&a.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:a.currentTranslate}),a.loopSwapReset=!0,void(a.startTranslate=a.currentTranslate);s.emit("sliderMove",p),a.isMoved=!0,a.currentTranslate=g+a.startTranslate;let S=!0,T=r.resistanceRatio;if(r.touchReleaseOnEdges&&(T=0),g>0?(b&&y&&a.allowThresholdMove&&a.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]-("auto"!==r.slidesPerView&&s.slides.length-r.slidesPerView>=2?s.slidesSizesGrid[s.activeIndex+1]+s.params.spaceBetween:0)-s.params.spaceBetween:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),a.currentTranslate>s.minTranslate()&&(S=!1,r.resistance&&(a.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+a.startTranslate+g)**T))):g<0&&(b&&y&&a.allowThresholdMove&&a.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween+("auto"!==r.slidesPerView&&s.slides.length-r.slidesPerView>=2?s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween:0):s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),a.currentTranslate<s.maxTranslate()&&(S=!1,r.resistance&&(a.currentTranslate=s.maxTranslate()+1-(s.maxTranslate()-a.startTranslate-g)**T))),S&&(p.preventedByNestedSwiper=!0),!s.allowSlideNext&&"next"===s.swipeDirection&&a.currentTranslate<a.startTranslate&&(a.currentTranslate=a.startTranslate),!s.allowSlidePrev&&"prev"===s.swipeDirection&&a.currentTranslate>a.startTranslate&&(a.currentTranslate=a.startTranslate),s.allowSlidePrev||s.allowSlideNext||(a.currentTranslate=a.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||a.allowThresholdMove))return void(a.currentTranslate=a.startTranslate);if(!a.allowThresholdMove)return a.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,a.currentTranslate=a.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(a.currentTranslate),s.setTranslate(a.currentTranslate))}function V(e){const t=this,s=t.touchEventsData;let i,a=e;if(a.originalEvent&&(a=a.originalEvent),"touchend"===a.type||"touchcancel"===a.type){if(i=[...a.changedTouches].find(e=>e.identifier===s.touchId),!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(a.pointerId!==s.pointerId)return;i=a}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(a.type)&&(!["pointercancel","contextmenu"].includes(a.type)||!t.browser.isSafari&&!t.browser.isWebView))return;s.pointerId=null,s.touchId=null;const{params:r,touches:o,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!r.simulateTouch&&"mouse"===a.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",a),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=l(),m=u-s.touchStartTime;if(t.allowClick){const e=a.path||a.composedPath&&a.composedPath();t.updateClickedSlide(e&&e[0]||a.target,e),t.emit("tap click",a),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",a)}if(s.lastClickTime=l(),n(()=>{t.destroyed||(t.allowClick=!0)}),!s.isTouched||!s.isMoved||!t.swipeDirection||0===o.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e<c.length;e+=e<r.slidesPerGroupSkip?1:r.slidesPerGroup){const t=e<r.slidesPerGroupSkip-1?1:r.slidesPerGroup;void 0!==c[e+t]?(f||h>=c[e]&&h<c[e+t])&&(g=e,v=c[e+t]-c[e]):(f||h>=c[e])&&(g=e,v=c[c.length-1]-c[c.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-c[g])/v,S=g<r.slidesPerGroupSkip-1?1:r.slidesPerGroup;if(m>r.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+S):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+S):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);!t.navigation||a.target!==t.navigation.nextEl&&a.target!==t.navigation.prevEl?("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+S),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g)):a.target===t.navigation.nextEl?t.slideTo(g+S):t.slideTo(g)}}function H(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:a,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout(()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()},500)),e.allowSlidePrev=a,e.allowSlideNext=i,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function R(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function q(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let a;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();a=0===r?0:(e.translate-e.minTranslate())/r,a!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function j(e){const t=this;O(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function W(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const X=(e,t)=>{const s=i(),{params:a,el:r,wrapperEl:n,device:l}=e,o=!!a.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;r&&"string"!=typeof r&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(a.preventClicks||a.preventClicksPropagation)&&r[d]("click",e.onClick,!0),a.cssMode&&n[d]("scroll",e.onScroll),a.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",H,!0):e[c]("observerUpdate",H,!0),r[d]("load",e.onLoad,{capture:!0}))},Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var U={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function K(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],a=s[i];"object"==typeof a&&null!==a?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in a?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const J={eventsEmitter:L,update:G,translate:{getTranslate:function(e){void 0===e&&(e=this.isHorizontal()?"x":"y");const{params:t,rtlTranslate:s,translate:i,wrapperEl:a}=this;if(t.virtualTranslate)return s?-i:i;if(t.cssMode)return i;let n=function(e,t){void 0===t&&(t="x");const s=r();let i,a,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(a=l.transform||l.webkitTransform,a.split(",").length>6&&(a=a.split(", ").map(e=>e.replace(",",".")).join(", ")),n=new s.WebKitCSSMatrix("none"===a?"":a)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=n.toString().split(",")),"x"===t&&(a=s.WebKitCSSMatrix?n.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(a=s.WebKitCSSMatrix?n.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),a||0}(a,e);return n+=this.cssOverflowAdjustment(),s&&(n=-n),n||0},setTranslate:function(e,t){const s=this,{rtlTranslate:i,params:a,wrapperEl:r,progress:n}=s;let l,o=0,d=0;s.isHorizontal()?o=i?-e:e:d=e,a.roundLengths&&(o=Math.floor(o),d=Math.floor(d)),s.previousTranslate=s.translate,s.translate=s.isHorizontal()?o:d,a.cssMode?r[s.isHorizontal()?"scrollLeft":"scrollTop"]=s.isHorizontal()?-o:-d:a.virtualTranslate||(s.isHorizontal()?o-=s.cssOverflowAdjustment():d-=s.cssOverflowAdjustment(),r.style.transform=`translate3d(${o}px, ${d}px, 0px)`);const c=s.maxTranslate()-s.minTranslate();l=0===c?0:(e-s.minTranslate())/c,l!==n&&s.updateProgress(e),s.emit("setTranslate",s.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e,t,s,i,a){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),void 0===i&&(i=!0);const r=this,{params:n,wrapperEl:l}=r;if(r.animating&&n.preventInteractionOnTransition)return!1;const o=r.minTranslate(),d=r.maxTranslate();let c;if(c=i&&e>o?o:i&&e<d?d:e,r.updateProgress(c),n.cssMode){const e=r.isHorizontal();if(0===t)l[e?"scrollLeft":"scrollTop"]=-c;else{if(!r.support.smoothScroll)return u({swiper:r,targetPosition:-c,side:e?"left":"top"}),!0;l.scrollTo({[e?"left":"top"]:-c,behavior:"smooth"})}return!0}return 0===t?(r.setTransition(0),r.setTranslate(c),s&&(r.emit("beforeTransitionStart",t,a),r.emit("transitionEnd"))):(r.setTransition(t),r.setTranslate(c),s&&(r.emit("beforeTransitionStart",t,a),r.emit("transitionStart")),r.animating||(r.animating=!0,r.onTranslateToWrapperTransitionEnd||(r.onTranslateToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.onTranslateToWrapperTransitionEnd=null,delete r.onTranslateToWrapperTransitionEnd,r.animating=!1,s&&r.emit("transitionEnd"))}),r.wrapperEl.addEventListener("transitionend",r.onTranslateToWrapperTransitionEnd))),!0}},transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),D({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),D({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:_,loop:B,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame(()=>{t.__preventObserver__=!1})},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame(()=>{e.__preventObserver__=!1}))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=F.bind(e),e.onTouchMove=N.bind(e),e.onTouchEnd=V.bind(e),e.onDocumentTouchStart=W.bind(e),t.cssMode&&(e.onScroll=q.bind(e)),e.onClick=R.bind(e),e.onLoad=j.bind(e),X(e,"on")},detachEvents:function(){X(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:a,el:r}=e,n=a.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=i(),o="window"!==a.breakpointsBase&&a.breakpointsBase?"container":a.breakpointsBase,d=["window","container"].includes(a.breakpointsBase)||!a.breakpointsBase?e.el:l.querySelector(a.breakpointsBase),p=e.getBreakpoint(n,o,d);if(!p||e.currentBreakpoint===p)return;const u=(p in n?n[p]:void 0)||e.originalParams,m=Y(e,a),h=Y(e,u),f=e.params.grabCursor,g=u.grabCursor,v=a.enabled;m&&!h?(r.classList.remove(`${a.containerModifierClass}grid`,`${a.containerModifierClass}grid-column`),e.emitContainerClasses()):!m&&h&&(r.classList.add(`${a.containerModifierClass}grid`),(u.grid.fill&&"column"===u.grid.fill||!u.grid.fill&&"column"===a.grid.fill)&&r.classList.add(`${a.containerModifierClass}grid-column`),e.emitContainerClasses()),f&&!g?e.unsetGrabCursor():!f&&g&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach(t=>{if(void 0===u[t])return;const s=a[t]&&a[t].enabled,i=u[t]&&u[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()});const w=u.direction&&u.direction!==a.direction,b=a.loop&&(u.slidesPerView!==a.slidesPerView||w),y=a.loop;w&&s&&e.changeDirection(),c(e.params,u);const S=e.params.enabled,T=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),v&&!S?e.disable():!v&&S&&e.enable(),e.currentBreakpoint=p,e.emit("_beforeBreakpoint",u),s&&(b?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!y&&T?(e.loopCreate(t),e.updateSlides()):y&&!T&&e.loopDestroy()),e.emit("breakpoint",u)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const a=r(),n="window"===t?a.innerHeight:s.clientHeight,l=Object.keys(e).map(e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}});l.sort((e,t)=>parseInt(e.value,10)-parseInt(t.value,10));for(let e=0;e<l.length;e+=1){const{point:r,value:n}=l[e];"window"===t?a.matchMedia(`(min-width: ${n}px)`).matches&&(i=r):n<=s.clientWidth&&(i=r)}return i||"max"}},checkOverflow:{checkOverflow:function(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:i}=s;if(i){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*i;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:a,device:r}=e,n=function(e,t){const s=[];return e.forEach(e=>{"object"==typeof e?Object.keys(e).forEach(i=>{e[i]&&s.push(t+i)}):"string"==typeof e&&s.push(t+e)}),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),a.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},Q={};class Z{constructor(){let e,t;for(var s=arguments.length,a=new Array(s),r=0;r<s;r++)a[r]=arguments[r];1===a.length&&a[0].constructor&&"Object"===Object.prototype.toString.call(a[0]).slice(8,-1)?t=a[0]:[e,t]=a,t||(t={}),t=c({},t),e&&!t.el&&(t.el=e);const n=i();if(t.el&&"string"==typeof t.el&&n.querySelectorAll(t.el).length>1){const e=[];return n.querySelectorAll(t.el).forEach(s=>{const i=c({},t,{el:s});e.push(new Z(i))}),e}const l=this;l.__swiper__=!0,l.support=C(),l.device=M({userAgent:t.userAgent}),l.browser=P(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach(e=>{e({params:t,swiper:l,extendParams:K(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})});const d=c({},U,o);return l.params=c({},d,Q,t),l.originalParams=c({},l.params),l.passedParams=c({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach(e=>{l.on(e,l.params.on[e])}),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=v(m(t,`.${s.slideClass}, swiper-slide`)[0]);return v(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.find(t=>1*t.getAttribute("data-swiper-slide-index")===e))}getSlideIndexWhenGrid(e){return this.grid&&this.params.grid&&this.params.grid.rows>1&&("column"===this.params.grid.fill?e=Math.floor(e/this.params.grid.rows):"row"===this.params.grid.fill&&(e%=Math.ceil(this.slides.length/this.params.grid.rows))),e}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=m(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),a=(s.maxTranslate()-i)*e+i;s.translateTo(a,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter(t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter(e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach(s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)}),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:a,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?Math.ceil(i[l].swiperSlideSize):0;for(let s=l+1;s<i.length;s+=1)i[s]&&!e&&(t+=Math.ceil(i[s].swiperSlideSize),o+=1,t>n&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e<i.length;e+=1)(t?a[e]+r[e]-a[l]<n:a[e]-a[l]<n)&&(o+=1);else for(let e=l-1;e>=0;e-=1)a[l]-a[e]<n&&(o+=1);return o}update(){const e=this;if(!e||e.destroyed)return;const{snapGrid:t,params:s}=e;function i(){const t=e.rtlTranslate?-1*e.translate:e.translate,s=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(s),e.updateActiveIndex(),e.updateSlidesClasses()}let a;if(s.breakpoints&&e.setBreakpoint(),[...e.el.querySelectorAll('[loading="lazy"]')].forEach(t=>{t.complete&&O(e,t)}),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;a=e.slideTo(t.length-1,0,!1,!0)}else a=e.slideTo(e.activeIndex,0,!1,!0);a||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach(t=>{"vertical"===e?t.style.width="":t.style.height=""}),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let a=s&&s.shadowRoot&&s.shadowRoot.querySelector?s.shadowRoot.querySelector(i()):m(s,i())[0];return!a&&t.params.createElements&&(a=f("div",t.params.wrapperClass),s.append(a),m(s,`.${t.params.slideClass}`).forEach(e=>{a.append(e)})),Object.assign(t,{el:s,wrapperEl:a,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:a,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===g(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===g(s,"direction")),wrongRTL:"-webkit-box"===g(a,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(void 0,!0),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach(e=>{e.complete?O(t,e):e.addEventListener("load",e=>{O(t,e.target)})}),z(t),t.initialized=!0,z(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:a,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),a&&"string"!=typeof a&&a.removeAttribute("style"),r&&r.removeAttribute("style"),n&&n.length&&n.forEach(e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")})),s.emit("destroy"),Object.keys(s.eventsListeners).forEach(e=>{s.off(e)}),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach(e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}})}(s)),s.destroyed=!0),null}static extendDefaults(e){c(Q,e)}static get extendedDefaults(){return Q}static get defaults(){return U}static installModule(e){Z.prototype.__modules__||(Z.prototype.__modules__=[]);const t=Z.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach(e=>Z.installModule(e)),Z):(Z.installModule(e),Z)}}function ee(e,t,s,i){return e.params.createElements&&Object.keys(i).forEach(a=>{if(!s[a]&&!0===s.auto){let r=m(e.el,`.${i[a]}`)[0];r||(r=f("div",i[a]),r.className=i[a],e.el.append(r)),s[a]=r,t[a]=r}}),s}function te(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;function r(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e)||t.hostEl.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s&&s.length>1&&1===t.el.querySelectorAll(e).length?s=t.el.querySelector(e):s&&1===s.length&&(s=s[0])),e&&!s?e:s)}function n(e,s){const i=t.params.navigation;(e=y(e)).forEach(e=>{e&&(e.classList[s?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](i.lockClass))})}function l(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return n(s,!1),void n(e,!1);n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),a("navigationPrev"))}function d(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),a("navigationNext"))}function c(){const e=t.params.navigation;if(t.params.navigation=ee(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=r(e.nextEl),i=r(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:i}),s=y(s),i=y(i);const a=(s,i)=>{s&&s.addEventListener("click","next"===i?d:o),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach(e=>a(e,"next")),i.forEach(e=>a(e,"prev"))}function p(){let{nextEl:e,prevEl:s}=t.navigation;e=y(e),s=y(s);const i=(e,s)=>{e.removeEventListener("click","next"===s?d:o),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach(e=>i(e,"next")),s.forEach(e=>i(e,"prev"))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null},i("init",()=>{!1===t.params.navigation.enabled?u():(c(),l())}),i("toEdge fromEdge lock unlock",()=>{l()}),i("destroy",()=>{p()}),i("enable disable",()=>{let{nextEl:e,prevEl:s}=t.navigation;e=y(e),s=y(s),t.enabled?l():[...e,...s].filter(e=>!!e).forEach(e=>e.classList.add(t.params.navigation.lockClass))}),i("click",(e,s)=>{let{nextEl:i,prevEl:r}=t.navigation;i=y(i),r=y(r);const n=s.target;let l=r.includes(n)||i.includes(n);if(t.isElement&&!l){const e=s.path||s.composedPath&&s.composedPath();e&&(l=e.find(e=>i.includes(e)||r.includes(e)))}if(t.params.navigation.hideOnClick&&!l){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;i.length?e=i[0].classList.contains(t.params.navigation.hiddenClass):r.length&&(e=r[0].classList.contains(t.params.navigation.hiddenClass)),a(!0===e?"navigationShow":"navigationHide"),[...i,...r].filter(e=>!!e).forEach(e=>e.classList.toggle(t.params.navigation.hiddenClass))}});const u=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),p()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),c(),l()},disable:u,update:l,init:c,destroy:p})}function se(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/()[\]])/g,"\\$1").replace(/ /g,".")}`}function ie(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function d(e,s){const{bulletActiveClass:i}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${i}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${i}-${s}-${s}`))}function c(e){const s=e.target.closest(se(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const i=v(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===i)return;const e=(a=t.realIndex,r=i,(r%=n=t.slides.length)===1+(a%=n)?"next":r===a-1?"previous":void 0);"next"===e?t.slideNext():"previous"===e?t.slidePrev():t.slideToLoop(i)}else t.slideTo(i);var a,r,n}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;let i,r,c=t.pagination.el;c=y(c);const p=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,u=t.params.loop?Math.ceil(p/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,i=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(i=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,i=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let o,p,u;if(s.dynamicBullets&&(n=b(a[0],t.isHorizontal()?"width":"height",!0),c.forEach(e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"}),s.dynamicMainBullets>1&&void 0!==r&&(l+=i-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(i-l,0),p=o+(Math.min(a.length,s.dynamicMainBullets)-1),u=(p+o)/2),a.forEach(e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map(e=>`${s.bulletActiveClass}${e}`)].map(e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e).flat();e.classList.remove(...t)}),c.length>1)a.forEach(e=>{const a=v(e);a===i?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(a>=o&&a<=p&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),a===o&&d(e,"prev"),a===p&&d(e,"next"))});else{const e=a[i];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&a.forEach((e,t)=>{e.setAttribute("part",t===i?"bullet-active":"bullet")}),s.dynamicBullets){const e=a[o],t=a[p];for(let e=o;e<=p;e+=1)a[e]&&a[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));d(e,"prev"),d(t,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.forEach(e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`})}}c.forEach((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(se(s.currentClass)).forEach(e=>{e.textContent=s.formatFractionCurrent(i+1)}),e.querySelectorAll(se(s.totalClass)).forEach(e=>{e.textContent=s.formatFractionTotal(u)})),"progressbar"===s.type){let a;a=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(i+1)/u;let n=1,l=1;"horizontal"===a?n=r:l=r,e.querySelectorAll(se(s.progressbarFillClass)).forEach(e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`})}"custom"===s.type&&s.renderCustom?(S(e,s.renderCustom(t,i+1,u)),0===r&&a("paginationRender",e)):(0===r&&a("paginationRender",e),a("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)})}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let i=t.pagination.el;i=y(i);let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&i>s&&(i=s);for(let s=0;s<i;s+=1)e.renderBullet?r+=e.renderBullet.call(t,s,e.bulletClass):r+=`<${e.bulletElement} ${t.isElement?'part="bullet"':""} class="${e.bulletClass}"></${e.bulletElement}>`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):`<span class="${e.currentClass}"></span> / <span class="${e.totalClass}"></span>`),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):`<span class="${e.progressbarFillClass}"></span>`),t.pagination.bullets=[],i.forEach(s=>{"custom"!==e.type&&S(s,r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(se(e.bulletClass)))}),"custom"!==e.type&&a("paginationRender",i[0])}function m(){t.params.pagination=ee(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.find(e=>w(e,".swiper")[0]===t.el))),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=y(s),s.forEach(s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),t.enabled||s.classList.add(e.lockClass)}))}function h(){const e=t.params.pagination;if(o())return;let s=t.pagination.el;s&&(s=y(s),s.forEach(s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))})),t.pagination.bullets&&t.pagination.bullets.forEach(t=>t.classList.remove(...e.bulletActiveClass.split(" ")))}i("changeDirection",()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=y(s),s.forEach(s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)})}),i("init",()=>{!1===t.params.pagination.enabled?f():(m(),u(),p())}),i("activeIndexChange",()=>{void 0===t.snapIndex&&p()}),i("snapIndexChange",()=>{p()}),i("snapGridLengthChange",()=>{u(),p()}),i("destroy",()=>{h()}),i("enable disable",()=>{let{el:e}=t.pagination;e&&(e=y(e),e.forEach(e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass)))}),i("lock unlock",()=>{p()}),i("click",(e,s)=>{const i=s.target,r=y(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!i.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&i===t.navigation.nextEl||t.navigation.prevEl&&i===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);a(!0===e?"paginationShow":"paginationHide"),r.forEach(e=>e.classList.toggle(t.params.pagination.hiddenClass))}});const f=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=y(e),e.forEach(e=>e.classList.add(t.params.pagination.paginationDisabledClass))),h()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=y(e),e.forEach(e=>e.classList.remove(t.params.pagination.paginationDisabledClass))),m(),u(),p()},disable:f,render:u,update:p,init:m,destroy:h})}function ae(e){let t,s,{swiper:a,extendParams:r,on:n,emit:l,params:o}=e;a.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,c,p,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){a&&!a.destroyed&&a.wrapperEl&&e.target===a.wrapperEl&&(a.wrapperEl.removeEventListener("transitionend",y),g||e.detail&&e.detail.bySwiperTouchMove||M())}const S=()=>{if(a.destroyed||!a.autoplay.running)return;a.autoplay.paused?c=!0:c&&(w=d,c=!1);const e=a.autoplay.paused?d:b+w-(new Date).getTime();a.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame(()=>{S()})},T=e=>{if(a.destroyed||!a.autoplay.running)return;cancelAnimationFrame(s),S();let i=void 0===e?a.params.autoplay.delay:e;v=a.params.autoplay.delay,w=a.params.autoplay.delay;const r=(()=>{let e;if(e=a.virtual&&a.params.virtual.enabled?a.slides.find(e=>e.classList.contains("swiper-slide-active")):a.slides[a.activeIndex],e)return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(i=r,v=r,w=r),d=i;const n=a.params.speed,o=()=>{a&&!a.destroyed&&(a.params.autoplay.reverseDirection?!a.isBeginning||a.params.loop||a.params.rewind?(a.slidePrev(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(a.slides.length-1,n,!0,!0),l("autoplay")):!a.isEnd||a.params.loop||a.params.rewind?(a.slideNext(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(0,n,!0,!0),l("autoplay")),a.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame(()=>{T()})))};return i>0?(clearTimeout(t),t=setTimeout(()=>{o()},i)):requestAnimationFrame(()=>{o()}),i},E=()=>{b=(new Date).getTime(),a.autoplay.running=!0,T(),l("autoplayStart")},x=()=>{a.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},C=(e,s)=>{if(a.destroyed||!a.autoplay.running)return;clearTimeout(t),e||(f=!0);const i=()=>{l("autoplayPause"),a.params.autoplay.waitForTransition?a.wrapperEl.addEventListener("transitionend",y):M()};if(a.autoplay.paused=!0,s)return h&&(d=a.params.autoplay.delay),h=!1,void i();const r=d||a.params.autoplay.delay;d=r-((new Date).getTime()-b),a.isEnd&&d<0&&!a.params.loop||(d<0&&(d=0),i())},M=()=>{a.isEnd&&d<0&&!a.params.loop||a.destroyed||!a.autoplay.running||(b=(new Date).getTime(),f?(f=!1,T(d)):T(),a.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(a.destroyed||!a.autoplay.running)return;const e=i();"hidden"===e.visibilityState&&(f=!0,C(!0)),"visible"===e.visibilityState&&M()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,a.animating||a.autoplay.paused||C(!0))},k=e=>{"mouse"===e.pointerType&&(g=!1,a.autoplay.paused&&M())};n("init",()=>{a.params.autoplay.enabled&&(a.params.autoplay.pauseOnMouseEnter&&(a.el.addEventListener("pointerenter",L),a.el.addEventListener("pointerleave",k)),i().addEventListener("visibilitychange",P),E())}),n("destroy",()=>{a.el&&"string"!=typeof a.el&&(a.el.removeEventListener("pointerenter",L),a.el.removeEventListener("pointerleave",k)),i().removeEventListener("visibilitychange",P),a.autoplay.running&&x()}),n("_freeModeStaticRelease",()=>{(u||f)&&M()}),n("_freeModeNoMomentumRelease",()=>{a.params.autoplay.disableOnInteraction?x():C(!0,!0)}),n("beforeTransitionStart",(e,t,s)=>{!a.destroyed&&a.autoplay.running&&(s||!a.params.autoplay.disableOnInteraction?C(!0,!0):x())}),n("sliderFirstMove",()=>{!a.destroyed&&a.autoplay.running&&(a.params.autoplay.disableOnInteraction?x():(p=!0,u=!1,f=!1,m=setTimeout(()=>{f=!0,u=!0,C(!0)},200)))}),n("touchEnd",()=>{if(!a.destroyed&&a.autoplay.running&&p){if(clearTimeout(m),clearTimeout(t),a.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&a.params.cssMode&&M(),u=!1,p=!1}}),n("slideChange",()=>{!a.destroyed&&a.autoplay.running&&(h=!0)}),Object.assign(a.autoplay,{start:E,stop:x,pause:C,resume:M})}Object.keys(J).forEach(e=>{Object.keys(J[e]).forEach(t=>{Z.prototype[t]=J[e][t]})}),Z.use([function(e){let{swiper:t,on:s,emit:i}=e;const a=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",()=>{t.params.resizeObserver&&void 0!==a.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver(e=>{l=a.requestAnimationFrame(()=>{const{width:s,height:i}=t;let a=s,r=i;e.forEach(e=>{let{contentBoxSize:s,contentRect:i,target:n}=e;n&&n!==t.el||(a=i?i.width:(s[0]||s).inlineSize,r=i?i.height:(s[0]||s).blockSize)}),a===s&&r===i||o()})}),n.observe(t.el)):(a.addEventListener("resize",o),a.addEventListener("orientationchange",d))}),s("destroy",()=>{l&&a.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),a.removeEventListener("resize",o),a.removeEventListener("orientationchange",d)})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const i=new(l.MutationObserver||l.WebkitMutationObserver)(e=>{if(t.__preventObserver__)return;if(1===e.length)return void a("observerUpdate",e[0]);const s=function(){a("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)});i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",()=>{if(t.params.observer){if(t.params.observeParents){const e=w(t.hostEl);for(let t=0;t<e.length;t+=1)o(e[t])}o(t.hostEl,{childList:t.params.observeSlideChildren}),o(t.wrapperEl,{attributes:!1})}}),i("destroy",()=>{n.forEach(e=>{e.disconnect()}),n.splice(0,n.length)})}]),function(){const e=()=>{document.querySelectorAll(".zenithium-blocks-carousel-wrapper").forEach(e=>{const t=e.querySelector(".zenithium-blocks-carousel-track");if(!t)return;if(e.classList.contains("swiper-initialized"))return;t.classList.add("swiper-wrapper");let s=e.querySelector(".zenithium-blocks-swiper-container");s||(s=document.createElement("div"),s.classList.add("zenithium-blocks-swiper-container","swiper"),t.parentNode.insertBefore(s,t),s.appendChild(t));const i=Array.from(t.children);i.forEach(e=>{e.classList.add("swiper-slide")});const a=parseInt(e.dataset.slidesPerView,10)||3,r=void 0!==e.dataset.slideGap?parseInt(e.dataset.slideGap,10):20,n="true"===e.dataset.autoplay,l=parseInt(e.dataset.autoplaySpeed,10)||4e3,o=e.querySelector(".zenithium-blocks-carousel-arrow.prev"),d=e.querySelector(".zenithium-blocks-carousel-arrow.next"),c=e.querySelector(".zenithium-blocks-carousel-dots"),p=[te,ie];n&&p.push(ae),new Z(s,{modules:p,loop:i.length>a,slidesPerView:1,spaceBetween:r,observer:!0,observeParents:!0,breakpoints:{640:{slidesPerView:Math.min(2,a)},1024:{slidesPerView:a}},navigation:{nextEl:d,prevEl:o},pagination:{el:c,clickable:!0,bulletClass:"zenithium-blocks-carousel-dot",bulletActiveClass:"is-active"},autoplay:!!n&&{delay:l,disableOnInteraction:!1,pauseOnMouseEnter:!0}}),e.classList.add("swiper-initialized")})};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}()})();
  • zenithium-blocks/trunk/build/blocks/flip-card/block.json

    r3640847 r3769770  
    44  "name": "zenithium-blocks/flip-card",
    55  "version": "1.0.0",
    6   "title": "Interactive Flip Card",
    7   "category": "widgets",
     6  "title": "Zenithium Interactive Flip Card",
     7  "category": "zenithium-blocks",
    88  "icon": "update",
    99  "description": "An interactive card that flips in 3D on hover or click to reveal additional details on the back.",
    … …  
    2828    "color": {
    2929      "text": true,
    30       "background": true
     30      "background": true,
     31      "link": true,
     32      "gradients": true,
     33      "enableCustomColors": true,
     34      "enableCustomGradients": true,
     35      "enableAlpha": true
    3136    }
    3237  },
  • zenithium-blocks/trunk/build/blocks/flip-card/index-rtl.css

    r3640847 r3769770  
    1 .wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle{display:flex;gap:8px;justify-content:center;margin-bottom:12px}.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:4px;color:#475569;cursor:pointer;font-size:.8rem;font-weight:600;padding:6px 14px;transition:all .2s ease}.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button.is-active,.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button:hover{background:#2563eb;border-color:#2563eb;color:#fff}.wp-block-zenithium-blocks-flip-card.is-flipped-editor.flip-horizontal .zenithium-blocks-flip-card-inner{transform:rotateY(-180deg)}.wp-block-zenithium-blocks-flip-card.is-flipped-editor.flip-vertical .zenithium-blocks-flip-card-inner{transform:rotateX(180deg)}
     1.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-editor-toggle{display:flex;gap:8px;justify-content:center;margin-bottom:12px;position:relative;z-index:10}.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-editor-toggle button{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:4px;color:#475569;cursor:pointer;font-size:.8rem;font-weight:600;padding:6px 14px;transition:all .2s ease}.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button.is-active,.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button:hover,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-editor-toggle button.is-active,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-editor-toggle button:hover{background:#2563eb;border-color:#2563eb;color:#fff}.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button:focus,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-editor-toggle button:focus{box-shadow:0 0 0 2px #2563eb;outline:none}.wp-block-zenithium-blocks-flip-card.trigger-hover:hover .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.trigger-hover:hover .zenithium-blocks-flip-card-inner{transform:none}.wp-block-zenithium-blocks-flip-card.is-flipped-editor.flip-horizontal .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.is-flipped-editor.flip-horizontal .zenithium-blocks-flip-card-inner{transform:rotateY(-180deg)}.wp-block-zenithium-blocks-flip-card.is-flipped-editor.flip-vertical .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.is-flipped-editor.flip-vertical .zenithium-blocks-flip-card-inner{transform:rotateX(180deg)}.wp-block-zenithium-blocks-flip-card .block-editor-rich-text__editable,.zenithium-blocks-flip-card-wrapper .block-editor-rich-text__editable{pointer-events:auto}
  • zenithium-blocks/trunk/build/blocks/flip-card/index.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => '73622af4b70b4f32514a');
     1<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => '00bfde84fe0e741ce4bf');
  • zenithium-blocks/trunk/build/blocks/flip-card/index.css

    r3640847 r3769770  
    1 .wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle{display:flex;gap:8px;justify-content:center;margin-bottom:12px}.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:4px;color:#475569;cursor:pointer;font-size:.8rem;font-weight:600;padding:6px 14px;transition:all .2s ease}.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button.is-active,.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button:hover{background:#2563eb;border-color:#2563eb;color:#fff}.wp-block-zenithium-blocks-flip-card.is-flipped-editor.flip-horizontal .zenithium-blocks-flip-card-inner{transform:rotateY(180deg)}.wp-block-zenithium-blocks-flip-card.is-flipped-editor.flip-vertical .zenithium-blocks-flip-card-inner{transform:rotateX(180deg)}
     1.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-editor-toggle{display:flex;gap:8px;justify-content:center;margin-bottom:12px;position:relative;z-index:10}.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-editor-toggle button{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:4px;color:#475569;cursor:pointer;font-size:.8rem;font-weight:600;padding:6px 14px;transition:all .2s ease}.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button.is-active,.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button:hover,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-editor-toggle button.is-active,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-editor-toggle button:hover{background:#2563eb;border-color:#2563eb;color:#fff}.wp-block-zenithium-blocks-flip-card .zenithium-blocks-flip-card-editor-toggle button:focus,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-editor-toggle button:focus{box-shadow:0 0 0 2px #2563eb;outline:none}.wp-block-zenithium-blocks-flip-card.trigger-hover:hover .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.trigger-hover:hover .zenithium-blocks-flip-card-inner{transform:none}.wp-block-zenithium-blocks-flip-card.is-flipped-editor.flip-horizontal .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.is-flipped-editor.flip-horizontal .zenithium-blocks-flip-card-inner{transform:rotateY(180deg)}.wp-block-zenithium-blocks-flip-card.is-flipped-editor.flip-vertical .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.is-flipped-editor.flip-vertical .zenithium-blocks-flip-card-inner{transform:rotateX(180deg)}.wp-block-zenithium-blocks-flip-card .block-editor-rich-text__editable,.zenithium-blocks-flip-card-wrapper .block-editor-rich-text__editable{pointer-events:auto}
  • zenithium-blocks/trunk/build/blocks/flip-card/index.js

    r3640847 r3769770  
    1 (()=>{"use strict";var e={187(){const e=window.wp.blocks,o=window.wp.blockEditor,t=window.wp.components,i=window.wp.element,l=window.wp.i18n,n=JSON.parse('{"UU":"zenithium-blocks/flip-card"}'),c=window.ReactJSXRuntime;(0,e.registerBlockType)(n.UU,{edit:({attributes:e,setAttributes:n})=>{const{triggerMode:r,flipDirection:a,minHeight:s,frontTitle:h,frontDescription:d,frontBgColor:u,frontTextColor:b,backTitle:k,backDescription:m,backButtonText:p,backButtonUrl:x,backButtonTarget:g,backBgColor:f,backTextColor:C,btnBgColor:_,btnTextColor:j}=e,[v,z]=(0,i.useState)("front"),B=(0,o.useBlockProps)({className:`zenithium-blocks-flip-card-wrapper trigger-${r} flip-${a} ${"back"===v?"is-flipped-editor":""}`,style:{minHeight:`${s}px`}});return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(o.InspectorControls,{children:[(0,c.jsxs)(t.PanelBody,{title:(0,l.__)("Flip Card Settings","zenithium-blocks"),initialOpen:!0,children:[(0,c.jsx)(t.SelectControl,{label:(0,l.__)("Trigger Mode","zenithium-blocks"),value:r,options:[{label:(0,l.__)("On Hover","zenithium-blocks"),value:"hover"},{label:(0,l.__)("On Click / Tap","zenithium-blocks"),value:"click"}],onChange:e=>n({triggerMode:e})}),(0,c.jsx)(t.SelectControl,{label:(0,l.__)("Flip Direction","zenithium-blocks"),value:a,options:[{label:(0,l.__)("Horizontal (Y-Axis)","zenithium-blocks"),value:"horizontal"},{label:(0,l.__)("Vertical (X-Axis)","zenithium-blocks"),value:"vertical"}],onChange:e=>n({flipDirection:e})}),(0,c.jsx)(t.RangeControl,{label:(0,l.__)("Min Height (px)","zenithium-blocks"),value:s,onChange:e=>n({minHeight:e}),min:220,max:600})]}),(0,c.jsxs)(t.PanelBody,{title:(0,l.__)("Colors & Design","zenithium-blocks"),initialOpen:!1,children:[(0,c.jsx)("p",{children:(0,c.jsx)("strong",{children:(0,l.__)("Front Card Background","zenithium-blocks")})}),(0,c.jsx)(t.ColorPalette,{value:u,onChange:e=>n({frontBgColor:e||"#1e293b"})}),(0,c.jsx)("p",{children:(0,c.jsx)("strong",{children:(0,l.__)("Front Card Text","zenithium-blocks")})}),(0,c.jsx)(t.ColorPalette,{value:b,onChange:e=>n({frontTextColor:e||"#ffffff"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("p",{children:(0,c.jsx)("strong",{children:(0,l.__)("Back Card Background","zenithium-blocks")})}),(0,c.jsx)(t.ColorPalette,{value:f,onChange:e=>n({backBgColor:e||"#2563eb"})}),(0,c.jsx)("p",{children:(0,c.jsx)("strong",{children:(0,l.__)("Back Card Text","zenithium-blocks")})}),(0,c.jsx)(t.ColorPalette,{value:C,onChange:e=>n({backTextColor:e||"#ffffff"})}),(0,c.jsx)("p",{children:(0,c.jsx)("strong",{children:(0,l.__)("Back Button Background","zenithium-blocks")})}),(0,c.jsx)(t.ColorPalette,{value:_,onChange:e=>n({btnBgColor:e||"#ffffff"})}),(0,c.jsx)("p",{children:(0,c.jsx)("strong",{children:(0,l.__)("Back Button Text Color","zenithium-blocks")})}),(0,c.jsx)(t.ColorPalette,{value:j,onChange:e=>n({btnTextColor:e||"#2563eb"})})]}),(0,c.jsxs)(t.PanelBody,{title:(0,l.__)("Button Link","zenithium-blocks"),initialOpen:!1,children:[(0,c.jsx)(o.URLInput,{value:x,onChange:e=>n({backButtonUrl:e}),isFullWidth:!0}),(0,c.jsx)(t.ToggleControl,{label:(0,l.__)("Open Link in New Tab","zenithium-blocks"),checked:g,onChange:e=>n({backButtonTarget:e})})]})]}),(0,c.jsxs)("div",{...B,children:[(0,c.jsxs)("div",{className:"zenithium-blocks-flip-card-editor-toggle",children:[(0,c.jsx)("button",{type:"button",className:"front"===v?"is-active":"",onClick:()=>z("front"),children:(0,l.__)("Edit Front","zenithium-blocks")}),(0,c.jsx)("button",{type:"button",className:"back"===v?"is-active":"",onClick:()=>z("back"),children:(0,l.__)("Edit Back","zenithium-blocks")})]}),(0,c.jsxs)("div",{className:"zenithium-blocks-flip-card-inner",children:[(0,c.jsx)("div",{className:"zenithium-blocks-flip-card-front",style:{backgroundColor:u,color:b,minHeight:`${s}px`},children:(0,c.jsxs)("div",{className:"zenithium-blocks-flip-card-content",children:[(0,c.jsx)(o.RichText,{tagName:"h3",className:"zenithium-blocks-flip-card-title",value:h,onChange:e=>n({frontTitle:e}),placeholder:(0,l.__)("Front Heading...","zenithium-blocks"),allowedFormats:["core/bold","core/italic"]}),(0,c.jsx)(o.RichText,{tagName:"p",className:"zenithium-blocks-flip-card-desc",value:d,onChange:e=>n({frontDescription:e}),placeholder:(0,l.__)("Front description...","zenithium-blocks"),allowedFormats:["core/bold","core/italic"]})]})}),(0,c.jsx)("div",{className:"zenithium-blocks-flip-card-back",style:{backgroundColor:f,color:C,minHeight:`${s}px`},children:(0,c.jsxs)("div",{className:"zenithium-blocks-flip-card-content",children:[(0,c.jsx)(o.RichText,{tagName:"h3",className:"zenithium-blocks-flip-card-title",value:k,onChange:e=>n({backTitle:e}),placeholder:(0,l.__)("Back Heading...","zenithium-blocks"),allowedFormats:["core/bold","core/italic"]}),(0,c.jsx)(o.RichText,{tagName:"p",className:"zenithium-blocks-flip-card-desc",value:m,onChange:e=>n({backDescription:e}),placeholder:(0,l.__)("Back description...","zenithium-blocks"),allowedFormats:["core/bold","core/italic"]}),(0,c.jsx)("span",{className:"zenithium-blocks-flip-card-btn",style:{backgroundColor:_,color:j},children:(0,c.jsx)(o.RichText,{tagName:"span",value:p,onChange:e=>n({backButtonText:e}),placeholder:(0,l.__)("Button Text","zenithium-blocks"),allowedFormats:[]})})]})})]})]})]})},save:()=>null})}};const o={};function t(i){const l=o[i];if(void 0!==l)return l.exports;const n=o[i]={exports:{}};return e[i](n,n.exports,t),n.exports}t.m=e,(()=>{const e=[];t.O=(o,i,l,n)=>{if(i){n=n||0;for(var c=e.length;c>0&&e[c-1][2]>n;c--)e[c]=e[c-1];return void(e[c]=[i,l,n])}let r=1/0;for(c=0;c<e.length;c++){let[i,l,n]=e[c],s=!0;for(var a=0;a<i.length;a++)(!1&n||r>=n)&&Object.keys(t.O).every(e=>t.O[e](i[a]))?i.splice(a--,1):(s=!1,n<r&&(r=n));if(s){e.splice(c--,1);const t=l();void 0!==t&&(o=t)}}return o}})(),t.o=(e,o)=>Object.hasOwn(e,o),(()=>{const e={885:0,25:0};t.O.j=o=>0===e[o];const o=(o,i)=>{let[l,n,c]=i;var r,a,s=0;if(l.some(o=>0!==e[o])){for(r in n)t.o(n,r)&&(t.m[r]=n[r]);if(c)var h=c(t)}for(o&&o(i);s<l.length;s++)a=l[s],t.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return t.O(h)},i=globalThis.webpackChunkzenithium_blocks||=[];i.forEach(o.bind(null,0)),i.push=o.bind(null,i.push.bind(i))})();let i=t.O(void 0,[25],()=>t(187));i=t.O(i)})();
     1(()=>{"use strict";var e={187(){const e=window.wp.blocks,o=window.wp.blockEditor,l=window.wp.components,t=window.wp.element,i=window.wp.i18n,n=JSON.parse('{"UU":"zenithium-blocks/flip-card"}'),a=window.ReactJSXRuntime,c=(e,o="")=>e?"string"==typeof e&&e.startsWith("var:preset|color|")?`var(--wp--preset--color--${e.replace("var:preset|color|","")})`:e:o;(0,e.registerBlockType)(n.UU,{edit:({attributes:e,setAttributes:n})=>{const{triggerMode:r,flipDirection:s,minHeight:b,frontTitle:h,frontDescription:u,frontBgColor:d,frontTextColor:k,backTitle:m,backDescription:p,backButtonText:g,backButtonUrl:f,backButtonTarget:x,backBgColor:C,backTextColor:_,btnBgColor:v,btnTextColor:z}=e,[B,j]=(0,t.useState)("front"),T=(0,o.useBlockProps)({className:`zenithium-blocks-flip-card-wrapper trigger-${r} flip-${s} ${"back"===B?"is-flipped-editor":""}`,style:{minHeight:`${b}px`}});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(o.InspectorControls,{children:[(0,a.jsxs)(l.PanelBody,{title:(0,i.__)("Flip Card Settings","zenithium-blocks"),initialOpen:!0,children:[(0,a.jsx)(l.SelectControl,{label:(0,i.__)("Trigger Mode","zenithium-blocks"),value:r,options:[{label:(0,i.__)("On Hover","zenithium-blocks"),value:"hover"},{label:(0,i.__)("On Click / Tap","zenithium-blocks"),value:"click"}],onChange:e=>n({triggerMode:e})}),(0,a.jsx)(l.SelectControl,{label:(0,i.__)("Flip Direction","zenithium-blocks"),value:s,options:[{label:(0,i.__)("Horizontal (Y-Axis)","zenithium-blocks"),value:"horizontal"},{label:(0,i.__)("Vertical (X-Axis)","zenithium-blocks"),value:"vertical"}],onChange:e=>n({flipDirection:e})}),(0,a.jsx)(l.RangeControl,{label:(0,i.__)("Min Height (px)","zenithium-blocks"),value:b,onChange:e=>n({minHeight:e}),min:220,max:600})]}),(0,a.jsx)(o.PanelColorSettings,{title:(0,i.__)("Front Side Colors","zenithium-blocks"),initialOpen:!1,disableCustomColors:!1,enableAlpha:!0,colorSettings:[{value:d,onChange:e=>n({frontBgColor:e}),label:(0,i.__)("Front Background","zenithium-blocks")},{value:k,onChange:e=>n({frontTextColor:e}),label:(0,i.__)("Front Text Color","zenithium-blocks")}]}),(0,a.jsx)(o.PanelColorSettings,{title:(0,i.__)("Back Side & Button Colors","zenithium-blocks"),initialOpen:!1,disableCustomColors:!1,enableAlpha:!0,colorSettings:[{value:C,onChange:e=>n({backBgColor:e}),label:(0,i.__)("Back Background","zenithium-blocks")},{value:_,onChange:e=>n({backTextColor:e}),label:(0,i.__)("Back Text Color","zenithium-blocks")},{value:v,onChange:e=>n({btnBgColor:e}),label:(0,i.__)("Button Background","zenithium-blocks")},{value:z,onChange:e=>n({btnTextColor:e}),label:(0,i.__)("Button Text Color","zenithium-blocks")}]}),(0,a.jsxs)(l.PanelBody,{title:(0,i.__)("Button Link","zenithium-blocks"),initialOpen:!1,children:[(0,a.jsx)(o.URLInput,{value:f,onChange:e=>n({backButtonUrl:e}),isFullWidth:!0}),(0,a.jsx)(l.ToggleControl,{label:(0,i.__)("Open Link in New Tab","zenithium-blocks"),checked:x,onChange:e=>n({backButtonTarget:e})})]})]}),(0,a.jsxs)("div",{...T,children:[(0,a.jsxs)("div",{className:"zenithium-blocks-flip-card-editor-toggle",children:[(0,a.jsx)("button",{type:"button",className:"front"===B?"is-active":"",onClick:()=>j("front"),children:(0,i.__)("Edit Front","zenithium-blocks")}),(0,a.jsx)("button",{type:"button",className:"back"===B?"is-active":"",onClick:()=>j("back"),children:(0,i.__)("Edit Back","zenithium-blocks")})]}),(0,a.jsxs)("div",{className:"zenithium-blocks-flip-card-inner",children:[(0,a.jsx)("div",{className:"zenithium-blocks-flip-card-front",style:{backgroundColor:c(d,"#1e293b"),color:c(k,"#ffffff"),minHeight:`${b}px`},children:(0,a.jsxs)("div",{className:"zenithium-blocks-flip-card-content",children:[(0,a.jsx)(o.RichText,{tagName:"h3",className:"zenithium-blocks-flip-card-title",value:h,onChange:e=>n({frontTitle:e}),placeholder:(0,i.__)("Front Heading...","zenithium-blocks"),allowedFormats:["core/bold","core/italic"]}),(0,a.jsx)(o.RichText,{tagName:"p",className:"zenithium-blocks-flip-card-desc",value:u,onChange:e=>n({frontDescription:e}),placeholder:(0,i.__)("Front description...","zenithium-blocks"),allowedFormats:["core/bold","core/italic"]})]})}),(0,a.jsx)("div",{className:"zenithium-blocks-flip-card-back",style:{backgroundColor:c(C,"#2563eb"),color:c(_,"#ffffff"),minHeight:`${b}px`},children:(0,a.jsxs)("div",{className:"zenithium-blocks-flip-card-content",children:[(0,a.jsx)(o.RichText,{tagName:"h3",className:"zenithium-blocks-flip-card-title",value:m,onChange:e=>n({backTitle:e}),placeholder:(0,i.__)("Back Heading...","zenithium-blocks"),allowedFormats:["core/bold","core/italic"]}),(0,a.jsx)(o.RichText,{tagName:"p",className:"zenithium-blocks-flip-card-desc",value:p,onChange:e=>n({backDescription:e}),placeholder:(0,i.__)("Back description...","zenithium-blocks"),allowedFormats:["core/bold","core/italic"]}),(0,a.jsx)("span",{className:"zenithium-blocks-flip-card-btn",style:{backgroundColor:c(v,"#ffffff"),color:c(z,"#2563eb")},children:(0,a.jsx)(o.RichText,{tagName:"span",value:g,onChange:e=>n({backButtonText:e}),placeholder:(0,i.__)("Button Text","zenithium-blocks"),allowedFormats:[]})})]})})]})]})]})},save:()=>null})}};const o={};function l(t){const i=o[t];if(void 0!==i)return i.exports;const n=o[t]={exports:{}};return e[t](n,n.exports,l),n.exports}l.m=e,(()=>{const e=[];l.O=(o,t,i,n)=>{if(t){n=n||0;for(var a=e.length;a>0&&e[a-1][2]>n;a--)e[a]=e[a-1];return void(e[a]=[t,i,n])}let c=1/0;for(a=0;a<e.length;a++){let[t,i,n]=e[a],s=!0;for(var r=0;r<t.length;r++)(!1&n||c>=n)&&Object.keys(l.O).every(e=>l.O[e](t[r]))?t.splice(r--,1):(s=!1,n<c&&(c=n));if(s){e.splice(a--,1);const l=i();void 0!==l&&(o=l)}}return o}})(),l.o=(e,o)=>Object.hasOwn(e,o),(()=>{const e={885:0,25:0};l.O.j=o=>0===e[o];const o=(o,t)=>{let[i,n,a]=t;var c,r,s=0;if(i.some(o=>0!==e[o])){for(c in n)l.o(n,c)&&(l.m[c]=n[c]);if(a)var b=a(l)}for(o&&o(t);s<i.length;s++)r=i[s],l.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return l.O(b)},t=globalThis.webpackChunkzenithium_blocks||=[];t.forEach(o.bind(null,0)),t.push=o.bind(null,t.push.bind(t))})();let t=l.O(void 0,[25],()=>l(187));t=l.O(t)})();
  • zenithium-blocks/trunk/build/blocks/flip-card/render.php

    r3640847 r3769770  
    1414        $trigger_mode = $attributes['triggerMode'] ?? 'hover';
    1515        $flip_direction = $attributes['flipDirection'] ?? 'horizontal';
    16         $min_height = $attributes['minHeight'] ?? 320;
     16        $min_height = isset($attributes['minHeight']) ? (int) $attributes['minHeight'] : 320;
     17
     18        $format_color = function ($color, $fallback = '') {
     19            if (empty($color)) {
     20                return $fallback;
     21            }
     22            if (strpos($color, 'var:preset|color|') === 0) {
     23                $slug = str_replace('var:preset|color|', '', $color);
     24                return sprintf('var(--wp--preset--color--%s)', $slug);
     25            }
     26            return $color;
     27        };
    1728
    1829        $front_title = $attributes['frontTitle'] ?? '';
    1930        $front_desc = $attributes['frontDescription'] ?? '';
    20         $front_bg = $attributes['frontBgColor'] ?? '#1e293b';
    21         $front_text_color = $attributes['frontTextColor'] ?? '#ffffff';
     31        $front_bg = $format_color($attributes['frontBgColor'] ?? '', '#1e293b');
     32        $front_text_color = $format_color($attributes['frontTextColor'] ?? '', '#ffffff');
    2233
    2334        $back_title = $attributes['backTitle'] ?? '';
    … …  
    2637        $back_btn_url = $attributes['backButtonUrl'] ?? '#';
    2738        $back_btn_target = !empty($attributes['backButtonTarget']) ? '_blank' : '_self';
    28         $back_bg = $attributes['backBgColor'] ?? '#2563eb';
    29         $back_text_color = $attributes['backTextColor'] ?? '#ffffff';
     39        $back_bg = $format_color($attributes['backBgColor'] ?? '', '#2563eb');
     40        $back_text_color = $format_color($attributes['backTextColor'] ?? '', '#ffffff');
    3041
    31         $btn_bg_color = $attributes['btnBgColor'] ?? '#ffffff';
    32         $btn_text_color = $attributes['btnTextColor'] ?? '#2563eb';
     42        $btn_bg_color = $format_color($attributes['btnBgColor'] ?? '', '#ffffff');
     43        $btn_text_color = $format_color($attributes['btnTextColor'] ?? '', '#2563eb');
    3344
    3445        $wrapper_classes = sprintf(
    … …  
    3849        );
    3950
    40         $wrapper_attributes = get_block_wrapper_attributes(
    41             array(
    42                 'class' => $wrapper_classes,
    43                 'style' => sprintf('min-height: %dpx;', (int) $min_height),
    44             )
     51        $wrapper_args = array(
     52            'class' => $wrapper_classes,
     53            'style' => sprintf('min-height: %dpx;', $min_height),
     54        );
     55
     56        if ('click' === $trigger_mode) {
     57            $wrapper_args['tabindex'] = '0';
     58            $wrapper_args['role'] = 'button';
     59            $wrapper_args['aria-label'] = !empty($front_title)
     60                ? sprintf(
     61                    /* translators: %s: The title of the flip card */
     62                    __('Flip card: %s', 'zenithium-blocks'), wp_strip_all_tags($front_title)
     63                    )
     64                : __('Flip card', 'zenithium-blocks');
     65        }
     66
     67        $wrapper_attributes = get_block_wrapper_attributes($wrapper_args);
     68
     69        $front_style = sprintf(
     70            'background-color: %s; color: %s; min-height: %dpx;',
     71            $front_bg,
     72            $front_text_color,
     73            $min_height
     74        );
     75
     76        $back_style = sprintf(
     77            'background-color: %s; color: %s; min-height: %dpx;',
     78            $back_bg,
     79            $back_text_color,
     80            $min_height
     81        );
     82
     83        $btn_style = sprintf(
     84            'background-color: %s; color: %s;',
     85            $btn_bg_color,
     86            $btn_text_color
    4587        );
    4688        ?>
    … …  
    4991        <div class="zenithium-blocks-flip-card-inner">
    5092            <!-- FRONT SIDE -->
    51             <div class="zenithium-blocks-flip-card-front"
    52                 style="<?php echo esc_attr(sprintf('background-color: %s; color: %s; min-height: %dpx;', $front_bg, $front_text_color, (int) $min_height)); ?>">
     93            <div class="zenithium-blocks-flip-card-front" style="<?php echo esc_attr($front_style); ?>">
    5394                <div class="zenithium-blocks-flip-card-content">
    5495                    <?php if (!empty($front_title)): ?>
    … …  
    67108
    68109            <!-- BACK SIDE -->
    69             <div class="zenithium-blocks-flip-card-back"
    70                 style="<?php echo esc_attr(sprintf('background-color: %s; color: %s; min-height: %dpx;', $back_bg, $back_text_color, (int) $min_height)); ?>">
     110            <div class="zenithium-blocks-flip-card-back" style="<?php echo esc_attr($back_style); ?>">
    71111                <div class="zenithium-blocks-flip-card-content">
    72112                    <?php if (!empty($back_title)): ?>
    … …  
    84124                    <?php if (!empty($back_btn_text)): ?>
    85125                        <a href="<?php echo esc_url($back_btn_url); ?>" target="<?php echo esc_attr($back_btn_target); ?>"
    86                             rel="<?php echo '_blank' === $back_btn_target ? 'noopener noreferrer' : ''; ?>"
     126                            <?php echo '_blank' === $back_btn_target ? 'rel="noopener noreferrer"' : ''; ?>
    87127                            class="zenithium-blocks-flip-card-btn"
    88                             style="<?php echo esc_attr(sprintf('background-color: %s; color: %s;', $btn_bg_color, $btn_text_color)); ?>">
     128                            style="<?php echo esc_attr($btn_style); ?>">
    89129                            <?php echo esc_html($back_btn_text); ?>
    90130                        </a>
  • zenithium-blocks/trunk/build/blocks/flip-card/style-index-rtl.css

    r3640847 r3769770  
    1 .zenithium-blocks-flip-card-wrapper{background:transparent;border-radius:12px;perspective:1000px;position:relative;width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-inner{border-radius:12px;height:100%;position:relative;text-align:center;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.4,0,.2,1);width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-back,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-front{align-items:center;backface-visibility:hidden;border-radius:12px;box-shadow:0 4px 20px rgba(0,0,0,.08);box-sizing:border-box;display:flex;height:100%;justify-content:center;right:0;padding:32px 24px;position:absolute;top:0;width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-front{transform:rotateY(0deg);z-index:2}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-back{z-index:1}.zenithium-blocks-flip-card-wrapper.flip-horizontal .zenithium-blocks-flip-card-back,.zenithium-blocks-flip-card-wrapper.flip-horizontal.is-flipped .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.flip-horizontal.trigger-hover:hover .zenithium-blocks-flip-card-inner{transform:rotateY(-180deg)}.zenithium-blocks-flip-card-wrapper.flip-vertical .zenithium-blocks-flip-card-back,.zenithium-blocks-flip-card-wrapper.flip-vertical.is-flipped .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.flip-vertical.trigger-hover:hover .zenithium-blocks-flip-card-inner{transform:rotateX(180deg)}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-content{align-items:center;display:flex;flex-direction:column;gap:12px;justify-content:center;width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-title{color:inherit;font-size:1.35rem;font-weight:700;line-height:1.3;margin:0}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-desc{color:inherit;font-size:.95rem;line-height:1.5;margin:0;opacity:.9}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-btn{border-radius:6px;display:inline-block;font-size:.9rem;font-weight:600;margin-top:8px;padding:10px 22px;text-decoration:none;transition:opacity .2s ease,transform .2s ease}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-btn:hover{opacity:.92;transform:translateY(-2px)}.zenithium-blocks-flip-card-wrapper.trigger-click{cursor:pointer}
     1.zenithium-blocks-flip-card-wrapper{background:transparent;border-radius:12px;perspective:1000px;position:relative;width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-inner{border-radius:12px;min-height:inherit;position:relative;text-align:center;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.4,0,.2,1);width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-back,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-front{align-items:center;backface-visibility:hidden;border-radius:12px;box-shadow:0 4px 20px rgba(0,0,0,.08);box-sizing:border-box;display:flex;justify-content:center;right:0;min-height:100%;padding:32px 24px;position:absolute;top:0;width:100%;will-change:transform}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-front{transform:rotateY(0deg);z-index:2}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-back{z-index:1}.zenithium-blocks-flip-card-wrapper.flip-horizontal .zenithium-blocks-flip-card-back,.zenithium-blocks-flip-card-wrapper.flip-horizontal.is-flipped .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.flip-horizontal.trigger-hover:hover .zenithium-blocks-flip-card-inner{transform:rotateY(-180deg)}.zenithium-blocks-flip-card-wrapper.flip-vertical .zenithium-blocks-flip-card-back,.zenithium-blocks-flip-card-wrapper.flip-vertical.is-flipped .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.flip-vertical.trigger-hover:hover .zenithium-blocks-flip-card-inner{transform:rotateX(180deg)}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-content{align-items:center;display:flex;flex-direction:column;gap:12px;justify-content:center;width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-title{color:inherit;font-size:1.35rem;font-weight:700;line-height:1.3;margin:0}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-desc{color:inherit;font-size:.95rem;line-height:1.5;margin:0;opacity:.9}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-btn{border-radius:6px;display:inline-block;font-size:.9rem;font-weight:600;margin-top:8px;padding:10px 22px;text-decoration:none;transition:opacity .2s ease,transform .2s ease}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-btn:hover{opacity:.92;transform:translateY(-2px)}.zenithium-blocks-flip-card-wrapper.trigger-click{cursor:pointer}
  • zenithium-blocks/trunk/build/blocks/flip-card/style-index.css

    r3640847 r3769770  
    1 .zenithium-blocks-flip-card-wrapper{background:transparent;border-radius:12px;perspective:1000px;position:relative;width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-inner{border-radius:12px;height:100%;position:relative;text-align:center;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.4,0,.2,1);width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-back,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-front{align-items:center;backface-visibility:hidden;border-radius:12px;box-shadow:0 4px 20px rgba(0,0,0,.08);box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding:32px 24px;position:absolute;top:0;width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-front{transform:rotateY(0deg);z-index:2}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-back{z-index:1}.zenithium-blocks-flip-card-wrapper.flip-horizontal .zenithium-blocks-flip-card-back,.zenithium-blocks-flip-card-wrapper.flip-horizontal.is-flipped .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.flip-horizontal.trigger-hover:hover .zenithium-blocks-flip-card-inner{transform:rotateY(180deg)}.zenithium-blocks-flip-card-wrapper.flip-vertical .zenithium-blocks-flip-card-back,.zenithium-blocks-flip-card-wrapper.flip-vertical.is-flipped .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.flip-vertical.trigger-hover:hover .zenithium-blocks-flip-card-inner{transform:rotateX(180deg)}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-content{align-items:center;display:flex;flex-direction:column;gap:12px;justify-content:center;width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-title{color:inherit;font-size:1.35rem;font-weight:700;line-height:1.3;margin:0}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-desc{color:inherit;font-size:.95rem;line-height:1.5;margin:0;opacity:.9}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-btn{border-radius:6px;display:inline-block;font-size:.9rem;font-weight:600;margin-top:8px;padding:10px 22px;text-decoration:none;transition:opacity .2s ease,transform .2s ease}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-btn:hover{opacity:.92;transform:translateY(-2px)}.zenithium-blocks-flip-card-wrapper.trigger-click{cursor:pointer}
     1.zenithium-blocks-flip-card-wrapper{background:transparent;border-radius:12px;perspective:1000px;position:relative;width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-inner{border-radius:12px;min-height:inherit;position:relative;text-align:center;transform-style:preserve-3d;transition:transform .6s cubic-bezier(.4,0,.2,1);width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-back,.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-front{align-items:center;backface-visibility:hidden;border-radius:12px;box-shadow:0 4px 20px rgba(0,0,0,.08);box-sizing:border-box;display:flex;justify-content:center;left:0;min-height:100%;padding:32px 24px;position:absolute;top:0;width:100%;will-change:transform}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-front{transform:rotateY(0deg);z-index:2}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-back{z-index:1}.zenithium-blocks-flip-card-wrapper.flip-horizontal .zenithium-blocks-flip-card-back,.zenithium-blocks-flip-card-wrapper.flip-horizontal.is-flipped .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.flip-horizontal.trigger-hover:hover .zenithium-blocks-flip-card-inner{transform:rotateY(180deg)}.zenithium-blocks-flip-card-wrapper.flip-vertical .zenithium-blocks-flip-card-back,.zenithium-blocks-flip-card-wrapper.flip-vertical.is-flipped .zenithium-blocks-flip-card-inner,.zenithium-blocks-flip-card-wrapper.flip-vertical.trigger-hover:hover .zenithium-blocks-flip-card-inner{transform:rotateX(180deg)}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-content{align-items:center;display:flex;flex-direction:column;gap:12px;justify-content:center;width:100%}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-title{color:inherit;font-size:1.35rem;font-weight:700;line-height:1.3;margin:0}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-desc{color:inherit;font-size:.95rem;line-height:1.5;margin:0;opacity:.9}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-btn{border-radius:6px;display:inline-block;font-size:.9rem;font-weight:600;margin-top:8px;padding:10px 22px;text-decoration:none;transition:opacity .2s ease,transform .2s ease}.zenithium-blocks-flip-card-wrapper .zenithium-blocks-flip-card-btn:hover{opacity:.92;transform:translateY(-2px)}.zenithium-blocks-flip-card-wrapper.trigger-click{cursor:pointer}
  • zenithium-blocks/trunk/build/blocks/flip-card/view.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array(), 'version' => '2f5315ea72670cba3b47');
     1<?php return array('dependencies' => array(), 'version' => '7509f6ee7ec1a17c6a26');
  • zenithium-blocks/trunk/build/blocks/flip-card/view.js

    r3640847 r3769770  
    1 document.addEventListener("DOMContentLoaded",()=>{document.addEventListener("click",t=>{if(t.target.closest(".zenithium-blocks-flip-card-btn"))return;const e=t.target.closest(".zenithium-blocks-flip-card-wrapper.trigger-click");e&&e.classList.toggle("is-flipped")})});
     1(()=>{const e=()=>{document.addEventListener("click",e=>{if(e.target.closest(".zenithium-blocks-flip-card-btn"))return;const t=e.target.closest(".zenithium-blocks-flip-card-wrapper.trigger-click");t&&t.classList.toggle("is-flipped")}),document.addEventListener("keydown",e=>{if("Enter"!==e.key&&" "!==e.key)return;if(e.target.closest(".zenithium-blocks-flip-card-btn"))return;const t=e.target.closest(".zenithium-blocks-flip-card-wrapper.trigger-click");t&&(" "===e.key&&e.preventDefault(),t.classList.toggle("is-flipped"))})};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()})();
  • zenithium-blocks/trunk/build/blocks/image-comparison/block.json

    r3640847 r3769770  
    44  "name": "zenithium-blocks/image-comparison",
    55  "version": "1.0.0",
    6   "title": "Image Comparison Slider",
    7   "category": "media",
     6  "title": "Zenithium Image Comparison Slider",
     7  "category": "zenithium-blocks",
    88  "icon": "format-gallery",
    99  "description": "Interactive before and after image comparison slider.",
    … …  
    1111    "before after",
    1212    "image comparison",
    13     "slider"
     13    "slider",
     14    "diff"
    1415  ],
    1516  "textdomain": "zenithium-blocks",
    … …  
    2627  },
    2728  "attributes": {
     29    "beforeImageId": {
     30      "type": "number",
     31      "default": 0
     32    },
    2833    "beforeImage": {
    2934      "type": "string",
    3035      "default": ""
    3136    },
     37    "beforeAlt": {
     38      "type": "string",
     39      "default": "Before image"
     40    },
     41    "afterImageId": {
     42      "type": "number",
     43      "default": 0
     44    },
    3245    "afterImage": {
    3346      "type": "string",
    3447      "default": ""
     48    },
     49    "afterAlt": {
     50      "type": "string",
     51      "default": "After image"
    3552    },
    3653    "beforeLabel": {
    … …  
    4562      "type": "number",
    4663      "default": 50
     64    },
     65    "showLabels": {
     66      "type": "boolean",
     67      "default": true
    4768    }
    4869  },
    4970  "editorScript": "file:./index.js",
    50   "editorStyle": "file:./index.css",
    5171  "style": "file:./style-index.css",
    5272  "render": "file:./render.php",
  • zenithium-blocks/trunk/build/blocks/image-comparison/index.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '0c0bf788108a75c6e0b5');
     1<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => 'c622996be3798cc9f055');
  • zenithium-blocks/trunk/build/blocks/image-comparison/index.js

    r3640847 r3769770  
    1 (()=>{"use strict";var e={565(){const e=window.wp.blocks,i=window.wp.i18n,o=window.wp.blockEditor,n=window.wp.components,t=window.ReactJSXRuntime,l=JSON.parse('{"UU":"zenithium-blocks/image-comparison"}');(0,e.registerBlockType)(l.UU,{edit:function({attributes:e,setAttributes:l}){const s=(0,o.useBlockProps)({className:"zenithium-blocks-image-comparison-editor"}),{beforeImage:r,afterImage:a,beforeLabel:c,afterLabel:d,sliderPosition:u}=e;return(0,t.jsxs)("div",{...s,children:[(0,t.jsxs)(o.InspectorControls,{children:[(0,t.jsxs)(n.PanelBody,{title:(0,i.__)("Label Settings","zenithium-blocks"),children:[(0,t.jsx)(n.TextControl,{label:(0,i.__)("Before Label","zenithium-blocks"),value:c,onChange:e=>l({beforeLabel:e})}),(0,t.jsx)(n.TextControl,{label:(0,i.__)("After Label","zenithium-blocks"),value:d,onChange:e=>l({afterLabel:e})})]}),(0,t.jsx)(n.PanelBody,{title:(0,i.__)("Slider Settings","zenithium-blocks"),children:(0,t.jsx)(n.RangeControl,{label:(0,i.__)("Initial Position (%)","zenithium-blocks"),value:u,onChange:e=>l({sliderPosition:e}),min:0,max:100})})]}),(0,t.jsxs)("div",{className:"zenithium-blocks-controls-wrapper",children:[(0,t.jsx)(o.MediaUploadCheck,{children:(0,t.jsx)(o.MediaUpload,{onSelect:e=>l({beforeImage:e.url}),allowedTypes:["image"],value:r,render:({open:e})=>(0,t.jsx)(n.Button,{isSecondary:!0,onClick:e,children:r?(0,i.__)("Change Before Image","zenithium-blocks"):(0,i.__)("Select Before Image","zenithium-blocks")})})}),(0,t.jsx)(o.MediaUploadCheck,{children:(0,t.jsx)(o.MediaUpload,{onSelect:e=>l({afterImage:e.url}),allowedTypes:["image"],value:a,render:({open:e})=>(0,t.jsx)(n.Button,{isSecondary:!0,onClick:e,children:a?(0,i.__)("Change After Image","zenithium-blocks"):(0,i.__)("Select After Image","zenithium-blocks")})})})]}),(0,t.jsxs)("div",{className:"zenithium-blocks-preview-wrapper",children:[r&&(0,t.jsx)("img",{src:r,alt:"Before Preview"}),a&&(0,t.jsx)("img",{src:a,alt:"After Preview"})]})]})},save:()=>null})}};const i={};function o(n){const t=i[n];if(void 0!==t)return t.exports;const l=i[n]={exports:{}};return e[n](l,l.exports,o),l.exports}o.m=e,(()=>{const e=[];o.O=(i,n,t,l)=>{if(n){l=l||0;for(var s=e.length;s>0&&e[s-1][2]>l;s--)e[s]=e[s-1];return void(e[s]=[n,t,l])}let r=1/0;for(s=0;s<e.length;s++){let[n,t,l]=e[s],c=!0;for(var a=0;a<n.length;a++)(!1&l||r>=l)&&Object.keys(o.O).every(e=>o.O[e](n[a]))?n.splice(a--,1):(c=!1,l<r&&(r=l));if(c){e.splice(s--,1);const o=t();void 0!==o&&(i=o)}}return i}})(),o.o=(e,i)=>Object.hasOwn(e,i),(()=>{const e={62:0,538:0};o.O.j=i=>0===e[i];const i=(i,n)=>{let[t,l,s]=n;var r,a,c=0;if(t.some(i=>0!==e[i])){for(r in l)o.o(l,r)&&(o.m[r]=l[r]);if(s)var d=s(o)}for(i&&i(n);c<t.length;c++)a=t[c],o.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return o.O(d)},n=globalThis.webpackChunkzenithium_blocks||=[];n.forEach(i.bind(null,0)),n.push=i.bind(null,n.push.bind(n))})();let n=o.O(void 0,[538],()=>o(565));n=o.O(n)})();
     1(()=>{"use strict";var e={565(){const e=window.wp.blocks,i=window.wp.i18n,l=window.wp.blockEditor,s=window.wp.components,o=window.ReactJSXRuntime,n=JSON.parse('{"UU":"zenithium-blocks/image-comparison"}');(0,e.registerBlockType)(n.UU,{edit:function({attributes:e,setAttributes:n}){const{beforeImage:t,beforeImageId:a,beforeAlt:r,afterImage:c,afterImageId:m,afterAlt:d,beforeLabel:h,afterLabel:b,sliderPosition:u,showLabels:f=!0}=e,g=(0,l.useBlockProps)({className:"zenithium-blocks-image-comparison-editor"});return(0,o.jsxs)("div",{...g,children:[(0,o.jsxs)(l.InspectorControls,{children:[(0,o.jsxs)(s.PanelBody,{title:(0,i.__)("Labels & Display","zenithium-blocks"),initialOpen:!0,children:[(0,o.jsx)(s.ToggleControl,{label:(0,i.__)("Show Overlay Labels","zenithium-blocks"),checked:f,onChange:e=>n({showLabels:e})}),f&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.TextControl,{label:(0,i.__)("Before Label","zenithium-blocks"),value:h,onChange:e=>n({beforeLabel:e})}),(0,o.jsx)(s.TextControl,{label:(0,i.__)("After Label","zenithium-blocks"),value:b,onChange:e=>n({afterLabel:e})})]})]}),(0,o.jsx)(s.PanelBody,{title:(0,i.__)("Slider Settings","zenithium-blocks"),initialOpen:!0,children:(0,o.jsx)(s.RangeControl,{label:(0,i.__)("Initial Position (%)","zenithium-blocks"),value:u,onChange:e=>n({sliderPosition:e}),min:0,max:100})}),(0,o.jsxs)(s.PanelBody,{title:(0,i.__)("Media Management","zenithium-blocks"),initialOpen:!1,children:[(0,o.jsxs)("div",{className:"zenithium-blocks-media-control-item",children:[(0,o.jsx)("p",{children:(0,o.jsx)("strong",{children:(0,i.__)("Before Image","zenithium-blocks")})}),t?(0,o.jsx)(s.Button,{isDestructive:!0,isLink:!0,onClick:()=>n({beforeImage:"",beforeImageId:0,beforeAlt:""}),children:(0,i.__)("Remove Before Image","zenithium-blocks")}):(0,o.jsx)("p",{className:"description",children:(0,i.__)("No image selected","zenithium-blocks")})]}),(0,o.jsxs)("div",{className:"zenithium-blocks-media-control-item",style:{marginTop:"16px"},children:[(0,o.jsx)("p",{children:(0,o.jsx)("strong",{children:(0,i.__)("After Image","zenithium-blocks")})}),c?(0,o.jsx)(s.Button,{isDestructive:!0,isLink:!0,onClick:()=>n({afterImage:"",afterImageId:0,afterAlt:""}),children:(0,i.__)("Remove After Image","zenithium-blocks")}):(0,o.jsx)("p",{className:"description",children:(0,i.__)("No image selected","zenithium-blocks")})]})]})]}),(0,o.jsxs)("div",{className:"zenithium-blocks-controls-wrapper",children:[(0,o.jsx)(l.MediaUploadCheck,{children:(0,o.jsx)(l.MediaUpload,{onSelect:e=>{n({beforeImage:e.url,beforeImageId:e.id,beforeAlt:e.alt||(0,i.__)("Before image","zenithium-blocks")})},allowedTypes:["image"],value:a,render:({open:e})=>(0,o.jsx)(s.Button,{isSecondary:!0,onClick:e,children:t?(0,i.__)("Change Before Image","zenithium-blocks"):(0,i.__)("Select Before Image","zenithium-blocks")})})}),(0,o.jsx)(l.MediaUploadCheck,{children:(0,o.jsx)(l.MediaUpload,{onSelect:e=>{n({afterImage:e.url,afterImageId:e.id,afterAlt:e.alt||(0,i.__)("After image","zenithium-blocks")})},allowedTypes:["image"],value:m,render:({open:e})=>(0,o.jsx)(s.Button,{isSecondary:!0,onClick:e,children:c?(0,i.__)("Change After Image","zenithium-blocks"):(0,i.__)("Select After Image","zenithium-blocks")})})})]}),t&&c?(0,o.jsxs)("div",{className:"zenithium-blocks-comparison-container",style:{position:"relative",overflow:"hidden"},children:[(0,o.jsxs)("div",{className:"zenithium-blocks-image-after",children:[(0,o.jsx)("img",{src:c,alt:d}),f&&b&&(0,o.jsx)("span",{className:"zenithium-blocks-label zenithium-blocks-label-after",children:b})]}),(0,o.jsxs)("div",{className:"zenithium-blocks-image-before",style:{position:"absolute",top:0,left:0,bottom:0,width:`${u}%`,overflow:"hidden"},children:[(0,o.jsx)("img",{src:t,alt:r}),f&&h&&(0,o.jsx)("span",{className:"zenithium-blocks-label zenithium-blocks-label-before",children:h})]}),(0,o.jsxs)("div",{className:"zenithium-blocks-comparison-handle",style:{left:`${u}%`},children:[(0,o.jsx)("div",{className:"zenithium-blocks-handle-line"}),(0,o.jsx)("div",{className:"zenithium-blocks-handle-button",children:(0,o.jsxs)("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[(0,o.jsx)("polyline",{points:"15 18 9 12 15 6"}),(0,o.jsx)("polyline",{points:"9 18 15 12 9 6"})]})})]})]}):(0,o.jsx)("div",{className:"zenithium-blocks-placeholder",children:(0,o.jsx)("p",{children:(0,i.__)('Please select both a "Before" and "After" image to generate the comparison preview.',"zenithium-blocks")})})]})},save:()=>null})}};const i={};function l(s){const o=i[s];if(void 0!==o)return o.exports;const n=i[s]={exports:{}};return e[s](n,n.exports,l),n.exports}l.m=e,(()=>{const e=[];l.O=(i,s,o,n)=>{if(s){n=n||0;for(var t=e.length;t>0&&e[t-1][2]>n;t--)e[t]=e[t-1];return void(e[t]=[s,o,n])}let a=1/0;for(t=0;t<e.length;t++){let[s,o,n]=e[t],c=!0;for(var r=0;r<s.length;r++)(!1&n||a>=n)&&Object.keys(l.O).every(e=>l.O[e](s[r]))?s.splice(r--,1):(c=!1,n<a&&(a=n));if(c){e.splice(t--,1);const l=o();void 0!==l&&(i=l)}}return i}})(),l.o=(e,i)=>Object.hasOwn(e,i),(()=>{const e={62:0,538:0};l.O.j=i=>0===e[i];const i=(i,s)=>{let[o,n,t]=s;var a,r,c=0;if(o.some(i=>0!==e[i])){for(a in n)l.o(n,a)&&(l.m[a]=n[a]);if(t)var m=t(l)}for(i&&i(s);c<o.length;c++)r=o[c],l.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return l.O(m)},s=globalThis.webpackChunkzenithium_blocks||=[];s.forEach(i.bind(null,0)),s.push=i.bind(null,s.push.bind(s))})();let s=l.O(void 0,[538],()=>l(565));s=l.O(s)})();
  • zenithium-blocks/trunk/build/blocks/image-comparison/render.php

    r3640847 r3769770  
    1313        function ($attributes) {
    1414                $before_img = $attributes['beforeImage'] ?? '';
     15                $before_img_id = $attributes['beforeImageId'] ?? 0;
     16                $before_alt = $attributes['beforeAlt'] ?? '';
     17
    1518                $after_img = $attributes['afterImage'] ?? '';
     19                $after_img_id = $attributes['afterImageId'] ?? 0;
     20                $after_alt = $attributes['afterAlt'] ?? '';
     21
    1622                $before_label = $attributes['beforeLabel'] ?? 'Before';
    1723                $after_label = $attributes['afterLabel'] ?? 'After';
     24                $show_labels = $attributes['showLabels'] ?? true;
    1825                $position = $attributes['sliderPosition'] ?? 50;
    1926
    … …  
    3239                <div class="zenithium-blocks-comparison-container" data-position="<?php echo esc_attr($position); ?>">
    3340
    34                         <!-- After Image (Background) -->
    3541                        <div class="zenithium-blocks-image-after">
    36                                 <img src="<?php echo esc_url($after_img); ?>"
    37                                         alt="<?php esc_attr_e('After Image', 'zenithium-blocks'); ?>" />
    38                                 <?php if (!empty($after_label)): ?>
     42                                <?php
     43                                        if ($after_img_id > 0) {
     44                                                echo wp_get_attachment_image(
     45                                                        $after_img_id,
     46                                                        'full',
     47                                                        false,
     48                                                        array(
     49                                                                'alt' => esc_attr($after_alt),
     50                                                        )
     51                                                );
     52                                        } else {
     53                                                ?>
     54                                        <img src="<?php echo esc_url($after_img); ?>" alt="<?php echo esc_attr($after_alt); ?>" />
     55                                        <?php
     56                                        }
     57                                        ?>
     58
     59                                <?php if ($show_labels && !empty($after_label)): ?>
    3960                                        <span class="zenithium-blocks-label zenithium-blocks-label-after">
    4061                                                <?php echo esc_html($after_label); ?>
    … …  
    4364                        </div>
    4465
    45                         <!-- Before Image (Clipped Overlay) -->
    46                         <div class="zenithium-blocks-image-before" style="<?php echo esc_attr(sprintf('width: %s%%;', $position)); ?>">
    47                                 <img src="<?php echo esc_url($before_img); ?>"
    48                                         alt="<?php esc_attr_e('Before Image', 'zenithium-blocks'); ?>" />
    49                                 <?php if (!empty($before_label)): ?>
     66                        <div class="zenithium-blocks-image-before"
     67                                style="<?php echo esc_attr(sprintf('width: %s%%;', $position)); ?>">
     68                                <?php
     69                                        if ($before_img_id > 0) {
     70                                                echo wp_get_attachment_image(
     71                                                        $before_img_id,
     72                                                        'full',
     73                                                        false,
     74                                                        array(
     75                                                                'alt' => esc_attr($before_alt),
     76                                                        )
     77                                                );
     78                                        } else {
     79                                                ?>
     80                                        <img src="<?php echo esc_url($before_img); ?>" alt="<?php echo esc_attr($before_alt); ?>" />
     81                                        <?php
     82                                        }
     83                                        ?>
     84
     85                                <?php if ($show_labels && !empty($before_label)): ?>
    5086                                        <span class="zenithium-blocks-label zenithium-blocks-label-before">
    5187                                                <?php echo esc_html($before_label); ?>
    … …  
    5490                        </div>
    5591
    56                         <!-- Range Slider Handle -->
    5792                        <input type="range" min="0" max="100" value="<?php echo esc_attr($position); ?>"
    5893                                class="zenithium-blocks-comparison-slider"
    5994                                aria-label="<?php esc_attr_e('Image comparison slider', 'zenithium-blocks'); ?>" />
    6095
    61                         <!-- Visual Split Line & Knob -->
    6296                        <div class="zenithium-blocks-comparison-handle"
    6397                                style="<?php echo esc_attr(sprintf('left: %s%%;', $position)); ?>">
  • zenithium-blocks/trunk/build/blocks/image-comparison/style-index-rtl.css

    r3640847 r3769770  
    1 .zenithium-blocks-comparison-container{overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;width:100%}.zenithium-blocks-comparison-container img{display:block;height:auto;max-width:none;object-fit:cover;width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-image-after{width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-image-before{height:100%;right:0;overflow:hidden;position:absolute;top:0;z-index:1}.zenithium-blocks-comparison-container .zenithium-blocks-image-before img{height:100%;width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-slider{cursor:ew-resize;height:100%;right:0;margin:0;opacity:0;position:absolute;top:0;width:100%;z-index:3}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle{bottom:0;pointer-events:none;position:absolute;top:0;transform:translateX(50%);z-index:2}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle .zenithium-blocks-handle-line{background:#fff;bottom:0;box-shadow:0 0 4px rgba(0,0,0,.4);right:50%;position:absolute;top:0;width:2px}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle .zenithium-blocks-handle-button{align-items:center;background:#fff;border-radius:50%;box-shadow:0 2px 6px rgba(0,0,0,.3);color:#333;display:flex;height:40px;justify-content:center;right:50%;position:absolute;top:50%;transform:translate(50%,-50%);width:40px}.zenithium-blocks-comparison-container .zenithium-blocks-label{backdrop-filter:blur(4px);background:rgba(0,0,0,.65);border-radius:4px;color:#fff;font-size:13px;font-weight:600;letter-spacing:.5px;padding:6px 12px;pointer-events:none;position:absolute;text-transform:uppercase;top:15px;white-space:nowrap;z-index:2}.zenithium-blocks-comparison-container .zenithium-blocks-label.zenithium-blocks-label-before{right:15px}.zenithium-blocks-comparison-container .zenithium-blocks-label.zenithium-blocks-label-after{left:15px}
     1.zenithium-blocks-comparison-wrapper{margin-bottom:1.5rem;margin-top:1.5rem;width:100%}.zenithium-blocks-comparison-container{overflow:hidden;position:relative;touch-action:pan-y;user-select:none;-webkit-user-select:none;width:100%}.zenithium-blocks-comparison-container img{display:block;height:auto;max-width:none;object-fit:cover;width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-image-after{display:block;position:relative;width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-image-after img{height:auto;width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-image-before{height:100%;right:0;overflow:hidden;position:absolute;top:0;z-index:1}.zenithium-blocks-comparison-container .zenithium-blocks-image-before img{height:100%;right:0;max-width:none;object-fit:cover;position:absolute;top:0;width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-slider{appearance:none;background:transparent;cursor:ew-resize;height:100%;right:0;margin:0;opacity:0;padding:0;position:absolute;top:0;width:100%;z-index:3}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-slider::-webkit-slider-thumb{appearance:none;cursor:ew-resize;height:100%;width:40px}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-slider::-moz-range-thumb{background:transparent;border:none;cursor:ew-resize;height:100%;width:40px}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle{bottom:0;pointer-events:none;position:absolute;top:0;transform:translateX(50%);transition:right .05s ease-out;z-index:2}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle .zenithium-blocks-handle-line{background:#fff;bottom:0;box-shadow:0 0 6px rgba(0,0,0,.4);right:50%;position:absolute;top:0;transform:translateX(50%);width:2px}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle .zenithium-blocks-handle-button{align-items:center;background:#fff;border-radius:50%;box-shadow:0 2px 8px rgba(0,0,0,.35);color:#1e1e1e;display:flex;height:40px;justify-content:center;right:50%;position:absolute;top:50%;transform:translate(50%,-50%);width:40px}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle .zenithium-blocks-handle-button svg{display:block}.zenithium-blocks-comparison-container .zenithium-blocks-label{backdrop-filter:blur(4px);background:rgba(0,0,0,.65);border-radius:4px;color:#fff;font-size:13px;font-weight:600;letter-spacing:.5px;padding:6px 12px;pointer-events:none;position:absolute;text-transform:uppercase;top:15px;white-space:nowrap;z-index:2}.zenithium-blocks-comparison-container .zenithium-blocks-label.zenithium-blocks-label-before{right:15px}.zenithium-blocks-comparison-container .zenithium-blocks-label.zenithium-blocks-label-after{left:15px}
  • zenithium-blocks/trunk/build/blocks/image-comparison/style-index.css

    r3640847 r3769770  
    1 .zenithium-blocks-comparison-container{overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;width:100%}.zenithium-blocks-comparison-container img{display:block;height:auto;max-width:none;object-fit:cover;width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-image-after{width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-image-before{height:100%;left:0;overflow:hidden;position:absolute;top:0;z-index:1}.zenithium-blocks-comparison-container .zenithium-blocks-image-before img{height:100%;width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-slider{cursor:ew-resize;height:100%;left:0;margin:0;opacity:0;position:absolute;top:0;width:100%;z-index:3}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle{bottom:0;pointer-events:none;position:absolute;top:0;transform:translateX(-50%);z-index:2}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle .zenithium-blocks-handle-line{background:#fff;bottom:0;box-shadow:0 0 4px rgba(0,0,0,.4);left:50%;position:absolute;top:0;width:2px}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle .zenithium-blocks-handle-button{align-items:center;background:#fff;border-radius:50%;box-shadow:0 2px 6px rgba(0,0,0,.3);color:#333;display:flex;height:40px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:40px}.zenithium-blocks-comparison-container .zenithium-blocks-label{backdrop-filter:blur(4px);background:rgba(0,0,0,.65);border-radius:4px;color:#fff;font-size:13px;font-weight:600;letter-spacing:.5px;padding:6px 12px;pointer-events:none;position:absolute;text-transform:uppercase;top:15px;white-space:nowrap;z-index:2}.zenithium-blocks-comparison-container .zenithium-blocks-label.zenithium-blocks-label-before{left:15px}.zenithium-blocks-comparison-container .zenithium-blocks-label.zenithium-blocks-label-after{right:15px}
     1.zenithium-blocks-comparison-wrapper{margin-bottom:1.5rem;margin-top:1.5rem;width:100%}.zenithium-blocks-comparison-container{overflow:hidden;position:relative;touch-action:pan-y;user-select:none;-webkit-user-select:none;width:100%}.zenithium-blocks-comparison-container img{display:block;height:auto;max-width:none;object-fit:cover;width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-image-after{display:block;position:relative;width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-image-after img{height:auto;width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-image-before{height:100%;left:0;overflow:hidden;position:absolute;top:0;z-index:1}.zenithium-blocks-comparison-container .zenithium-blocks-image-before img{height:100%;left:0;max-width:none;object-fit:cover;position:absolute;top:0;width:100%}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-slider{appearance:none;background:transparent;cursor:ew-resize;height:100%;left:0;margin:0;opacity:0;padding:0;position:absolute;top:0;width:100%;z-index:3}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-slider::-webkit-slider-thumb{appearance:none;cursor:ew-resize;height:100%;width:40px}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-slider::-moz-range-thumb{background:transparent;border:none;cursor:ew-resize;height:100%;width:40px}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle{bottom:0;pointer-events:none;position:absolute;top:0;transform:translateX(-50%);transition:left .05s ease-out;z-index:2}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle .zenithium-blocks-handle-line{background:#fff;bottom:0;box-shadow:0 0 6px rgba(0,0,0,.4);left:50%;position:absolute;top:0;transform:translateX(-50%);width:2px}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle .zenithium-blocks-handle-button{align-items:center;background:#fff;border-radius:50%;box-shadow:0 2px 8px rgba(0,0,0,.35);color:#1e1e1e;display:flex;height:40px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:40px}.zenithium-blocks-comparison-container .zenithium-blocks-comparison-handle .zenithium-blocks-handle-button svg{display:block}.zenithium-blocks-comparison-container .zenithium-blocks-label{backdrop-filter:blur(4px);background:rgba(0,0,0,.65);border-radius:4px;color:#fff;font-size:13px;font-weight:600;letter-spacing:.5px;padding:6px 12px;pointer-events:none;position:absolute;text-transform:uppercase;top:15px;white-space:nowrap;z-index:2}.zenithium-blocks-comparison-container .zenithium-blocks-label.zenithium-blocks-label-before{left:15px}.zenithium-blocks-comparison-container .zenithium-blocks-label.zenithium-blocks-label-after{right:15px}
  • zenithium-blocks/trunk/build/blocks/image-comparison/view.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array(), 'version' => 'f19d8677cebf396c94c8');
     1<?php return array('dependencies' => array(), 'version' => 'e97d9d152e80ecb79458');
  • zenithium-blocks/trunk/build/blocks/image-comparison/view.js

    r3640847 r3769770  
    1 document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".zenithium-blocks-comparison-container").forEach(e=>{const t=e.querySelector(".zenithium-blocks-comparison-slider"),o=e.querySelector(".zenithium-blocks-image-before"),n=e.querySelector(".zenithium-blocks-comparison-handle");t&&o&&n&&t.addEventListener("input",e=>{const t=e.target.value;o.style.width=`${t}%`,n.style.left=`${t}%`})})});
     1!function(){"use strict";const e=()=>{document.querySelectorAll(".zenithium-blocks-comparison-container").forEach(e=>{const t=e.querySelector(".zenithium-blocks-comparison-slider"),n=e.querySelector(".zenithium-blocks-image-before"),o=e.querySelector(".zenithium-blocks-comparison-handle");if(!t||!n||!o)return;let i=!1;const r=e=>{const t=`${e}%`;n.style.width=t,o.style.left=t};t.addEventListener("input",e=>{const t=e.target.value;i||(window.requestAnimationFrame(()=>{r(t),i=!1}),i=!0)}),r(t.value||50)})};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",e):e()}();
  • zenithium-blocks/trunk/build/blocks/sticky-cta/block.json

    r3640847 r3769770  
    44  "name": "zenithium-blocks/sticky-cta",
    55  "version": "1.0.0",
    6   "title": "Floating Sticky CTA Bar",
    7   "category": "widgets",
     6  "title": "Zenithium Floating Sticky CTA Bar",
     7  "category": "zenithium-blocks",
    88  "icon": "megaphone",
    99  "description": "A responsive floating banner for call-to-actions, announcements, and quick lead capture.",
    … …  
    2323    "spacing": {
    2424      "margin": true,
    25       "padding": true
     25      "padding": true,
     26      "blockGap": true
    2627    },
    2728    "color": {
    2829      "text": true,
    29       "background": true
     30      "background": true,
     31      "gradients": true,
     32      "link": true,
     33      "heading": true,
     34      "button": true,
     35      "enableContrastChecker": true
     36    },
     37    "typography": {
     38      "fontSize": true,
     39      "lineHeight": true,
     40      "fontFamily": true,
     41      "fontWeight": true,
     42      "fontStyle": true,
     43      "textTransform": true,
     44      "letterSpacing": true,
     45      "textDecoration": true
     46    },
     47    "border": {
     48      "color": true,
     49      "radius": true,
     50      "style": true,
     51      "width": true
    3052    }
    3153  },
  • zenithium-blocks/trunk/build/blocks/sticky-cta/index-rtl.css

    r3640847 r3769770  
    1 .wp-block-zenithium-blocks-sticky-cta{border-radius:8px;bottom:auto!important;margin-bottom:20px;margin-top:20px;position:relative!important;top:auto!important}
     1.wp-block-zenithium-blocks-sticky-cta{border-radius:8px;bottom:auto!important;margin-bottom:20px;margin-top:20px;outline:1px dashed rgba(0,0,0,.15);outline-offset:2px;position:relative!important;top:auto!important;transition:outline-color .2s ease}.wp-block-zenithium-blocks-sticky-cta.is-selected,.wp-block-zenithium-blocks-sticky-cta:hover{outline-color:#2271b1}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-close{cursor:default;opacity:.6}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn{cursor:text}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn .block-editor-rich-text__editable{display:inline-block;min-width:20px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn .block-editor-rich-text__editable:focus,.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message .block-editor-rich-text__editable:focus{outline:none}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message .block-editor-rich-text__editable[data-rich-text-placeholder]:empty:before{opacity:.6}
  • zenithium-blocks/trunk/build/blocks/sticky-cta/index.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => '1820974cf529a9a38e7b');
     1<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => 'a4189bdd18496406e40b');
  • zenithium-blocks/trunk/build/blocks/sticky-cta/index.css

    r3640847 r3769770  
    1 .wp-block-zenithium-blocks-sticky-cta{border-radius:8px;bottom:auto!important;margin-bottom:20px;margin-top:20px;position:relative!important;top:auto!important}
     1.wp-block-zenithium-blocks-sticky-cta{border-radius:8px;bottom:auto!important;margin-bottom:20px;margin-top:20px;outline:1px dashed rgba(0,0,0,.15);outline-offset:2px;position:relative!important;top:auto!important;transition:outline-color .2s ease}.wp-block-zenithium-blocks-sticky-cta.is-selected,.wp-block-zenithium-blocks-sticky-cta:hover{outline-color:#2271b1}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-close{cursor:default;opacity:.6}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn{cursor:text}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn .block-editor-rich-text__editable{display:inline-block;min-width:20px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn .block-editor-rich-text__editable:focus,.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message .block-editor-rich-text__editable:focus{outline:none}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message .block-editor-rich-text__editable[data-rich-text-placeholder]:empty:before{opacity:.6}
  • zenithium-blocks/trunk/build/blocks/sticky-cta/index.js

    r3640847 r3769770  
    1 (()=>{"use strict";var e={243(){const e=window.wp.blocks,t=window.wp.blockEditor,o=window.wp.components,n=window.wp.i18n,l=JSON.parse('{"UU":"zenithium-blocks/sticky-cta"}'),i=window.ReactJSXRuntime;(0,e.registerBlockType)(l.UU,{edit:({attributes:e,setAttributes:l,clientId:s})=>{const{content:c,buttonText:r,buttonUrl:a,buttonTarget:u,position:h,isDismissible:b,ctaId:d,backgroundColor:x,textColor:m,btnBgColor:k,btnTextColor:g}=e;d||l({ctaId:`zb-cta-${s.slice(0,8)}`});const p=(0,t.useBlockProps)({className:`zenithium-blocks-sticky-cta position-${h}`,style:{backgroundColor:x,color:m}});return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.InspectorControls,{children:[(0,i.jsxs)(o.PanelBody,{title:(0,n.__)("CTA Settings","zenithium-blocks"),initialOpen:!0,children:[(0,i.jsx)(o.SelectControl,{label:(0,n.__)("Position","zenithium-blocks"),value:h,options:[{label:(0,n.__)("Fixed Bottom","zenithium-blocks"),value:"bottom"},{label:(0,n.__)("Fixed Top","zenithium-blocks"),value:"top"}],onChange:e=>l({position:e})}),(0,i.jsx)(o.ToggleControl,{label:(0,n.__)("Allow Dismissal (Close Button)","zenithium-blocks"),checked:b,onChange:e=>l({isDismissible:e})}),(0,i.jsx)(o.ToggleControl,{label:(0,n.__)("Open Link in New Tab","zenithium-blocks"),checked:u,onChange:e=>l({buttonTarget:e})})]}),(0,i.jsxs)(o.PanelBody,{title:(0,n.__)("Colors & Styles","zenithium-blocks"),initialOpen:!1,children:[(0,i.jsx)("p",{children:(0,i.jsx)("strong",{children:(0,n.__)("Bar Background","zenithium-blocks")})}),(0,i.jsx)(o.ColorPalette,{value:x,onChange:e=>l({backgroundColor:e||"#0f172a"})}),(0,i.jsx)("p",{children:(0,i.jsx)("strong",{children:(0,n.__)("Bar Text Color","zenithium-blocks")})}),(0,i.jsx)(o.ColorPalette,{value:m,onChange:e=>l({textColor:e||"#ffffff"})}),(0,i.jsx)("p",{children:(0,i.jsx)("strong",{children:(0,n.__)("Button Background","zenithium-blocks")})}),(0,i.jsx)(o.ColorPalette,{value:k,onChange:e=>l({btnBgColor:e||"#2563eb"})}),(0,i.jsx)("p",{children:(0,i.jsx)("strong",{children:(0,n.__)("Button Text Color","zenithium-blocks")})}),(0,i.jsx)(o.ColorPalette,{value:g,onChange:e=>l({btnTextColor:e||"#ffffff"})})]}),(0,i.jsx)(o.PanelBody,{title:(0,n.__)("Button Link","zenithium-blocks"),initialOpen:!1,children:(0,i.jsx)(t.URLInput,{value:a,onChange:e=>l({buttonUrl:e}),isFullWidth:!0})})]}),(0,i.jsx)("div",{...p,children:(0,i.jsxs)("div",{className:"zenithium-blocks-cta-container",children:[(0,i.jsx)("div",{className:"zenithium-blocks-cta-message",children:(0,i.jsx)(t.RichText,{tagName:"div",value:c,onChange:e=>l({content:e}),placeholder:(0,n.__)("Write banner message...","zenithium-blocks"),allowedFormats:["core/bold","core/italic","core/link"]})}),(0,i.jsxs)("div",{className:"zenithium-blocks-cta-action",children:[(0,i.jsx)("span",{className:"zenithium-blocks-cta-btn",style:{backgroundColor:k,color:g},children:(0,i.jsx)(t.RichText,{tagName:"span",value:r,onChange:e=>l({buttonText:e}),placeholder:(0,n.__)("Button Text","zenithium-blocks"),allowedFormats:[]})}),b&&(0,i.jsx)("button",{type:"button",className:"zenithium-blocks-cta-close","aria-label":"Close",children:"×"})]})]})})]})},save:()=>null})}};const t={};function o(n){const l=t[n];if(void 0!==l)return l.exports;const i=t[n]={exports:{}};return e[n](i,i.exports,o),i.exports}o.m=e,(()=>{const e=[];o.O=(t,n,l,i)=>{if(n){i=i||0;for(var s=e.length;s>0&&e[s-1][2]>i;s--)e[s]=e[s-1];return void(e[s]=[n,l,i])}let c=1/0;for(s=0;s<e.length;s++){let[n,l,i]=e[s],a=!0;for(var r=0;r<n.length;r++)(!1&i||c>=i)&&Object.keys(o.O).every(e=>o.O[e](n[r]))?n.splice(r--,1):(a=!1,i<c&&(c=i));if(a){e.splice(s--,1);const o=l();void 0!==o&&(t=o)}}return t}})(),o.o=(e,t)=>Object.hasOwn(e,t),(()=>{const e={89:0,541:0};o.O.j=t=>0===e[t];const t=(t,n)=>{let[l,i,s]=n;var c,r,a=0;if(l.some(t=>0!==e[t])){for(c in i)o.o(i,c)&&(o.m[c]=i[c]);if(s)var u=s(o)}for(t&&t(n);a<l.length;a++)r=l[a],o.o(e,r)&&e[r]&&e[r][0](),e[r]=0;return o.O(u)},n=globalThis.webpackChunkzenithium_blocks||=[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();let n=o.O(void 0,[541],()=>o(243));n=o.O(n)})();
     1(()=>{"use strict";var e={983(){const e=window.wp.blocks,t=window.wp.blockEditor,o=window.wp.components,n=window.wp.i18n,l=window.wp.element,i=JSON.parse('{"UU":"zenithium-blocks/sticky-cta"}'),s=window.ReactJSXRuntime,a=(e,t="")=>e?"string"==typeof e&&e.startsWith("var:preset|color|")?`var(--wp--preset--color--${e.replace("var:preset|color|","")})`:e:t;(0,e.registerBlockType)(i.UU,{edit:function({attributes:e,setAttributes:i,clientId:c}){const{content:r,buttonText:b,buttonUrl:u,buttonTarget:h,position:d,isDismissible:m,ctaId:f,backgroundColor:p,textColor:k,btnBgColor:g,btnTextColor:x}=e;(0,l.useEffect)(()=>{f||i({ctaId:`zb-cta-${c.slice(0,8)}`})},[f,c,i]);const _=(0,t.useBlockProps)({className:`zenithium-blocks-sticky-cta position-${d}`,style:{"--zb-cta-bg":a(p,"#0f172a"),"--zb-cta-text":a(k,"#ffffff"),"--zb-btn-bg":a(g,"#2563eb"),"--zb-btn-text":a(x,"#ffffff")}});return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.InspectorControls,{children:[(0,s.jsxs)(o.PanelBody,{title:(0,n.__)("CTA Settings","zenithium-blocks"),initialOpen:!0,children:[(0,s.jsx)(o.SelectControl,{label:(0,n.__)("Position","zenithium-blocks"),value:d,options:[{label:(0,n.__)("Fixed Bottom","zenithium-blocks"),value:"bottom"},{label:(0,n.__)("Fixed Top","zenithium-blocks"),value:"top"}],onChange:e=>i({position:e})}),(0,s.jsx)(o.ToggleControl,{label:(0,n.__)("Allow Dismissal (Close Button)","zenithium-blocks"),checked:m,onChange:e=>i({isDismissible:e})}),(0,s.jsx)(o.ToggleControl,{label:(0,n.__)("Open Link in New Tab","zenithium-blocks"),checked:h,onChange:e=>i({buttonTarget:e})})]}),(0,s.jsx)(o.PanelBody,{title:(0,n.__)("Button Link","zenithium-blocks"),initialOpen:!1,children:(0,s.jsx)(t.URLInput,{value:u,onChange:e=>i({buttonUrl:e}),isFullWidth:!0})}),(0,s.jsx)(t.PanelColorSettings,{title:(0,n.__)("Color Settings","zenithium-blocks"),initialOpen:!1,enableAlpha:!0,colorSettings:[{value:p,onChange:e=>i({backgroundColor:e||"#0f172a"}),label:(0,n.__)("Bar Background","zenithium-blocks")},{value:k,onChange:e=>i({textColor:e||"#ffffff"}),label:(0,n.__)("Bar Text Color","zenithium-blocks")},{value:g,onChange:e=>i({btnBgColor:e||"#2563eb"}),label:(0,n.__)("Button Background","zenithium-blocks")},{value:x,onChange:e=>i({btnTextColor:e||"#ffffff"}),label:(0,n.__)("Button Text Color","zenithium-blocks")}]})]}),(0,s.jsx)("div",{..._,children:(0,s.jsxs)("div",{className:"zenithium-blocks-cta-container",children:[(0,s.jsx)("div",{className:"zenithium-blocks-cta-message",children:(0,s.jsx)(t.RichText,{tagName:"div",value:r,onChange:e=>i({content:e}),placeholder:(0,n.__)("Write banner message...","zenithium-blocks"),allowedFormats:["core/bold","core/italic","core/link"]})}),(0,s.jsxs)("div",{className:"zenithium-blocks-cta-action",children:[(0,s.jsx)("span",{className:"zenithium-blocks-cta-btn",children:(0,s.jsx)(t.RichText,{tagName:"span",value:b,onChange:e=>i({buttonText:e}),placeholder:(0,n.__)("Button Text","zenithium-blocks"),allowedFormats:[],multiline:!1})}),m&&(0,s.jsx)("button",{type:"button",className:"zenithium-blocks-cta-close","aria-label":(0,n.__)("Close","zenithium-blocks"),children:"×"})]})]})})]})},save:()=>null})}};const t={};function o(n){const l=t[n];if(void 0!==l)return l.exports;const i=t[n]={exports:{}};return e[n](i,i.exports,o),i.exports}o.m=e,(()=>{const e=[];o.O=(t,n,l,i)=>{if(n){i=i||0;for(var s=e.length;s>0&&e[s-1][2]>i;s--)e[s]=e[s-1];return void(e[s]=[n,l,i])}let a=1/0;for(s=0;s<e.length;s++){let[n,l,i]=e[s],r=!0;for(var c=0;c<n.length;c++)(!1&i||a>=i)&&Object.keys(o.O).every(e=>o.O[e](n[c]))?n.splice(c--,1):(r=!1,i<a&&(a=i));if(r){e.splice(s--,1);const o=l();void 0!==o&&(t=o)}}return t}})(),o.o=(e,t)=>Object.hasOwn(e,t),(()=>{const e={89:0,541:0};o.O.j=t=>0===e[t];const t=(t,n)=>{let[l,i,s]=n;var a,c,r=0;if(l.some(t=>0!==e[t])){for(a in i)o.o(i,a)&&(o.m[a]=i[a]);if(s)var b=s(o)}for(t&&t(n);r<l.length;r++)c=l[r],o.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return o.O(b)},n=globalThis.webpackChunkzenithium_blocks||=[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();let n=o.O(void 0,[541],()=>o(983));n=o.O(n)})();
  • zenithium-blocks/trunk/build/blocks/sticky-cta/render.php

    r3640847 r3769770  
    11<?php
    22/**
    3  * Render template for Floating Sticky CTA Bar
     3 * Dynamic render template for Floating Sticky CTA Bar block.
    44 *
    55 * @package ZenithiumBlocks
    … …  
    1212call_user_func(
    1313    function ($attributes) {
    14         $content = $attributes['content'] ?? '';
    15         $button_text = $attributes['buttonText'] ?? '';
    16         $button_url = $attributes['buttonUrl'] ?? '#';
    17         $button_target = !empty($attributes['buttonTarget']) ? '_blank' : '_self';
    18         $position = $attributes['position'] ?? 'bottom';
    19         $is_dismissible = $attributes['isDismissible'] ?? true;
    20         $cta_id = !empty($attributes['ctaId']) ? $attributes['ctaId'] : 'zb-cta-default';
     14        $format_color = function ($color, $default = '') {
     15            if (empty($color)) {
     16                return $default;
     17            }
     18            if (is_string($color) && str_starts_with($color, 'var:preset|color|')) {
     19                $slug = str_replace('var:preset|color|', '', $color);
     20                return "var(--wp--preset--color--{$slug})";
     21            }
     22            return $color;
     23        };
    2124
    22         $bg_color = $attributes['backgroundColor'] ?? '#0f172a';
    23         $text_color = $attributes['textColor'] ?? '#ffffff';
    24         $btn_bg_color = $attributes['btnBgColor'] ?? '#2563eb';
    25         $btn_text_color = $attributes['btnTextColor'] ?? '#ffffff';
     25        $content        = $attributes['content'] ?? '';
     26        $button_text    = $attributes['buttonText'] ?? '';
     27        $button_url     = $attributes['buttonUrl'] ?? '#';
     28        $button_target  = !empty($attributes['buttonTarget']) ? '_blank' : '_self';
     29        $position       = $attributes['position'] ?? 'bottom';
     30        $is_dismissible = isset($attributes['isDismissible']) ? (bool) $attributes['isDismissible'] : true;
     31        $cta_id         = !empty($attributes['ctaId']) ? $attributes['ctaId'] : 'zb-cta-default';
     32
     33        $bg_color       = $format_color($attributes['backgroundColor'] ?? '', '#0f172a');
     34        $text_color     = $format_color($attributes['textColor'] ?? '', '#ffffff');
     35        $btn_bg_color   = $format_color($attributes['btnBgColor'] ?? '', '#2563eb');
     36        $btn_text_color = $format_color($attributes['btnTextColor'] ?? '', '#ffffff');
    2637
    2738        $wrapper_classes = sprintf(
    … …  
    3041        );
    3142
     43        $rel_attr = ('_blank' === $button_target) ? 'noopener noreferrer' : '';
     44
     45        $wrapper_style = sprintf(
     46            '--zb-cta-bg: %s; --zb-cta-text: %s; --zb-btn-bg: %s; --zb-btn-text: %s; background-color: %s; color: %s;',
     47            esc_attr($bg_color),
     48            esc_attr($text_color),
     49            esc_attr($btn_bg_color),
     50            esc_attr($btn_text_color),
     51            esc_attr($bg_color),
     52            esc_attr($text_color)
     53        );
     54
    3255        $wrapper_attributes = get_block_wrapper_attributes(
    3356            array(
    34                 'class' => $wrapper_classes,
     57                'class'       => $wrapper_classes,
    3558                'data-cta-id' => esc_attr($cta_id),
    36                 'style' => sprintf('background-color: %s; color: %s;', esc_attr($bg_color), esc_attr($text_color)),
     59                'style'       => $wrapper_style,
    3760            )
    3861        );
    … …  
    4770            <div class="zenithium-blocks-cta-action">
    4871                <?php if (!empty($button_text)): ?>
    49                     <a href="<?php echo esc_url($button_url); ?>" target="<?php echo esc_attr($button_target); ?>"
    50                         rel="<?php echo '_blank' === $button_target ? 'noopener noreferrer' : ''; ?>"
    51                         class="zenithium-blocks-cta-btn"
    52                         style="<?php echo esc_attr(sprintf('background-color: %s; color: %s;', $btn_bg_color, $btn_text_color)); ?>">
     72                    <a href="<?php echo esc_url($button_url); ?>"
     73                       target="<?php echo esc_attr($button_target); ?>"
     74                       <?php echo !empty($rel_attr) ? 'rel="' . esc_attr($rel_attr) . '"' : ''; ?>
     75                       class="zenithium-blocks-cta-btn"
     76                       style="background-color: var(--zb-btn-bg, <?php echo esc_attr($btn_bg_color); ?>); color: var(--zb-btn-text, <?php echo esc_attr($btn_text_color); ?>);"
     77                    >
    5378                        <?php echo esc_html($button_text); ?>
    5479                    </a>
    … …  
    5681
    5782                <?php if ($is_dismissible): ?>
    58                     <button type="button" class="zenithium-blocks-cta-close"
    59                         aria-label="<?php esc_attr_e('Close notification', 'zenithium-blocks'); ?>">
     83                    <button type="button"
     84                            class="zenithium-blocks-cta-close"
     85                            aria-label="<?php esc_attr_e('Close notification', 'zenithium-blocks'); ?>"
     86                    >
    6087                        &times;
    6188                    </button>
    … …  
    6693    <?php
    6794    },
    68     $attributes
     95    $attributes ?? []
    6996);
  • zenithium-blocks/trunk/build/blocks/sticky-cta/style-index-rtl.css

    r3640847 r3769770  
    1 .wp-block-zenithium-blocks-sticky-cta,.zenithium-blocks-sticky-cta{box-sizing:border-box;right:0!important;padding:14px 24px;position:fixed!important;left:0!important;transition:transform .3s ease,opacity .3s ease;width:100vw!important;z-index:999999!important}.wp-block-zenithium-blocks-sticky-cta.position-bottom,.zenithium-blocks-sticky-cta.position-bottom{bottom:0!important;box-shadow:0 -4px 20px rgba(0,0,0,.2);top:auto!important}.wp-block-zenithium-blocks-sticky-cta.position-top,.zenithium-blocks-sticky-cta.position-top{bottom:auto!important;box-shadow:0 4px 20px rgba(0,0,0,.2);top:0!important}.wp-block-zenithium-blocks-sticky-cta.is-hidden,.zenithium-blocks-sticky-cta.is-hidden{display:none!important}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-container,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-container{align-items:center;display:flex;gap:16px;justify-content:space-between;margin:0 auto;max-width:1200px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message{font-size:.95rem;line-height:1.4}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message p,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message p{margin:0}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message strong,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message strong{font-weight:600}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-action,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-action{align-items:center;display:flex;flex-shrink:0;gap:12px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn{border-radius:6px;display:inline-block;font-size:.9rem;font-weight:600;padding:8px 18px;text-align:center;text-decoration:none;transition:opacity .2s ease,transform .2s ease;white-space:nowrap}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn:hover,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn:hover{opacity:.9;transform:translateY(-1px)}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-close,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-close{background:transparent;border:none;color:inherit;cursor:pointer;font-size:1.4rem;line-height:1;opacity:.8;padding:4px 8px;transition:opacity .2s ease}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-close:hover,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-close:hover{opacity:1}@media(max-width:768px){.wp-block-zenithium-blocks-sticky-cta,.zenithium-blocks-sticky-cta{padding:12px 16px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-container,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-container{flex-direction:column;gap:10px;text-align:center}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-action,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-action{justify-content:center;width:100%}}
     1.wp-block-zenithium-blocks-sticky-cta,.zenithium-blocks-sticky-cta{box-sizing:border-box;right:0;padding:14px 24px;position:fixed;left:0;transition:transform .3s ease,opacity .3s ease;width:100%;z-index:99999}.wp-block-zenithium-blocks-sticky-cta.position-bottom,.zenithium-blocks-sticky-cta.position-bottom{bottom:0;box-shadow:0 -4px 20px rgba(0,0,0,.15);top:auto}.wp-block-zenithium-blocks-sticky-cta.position-top,.zenithium-blocks-sticky-cta.position-top{bottom:auto;box-shadow:0 4px 20px rgba(0,0,0,.15);top:0}.wp-block-zenithium-blocks-sticky-cta.is-hidden,.zenithium-blocks-sticky-cta.is-hidden{display:none!important}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-container,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-container{align-items:center;display:flex;gap:16px;justify-content:space-between;margin:0 auto;max-width:1200px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message{font-size:.95rem;line-height:1.4}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message p,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message p{margin:0!important;padding:0!important}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message strong,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message strong{font-weight:600}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message a,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message a{color:inherit;text-decoration:underline}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-action,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-action{align-items:center;display:flex;flex-shrink:0;gap:12px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn{border-radius:6px;display:inline-block;font-size:.9rem;font-weight:600;line-height:1.3;padding:8px 18px;text-align:center;text-decoration:none;transition:opacity .2s ease,transform .2s ease;white-space:nowrap}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn:hover,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn:hover{opacity:.9;transform:translateY(-1px)}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-close,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-close{background:transparent;border:none;border-radius:4px;color:inherit;cursor:pointer;font-size:1.4rem;line-height:1;opacity:.8;padding:4px 8px;transition:opacity .2s ease}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-close:hover,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-close:hover{background-color:hsla(0,0%,100%,.1);opacity:1}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-close:focus-visible,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-close:focus-visible{outline:2px solid currentcolor}body.admin-bar .zenithium-blocks-sticky-cta.position-top{top:32px}@media screen and (max-width:782px){body.admin-bar .zenithium-blocks-sticky-cta.position-top{top:46px}}@media(max-width:768px){.wp-block-zenithium-blocks-sticky-cta,.zenithium-blocks-sticky-cta{padding:12px 16px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-container,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-container{flex-direction:column;gap:10px;text-align:center}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-action,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-action{justify-content:center;width:100%}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn{flex-grow:1;max-width:280px}}
  • zenithium-blocks/trunk/build/blocks/sticky-cta/style-index.css

    r3640847 r3769770  
    1 .wp-block-zenithium-blocks-sticky-cta,.zenithium-blocks-sticky-cta{box-sizing:border-box;left:0!important;padding:14px 24px;position:fixed!important;right:0!important;transition:transform .3s ease,opacity .3s ease;width:100vw!important;z-index:999999!important}.wp-block-zenithium-blocks-sticky-cta.position-bottom,.zenithium-blocks-sticky-cta.position-bottom{bottom:0!important;box-shadow:0 -4px 20px rgba(0,0,0,.2);top:auto!important}.wp-block-zenithium-blocks-sticky-cta.position-top,.zenithium-blocks-sticky-cta.position-top{bottom:auto!important;box-shadow:0 4px 20px rgba(0,0,0,.2);top:0!important}.wp-block-zenithium-blocks-sticky-cta.is-hidden,.zenithium-blocks-sticky-cta.is-hidden{display:none!important}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-container,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-container{align-items:center;display:flex;gap:16px;justify-content:space-between;margin:0 auto;max-width:1200px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message{font-size:.95rem;line-height:1.4}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message p,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message p{margin:0}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message strong,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message strong{font-weight:600}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-action,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-action{align-items:center;display:flex;flex-shrink:0;gap:12px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn{border-radius:6px;display:inline-block;font-size:.9rem;font-weight:600;padding:8px 18px;text-align:center;text-decoration:none;transition:opacity .2s ease,transform .2s ease;white-space:nowrap}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn:hover,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn:hover{opacity:.9;transform:translateY(-1px)}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-close,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-close{background:transparent;border:none;color:inherit;cursor:pointer;font-size:1.4rem;line-height:1;opacity:.8;padding:4px 8px;transition:opacity .2s ease}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-close:hover,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-close:hover{opacity:1}@media(max-width:768px){.wp-block-zenithium-blocks-sticky-cta,.zenithium-blocks-sticky-cta{padding:12px 16px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-container,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-container{flex-direction:column;gap:10px;text-align:center}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-action,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-action{justify-content:center;width:100%}}
     1.wp-block-zenithium-blocks-sticky-cta,.zenithium-blocks-sticky-cta{box-sizing:border-box;left:0;padding:14px 24px;position:fixed;right:0;transition:transform .3s ease,opacity .3s ease;width:100%;z-index:99999}.wp-block-zenithium-blocks-sticky-cta.position-bottom,.zenithium-blocks-sticky-cta.position-bottom{bottom:0;box-shadow:0 -4px 20px rgba(0,0,0,.15);top:auto}.wp-block-zenithium-blocks-sticky-cta.position-top,.zenithium-blocks-sticky-cta.position-top{bottom:auto;box-shadow:0 4px 20px rgba(0,0,0,.15);top:0}.wp-block-zenithium-blocks-sticky-cta.is-hidden,.zenithium-blocks-sticky-cta.is-hidden{display:none!important}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-container,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-container{align-items:center;display:flex;gap:16px;justify-content:space-between;margin:0 auto;max-width:1200px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message{font-size:.95rem;line-height:1.4}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message p,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message p{margin:0!important;padding:0!important}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message strong,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message strong{font-weight:600}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-message a,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-message a{color:inherit;text-decoration:underline}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-action,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-action{align-items:center;display:flex;flex-shrink:0;gap:12px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn{border-radius:6px;display:inline-block;font-size:.9rem;font-weight:600;line-height:1.3;padding:8px 18px;text-align:center;text-decoration:none;transition:opacity .2s ease,transform .2s ease;white-space:nowrap}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn:hover,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn:hover{opacity:.9;transform:translateY(-1px)}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-close,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-close{background:transparent;border:none;border-radius:4px;color:inherit;cursor:pointer;font-size:1.4rem;line-height:1;opacity:.8;padding:4px 8px;transition:opacity .2s ease}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-close:hover,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-close:hover{background-color:hsla(0,0%,100%,.1);opacity:1}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-close:focus-visible,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-close:focus-visible{outline:2px solid currentcolor}body.admin-bar .zenithium-blocks-sticky-cta.position-top{top:32px}@media screen and (max-width:782px){body.admin-bar .zenithium-blocks-sticky-cta.position-top{top:46px}}@media(max-width:768px){.wp-block-zenithium-blocks-sticky-cta,.zenithium-blocks-sticky-cta{padding:12px 16px}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-container,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-container{flex-direction:column;gap:10px;text-align:center}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-action,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-action{justify-content:center;width:100%}.wp-block-zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn,.zenithium-blocks-sticky-cta .zenithium-blocks-cta-btn{flex-grow:1;max-width:280px}}
  • zenithium-blocks/trunk/build/blocks/sticky-cta/view.asset.php

    r3640847 r3769770  
    1 <?php return array('dependencies' => array(), 'version' => '8140a5fcaef753ff1688');
     1<?php return array('dependencies' => array(), 'version' => 'f519882aeb731f1ccbc9');
  • zenithium-blocks/trunk/build/blocks/sticky-cta/view.js

    r3640847 r3769770  
    1 document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".zenithium-blocks-sticky-cta").forEach(t=>{const e=t.dataset.ctaId;e&&"true"===sessionStorage.getItem(`dismissed_${e}`)&&t.classList.add("is-hidden")}),document.addEventListener("click",t=>{const e=t.target.closest(".zenithium-blocks-cta-close");if(!e)return;t.preventDefault();const s=e.closest(".zenithium-blocks-sticky-cta")||e.closest(".wp-block-zenithium-blocks-sticky-cta");if(!s)return;s.classList.add("is-hidden");const c=s.dataset.ctaId;c&&sessionStorage.setItem(`dismissed_${c}`,"true")})});
     1!function(){"use strict";const t="dismissed_",e=()=>{document.querySelectorAll(".zenithium-blocks-sticky-cta").forEach(e=>{(e=>{try{return e&&"true"===sessionStorage.getItem(`${t}${e}`)}catch(t){return!1}})(e.dataset.ctaId)&&e.classList.add("is-hidden")})},s=()=>{document.addEventListener("click",e=>{const s=e.target.closest(".zenithium-blocks-cta-close");if(!s)return;e.preventDefault();const c=s.closest(".zenithium-blocks-sticky-cta")||s.closest('[class*="wp-block-zenithium"]');c&&(c.classList.add("is-dismissing"),c.classList.add("is-hidden"),(e=>{try{e&&sessionStorage.setItem(`${t}${e}`,"true")}catch(t){}})(c.dataset.ctaId))})};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{e(),s()}):(e(),s())}();
  • zenithium-blocks/trunk/readme.txt

    r3644653 r3769770  
    11=== Zenithium Blocks – Modern Interactive Block Suite ===
    22Contributors: mdsabir07, msitheme
    3 Tags: accordion, carousel, counter, image comparison, block-editor
     3Tags: accordion, carousel, counter, image comparison, tabs, pricing table, testimonial, block-editor
    44Requires at least: 6.8
    55Tested up to: 7.1
    66Requires PHP: 8.0
    7 Stable tag: 1.0.1
     7Stable tag: 1.1.1
    88License: GPL-2.0-or-later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    1010
    11 High-demand modern interactive block suite for the WordPress Block Editor.
     11High-demand modern interactive block suite for the WordPress Block Editor with advanced native customization controls and layout components.
    1212
    1313== Description ==
    1414
    15 Zenithium Blocks is a collection of modern, performant, and interactive WordPress blocks designed to enhance your WordPress block editing experience.
     15Zenithium Blocks is a powerful collection of modern, high-performance, and interactive WordPress blocks designed to elevate your Gutenberg block editing experience. Built cleanly with native components and zero third-party script bloat.
    1616
    1717🔗 **Live Demo:** [View Zenithium Blocks Live Demo](https://sabir.coderdevsbd.com/zenithium-blocks/)
    1818
     19### ✨ What's New in Version 1.1.1 (Major Suite Expansion)
     20- **3 New Conversion & Layout Blocks Added**:
     21  - **Zenithium Pricing Card**: Feature-rich, conversion-focused pricing tables with custom highlights and CTA buttons.
     22  - **Zenithium Testimonial Card**: Elegant testimonial layouts with ratings, avatars, and author details.
     23  - **Zenithium Tabs Group & Tab Item**: Fully dynamic, accessible tabbed content containers for structured layouts.
     24- **Unified Architecture & Native Supports**: Completely refactored block suite leveraging WordPress native inspector supports (`color`, `typography`, `border`, and `spacing`).
     25- **Granular Customization**: Enhanced controls for header backgrounds, hover states, text colors, and icon styling across individual items.
     26- **Strict Coding Standards & Compliance**: Fully audited using Plugin Check with clean PHP localization/translators documentation and prefix namespacing.
     27
    1928### Key Features
    20 * **Accessible Accordion & FAQ**: Expandable content blocks with customizable icons, auto-close behavior, and smooth toggling.
    21 * **Modern Interactive Carousel**: Fully responsive slider block with customizable slide alignments and smooth transitions.
    22 * **Animated Stats Counter**: Eye-catching numerical counter block with customizable prefix, suffix, and scroll animations.
    23 * **Image Comparison Slider**: Interactive before/after image comparison slider.
    24 * **Floating Sticky CTA Bar**: High-converting sticky call-to-action bar for driving conversions across devices.
    25 * **Interactive Flip Card**: Engaging 3D double-sided flip card block for showcasing products, features, or team members.
    26 * **Lightweight & Fast**: Built using native WordPress block components (`@wordpress/block-editor`) with zero external bloat.
    27 * **Full Site Editing (FSE) Ready**: Seamlessly integrates with block themes and classic themes alike.
     29- **Accessible Accordion & FAQ**: Expandable group and child blocks with auto-close behavior, custom icons, typography controls, and built-in FAQPage JSON-LD schema generation.
     30- **Modern Interactive Carousel**: Fully responsive slider block with customizable slide alignments and smooth transitions.
     31- **Animated Stats Counter**: Eye-catching numerical counter block with customizable prefix, suffix, and scroll animations.
     32- **Image Comparison Slider**: Interactive before/after image comparison slider.
     33- **Floating Sticky CTA Bar**: High-converting sticky call-to-action bar for driving conversions across devices.
     34- **Interactive Flip Card**: Engaging 3D double-sided flip card block for showcasing products, features, or team members.
     35- **Pricing & Testimonial Cards**: Professional business blocks to drive sales and display social proof.
     36- **Tabs Group Suite**: Organize complex content seamlessly into accessible, interactive tabs.
     37- **Lightweight & Fast**: Built using native WordPress block components (`@wordpress/block-editor`) with zero external bloat.
     38- **Full Site Editing (FSE) Ready**: Seamlessly integrates with block themes and classic themes alike.
    2839
    2940== Installation ==
    … …  
    3647
    3748= Does Zenithium Blocks work with any theme? =
    38 Yes! Zenithium Blocks is designed to work with all block themes (FSE) as well as classic themes that support block editor.
     49Yes! Zenithium Blocks is designed to work with all block themes (FSE) as well as classic themes that support the block editor.
     50
     51= Can I customize individual block styles and colors? =
     52Yes! Version 1.1.1 introduces deep granular customization controls allowing you to override typography, backgrounds, text colors, and hover states per item or globally.
    3953
    4054== Screenshots ==
    4155
    42 1. Backend Block Editor controls for the Image Comparison and Accordion blocks.
    43 2. Frontend display of the Image Comparison slider and Accordion block.
     561. Backend Block Editor controls for the Tabs and Pricing Card blocks.
     572. Frontend display of the Testimonial Card and Pricing Tables.
    44583. Backend customization options for the Animated Stats Counter block.
    45594. Live frontend view of the Animated Stats Counter and Interactive Flip Card.
    … …  
    4963== Changelog ==
    5064
     65= 1.1.1 =
     66- Major Feature Release: Added 3 new blocks (Zenithium Pricing Card, Zenithium Testimonial Card, Zenithium Tabs Group & Tab Item).
     67- Major Architecture Update: Refactored entire block suite architecture to incorporate comprehensive native WordPress supports (typography, advanced borders, text/background/heading colors).
     68- Enhancement: Added dedicated inspector controls and hover state styling for individual components.
     69- Fix: Resolved all PHPCS linter warnings with proper `/* translators: */` comments and prefix namespacing across all dynamic render templates.
     70- Compatibility: Fully verified and optimized for WordPress 7.1 and modern Gutenberg environments.
     71
    5172= 1.0.1 =
    52 * Update: Tested and confirmed compatible with WordPress 7.1.
    53 * Fix: Added Author URI and updated metadata attributes.
     73- Update: Tested and confirmed compatible with WordPress 7.1.
     74- Fix: Added Author URI and updated metadata attributes.
    5475
    5576= 1.0.0 =
    56 * Initial official release.
    57 * Added Accordion & Accordion Group block.
    58 * Added Modern Interactive Carousel block.
    59 * Added Animated Stats Counter block.
    60 * Added Image Comparison block.
    61 * Added Floating Sticky CTA Bar block.
    62 * Added Interactive Flip Card block.
     77- Initial official release.
     78- Added Accordion, Carousel, Counter, Image Comparison, Sticky CTA, and Flip Card blocks.
    6379
    6480== Upgrade Notice ==
    6581
    66 = 1.0.1 =
    67 Tested and confirmed compatible with WordPress 7.1. Update is recommended for all users.
     82= 1.1.1 =
     83Major feature update adding 3 brand-new blocks, deep native customization supports, and full WordPress 7.1 compatibility. Update recommended for all users.
  • zenithium-blocks/trunk/zenithium-blocks.php

    r3644653 r3769770  
    33 * Plugin Name:       Zenithium Blocks – Modern Interactive Block Suite
    44 * Description:       High-demand modern interactive block suite for the WordPress Block Editor.
    5  * Version:           1.0.1
     5 * Version:           1.1.1
    66 * Requires at least: 6.8
    77 * Requires PHP:      8.0
    88 * Author:            mdsabir07, msitheme
    9  * Author URI: https://profiles.wordpress.org/mdsabir07/
    109 * License:           GPL-2.0-or-later
    1110 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    3332        }
    3433
    35         // 2. WP 6.7 Metadata Collection Fallback
     34        // 2. WP 6.7 Metadata Collection API (Only register collection, do NOT loop register_block_type_from_metadata)
    3635        if (function_exists('wp_register_block_metadata_collection') && file_exists($manifest_file)) {
    3736                wp_register_block_metadata_collection($blocks_dir, $manifest_file);
    38                 $manifest_data = require $manifest_file;
    39                 foreach (array_keys($manifest_data) as $block_slug) {
    40                         register_block_type_from_metadata($blocks_dir . '/' . $block_slug);
    41                 }
    4237                return;
    4338        }
    4439
    45         // 3. Robust Fallback Loop (If Manifest is missing or on standard WP Block API)
     40        // 3. Fallback Loop for WP versions without Metadata Collection API
    4641        if (file_exists($manifest_file)) {
    4742                $manifest_data = require $manifest_file;
    4843                $block_slugs = array_keys($manifest_data);
    4944        } else {
    50                 $block_slugs = [
     45                $block_slugs = array(
     46                        'accordion-group',
    5147                        'accordion',
    52                         'accordion-group',
    5348                        'animated-counter',
    5449                        'carousel',
    … …  
    5752                        'image-comparison',
    5853                        'sticky-cta',
    59                 ];
     54                        'testimonial-card',
     55                        'pricing-card',
     56                        'tabs-group',
     57                        'tab-item',
     58                );
    6059        }
    6160
    … …  
    6867}
    6968add_action('init', 'zenithium_blocks_block_init');
     69
     70/**
     71 * Registers custom block category for Zenithium Blocks.
     72 *
     73 * @param array $categories Existing block categories.
     74 * @return array Modified block categories.
     75 */
     76function zenithium_blocks_register_category($categories)
     77{
     78        return array_merge(
     79                array(
     80                        array(
     81                                'slug'  => 'zenithium-blocks',
     82                                'title' => __('Zenithium Blocks', 'zenithium-blocks'),
     83                                'icon'  => null,
     84                        ),
     85                ),
     86                $categories
     87        );
     88}
     89add_filter('block_categories_all', 'zenithium_blocks_register_category', 10, 1);
Note: See TracChangeset for help on using the changeset viewer.