@underlayerdev/ui 0.14.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/design-tokens/_variables.scss +23 -67
- package/fesm2022/underlayerdev-ui-carousel.mjs +2 -2
- package/fesm2022/underlayerdev-ui-carousel.mjs.map +1 -1
- package/fesm2022/underlayerdev-ui.mjs +88 -88
- package/fesm2022/underlayerdev-ui.mjs.map +1 -1
- package/fonts/{UltraBrand.otf → UnderlayerBrand.otf} +0 -0
- package/{styles/fonts/UltraIcons-v4-VF.ttf → fonts/UnderlayerIcons-v4-VF.ttf} +0 -0
- package/{styles/fonts/UltraNunitoSans.ttf → fonts/UnderlayerNunitoSans.ttf} +0 -0
- package/fonts/index.css +6 -6
- package/package.json +1 -1
- package/styles/fonts/{UltraBrand.otf → UnderlayerBrand.otf} +0 -0
- package/{fonts/UltraIcons-v4-VF.ttf → styles/fonts/UnderlayerIcons-v4-VF.ttf} +0 -0
- package/{fonts/UltraNunitoSans.ttf → styles/fonts/UnderlayerNunitoSans.ttf} +0 -0
- package/styles/fonts/index.css +6 -6
- package/styles/foundations.css +93 -159
package/README.md
CHANGED
|
@@ -28,8 +28,8 @@ The library follows an **Industrial Arena Minimal** aesthetic:
|
|
|
28
28
|
| Dimension | Score | Notes |
|
|
29
29
|
|-------------------------|-------|----------------------------------------------------------------------|
|
|
30
30
|
| Aesthetic impact | 5 | Highly distinctive neon-on-carbon look with strong brand typography. |
|
|
31
|
-
| Context fit | 4 | Well-suited for
|
|
32
|
-
| Implementation feasibility | 4 | Built on existing tokens (
|
|
31
|
+
| Context fit | 4 | Well-suited for gaming, wallet, and marketplace products. |
|
|
32
|
+
| Implementation feasibility | 4 | Built on existing tokens (Underlayer Brand, Underlayer Nunito Sans, dark BG, neon). |
|
|
33
33
|
| Performance safety | 4 | Minimal shadows/blur; motion kept sharp and sparse. |
|
|
34
34
|
| Consistency risk | 2 | Rich token set; requires discipline on spacing, motion, naming. |
|
|
35
35
|
|
|
@@ -37,7 +37,7 @@ The library follows an **Industrial Arena Minimal** aesthetic:
|
|
|
37
37
|
|
|
38
38
|
### System principles
|
|
39
39
|
|
|
40
|
-
- **Typography**: `
|
|
40
|
+
- **Typography**: `Underlayer Nunito Sans` for functional text; `Underlayer Brand` for loud, uppercase brand labels and key headlines.
|
|
41
41
|
- **Color**: Dark grey/black surfaces as base; purple as primary brand; green/yellow/orange only as functional status accents.
|
|
42
42
|
- **Spacing**: Tight baseline grid from tokenized spacing; no ad-hoc pixel values in components.
|
|
43
43
|
- **Motion**: Snappy, low-latency transitions — responsive and “mechanical”, not soft or bouncy.
|
|
@@ -283,25 +283,25 @@ $color-border-yellow: #ffe9a3 !default;
|
|
|
283
283
|
$color-link-enabled: #c2a8ff !default;
|
|
284
284
|
$color-link-hover: #d6c5ff !default;
|
|
285
285
|
$color-link-active: #a781ff !default;
|
|
286
|
-
$typography-font-family-headline-s:
|
|
287
|
-
$typography-font-family-body-m:
|
|
288
|
-
$typography-font-family-caption-l:
|
|
289
|
-
$typography-font-family-brand-caption-l:
|
|
286
|
+
$typography-font-family-headline-s: Underlayer Nunito Sans !default;
|
|
287
|
+
$typography-font-family-body-m: Underlayer Nunito Sans !default;
|
|
288
|
+
$typography-font-family-caption-l: Underlayer Nunito Sans !default;
|
|
289
|
+
$typography-font-family-brand-caption-l: Underlayer Brand !default;
|
|
290
290
|
$typography-font-family-caption-mono: Roboto Mono !default;
|
|
291
|
-
$typography-font-family-body-l:
|
|
292
|
-
$typography-font-family-headline-m:
|
|
293
|
-
$typography-font-family-headline-l:
|
|
294
|
-
$typography-font-family-headline-xl:
|
|
295
|
-
$typography-font-family-headline-2xl:
|
|
296
|
-
$typography-font-family-headline-3xl:
|
|
297
|
-
$typography-font-family-brand-body-m:
|
|
298
|
-
$typography-font-family-brand-body-l:
|
|
299
|
-
$typography-font-family-brand-headline-s:
|
|
300
|
-
$typography-font-family-brand-headline-m:
|
|
301
|
-
$typography-font-family-brand-headline-l:
|
|
302
|
-
$typography-font-family-brand-headline-xl:
|
|
303
|
-
$typography-font-family-brand-headline-2xl:
|
|
304
|
-
$typography-font-family-brand-headline-3xl:
|
|
291
|
+
$typography-font-family-body-l: Underlayer Nunito Sans !default;
|
|
292
|
+
$typography-font-family-headline-m: Underlayer Nunito Sans !default;
|
|
293
|
+
$typography-font-family-headline-l: Underlayer Nunito Sans !default;
|
|
294
|
+
$typography-font-family-headline-xl: Underlayer Nunito Sans !default;
|
|
295
|
+
$typography-font-family-headline-2xl: Underlayer Nunito Sans !default;
|
|
296
|
+
$typography-font-family-headline-3xl: Underlayer Nunito Sans !default;
|
|
297
|
+
$typography-font-family-brand-body-m: Underlayer Brand !default;
|
|
298
|
+
$typography-font-family-brand-body-l: Underlayer Brand !default;
|
|
299
|
+
$typography-font-family-brand-headline-s: Underlayer Brand !default;
|
|
300
|
+
$typography-font-family-brand-headline-m: Underlayer Brand !default;
|
|
301
|
+
$typography-font-family-brand-headline-l: Underlayer Brand !default;
|
|
302
|
+
$typography-font-family-brand-headline-xl: Underlayer Brand !default;
|
|
303
|
+
$typography-font-family-brand-headline-2xl: Underlayer Brand !default;
|
|
304
|
+
$typography-font-family-brand-headline-3xl: Underlayer Brand !default;
|
|
305
305
|
$typography-font-line-height-headline-s: 36px !default;
|
|
306
306
|
$typography-font-line-height-caption-l: 20px !default;
|
|
307
307
|
$typography-font-line-height-body-m: 24px !default;
|
|
@@ -432,7 +432,7 @@ $radius-radius-6: 24px !default;
|
|
|
432
432
|
$radius-radius-8: 32px !default;
|
|
433
433
|
$radius-radius-16: 64px !default;
|
|
434
434
|
$radius-radius-full: 4096px !default;
|
|
435
|
-
$iconography-font-family-icon:
|
|
435
|
+
$iconography-font-family-icon: Underlayer Icons !default;
|
|
436
436
|
$iconography-font-weight-medium: Medium !default;
|
|
437
437
|
$iconography-font-weight-bold: Bold !default;
|
|
438
438
|
$iconography-font-size-3: 12px !default;
|
|
@@ -567,7 +567,7 @@ $content-icon-glyph-streaming: streaming !default;
|
|
|
567
567
|
$content-icon-glyph-tablet: tablet !default;
|
|
568
568
|
$content-icon-glyph-terminal: terminal !default;
|
|
569
569
|
$content-icon-glyph-translate: translate !default;
|
|
570
|
-
$content-icon-glyph-
|
|
570
|
+
$content-icon-glyph-apps-cloud: apps_cloud !default;
|
|
571
571
|
$content-icon-glyph-usb: usb !default;
|
|
572
572
|
$content-icon-glyph-video: video !default;
|
|
573
573
|
$content-icon-glyph-widgets: widgets !default;
|
|
@@ -615,32 +615,23 @@ $content-icon-glyph-new-zealand-dollar: new_zealand_dollar !default;
|
|
|
615
615
|
$content-icon-glyph-pound-sterling: pound_sterling !default;
|
|
616
616
|
$content-icon-glyph-swedish-krona: swedish_krona !default;
|
|
617
617
|
$content-icon-glyph-swiss-franc: swiss_franc !default;
|
|
618
|
-
$content-icon-glyph-uos: uos !default;
|
|
619
618
|
$content-icon-glyph-yen: yen !default;
|
|
620
619
|
$content-icon-glyph-yuan: yuan !default;
|
|
621
620
|
$content-icon-glyph-currency-exchange: currency_exchange !default;
|
|
622
621
|
$content-icon-glyph-currency-receive: currency_receive !default;
|
|
623
622
|
$content-icon-glyph-currency-send: currency_send !default;
|
|
624
|
-
$content-icon-glyph-dollar-to-uos: dollar_to_uos !default;
|
|
625
623
|
$content-icon-glyph-marketplace-auction: marketplace_auction !default;
|
|
626
624
|
$content-icon-glyph-marketplace-cancel: marketplace_cancel !default;
|
|
627
625
|
$content-icon-glyph-marketplace-fixed: marketplace_fixed !default;
|
|
628
626
|
$content-icon-glyph-marketplace-inverted-auction: marketplace_inverted_auction !default;
|
|
629
627
|
$content-icon-glyph-nft: nft !default;
|
|
630
|
-
$content-icon-glyph-nft-check: nft_check !default;
|
|
631
|
-
$content-icon-glyph-receive-nft: receive_nft !default;
|
|
632
628
|
$content-icon-glyph-refund: refund !default;
|
|
633
629
|
$content-icon-glyph-refund-hand: refund_hand !default;
|
|
634
630
|
$content-icon-glyph-resell: resell !default;
|
|
635
631
|
$content-icon-glyph-resell-cancel: resell_cancel !default;
|
|
636
632
|
$content-icon-glyph-resell-dashed: resell_dashed !default;
|
|
637
|
-
$content-icon-glyph-send-nft: send_nft !default;
|
|
638
633
|
$content-icon-glyph-trade: trade !default;
|
|
639
634
|
$content-icon-glyph-trade-dashed: trade_dashed !default;
|
|
640
|
-
$content-icon-glyph-uos-add: uos_add !default;
|
|
641
|
-
$content-icon-glyph-uos-receive: uos_receive !default;
|
|
642
|
-
$content-icon-glyph-uos-to-dollar: uos_to_dollar !default;
|
|
643
|
-
$content-icon-glyph-uos-transfer: uos_transfer !default;
|
|
644
635
|
$content-icon-glyph-anchors: anchors !default;
|
|
645
636
|
$content-icon-glyph-archive: archive !default;
|
|
646
637
|
$content-icon-glyph-auction-hammer: auction_hammer !default;
|
|
@@ -844,14 +835,7 @@ $content-icon-glyph-file-encrypted: file_encrypted !default;
|
|
|
844
835
|
$content-icon-glyph-file-text: file_text !default;
|
|
845
836
|
$content-icon-glyph-file-text-double: file_text_double !default;
|
|
846
837
|
$content-icon-glyph-folder: folder !default;
|
|
847
|
-
$content-icon-glyph-
|
|
848
|
-
$content-icon-glyph-ultra-prime: ultra_prime !default;
|
|
849
|
-
$content-icon-glyph-ultra-wallet: ultra_wallet !default;
|
|
850
|
-
$content-icon-glyph-ultra-marketplace: ultra_marketplace !default;
|
|
851
|
-
$content-icon-glyph-first-hand-new-uniq: first_hand_new_uniq !default;
|
|
852
|
-
$content-icon-glyph-second-hand-uniq: second_hand_uniq !default;
|
|
853
|
-
$content-icon-glyph-ultra-games: ultra_games !default;
|
|
854
|
-
$content-icon-glyph-ultra-logo: ultra_logo !default;
|
|
838
|
+
$content-icon-glyph-games: games !default;
|
|
855
839
|
$content-icon-glyph-league: league !default;
|
|
856
840
|
$content-icon-glyph-double-elim: double_elim !default;
|
|
857
841
|
$content-icon-glyph-gauntlet: gauntlet !default;
|
|
@@ -860,15 +844,9 @@ $content-icon-glyph-simple-stage: simple_stage !default;
|
|
|
860
844
|
$content-icon-glyph-single-elim: single_elim !default;
|
|
861
845
|
$content-icon-glyph-swiss-system: swiss_system !default;
|
|
862
846
|
$content-icon-glyph-bracket-group: bracket_group !default;
|
|
863
|
-
$content-icon-glyph-uniq-unit: uniq_unit !default;
|
|
864
|
-
$content-icon-glyph-crypto-uos: crypto_uos !default;
|
|
865
847
|
$content-icon-glyph-screen-wide: screen_wide !default;
|
|
866
848
|
$content-icon-glyph-workshop: workshop !default;
|
|
867
849
|
$content-icon-glyph-cpu: cpu !default;
|
|
868
|
-
$content-icon-glyph-arena-logo: arena_logo !default;
|
|
869
|
-
$content-icon-glyph-ultra-prime-logo: ultra_prime_logo !default;
|
|
870
|
-
$content-icon-glyph-ultra-wallet-logo: ultra_wallet_logo !default;
|
|
871
|
-
$content-icon-glyph-ultra-marketplace-logo: ultra_marketplace_logo !default;
|
|
872
850
|
$content-icon-glyph-ultra-games-logo: ultra_games_logo !default;
|
|
873
851
|
$content-icon-glyph-no-result: no_result !default;
|
|
874
852
|
$content-icon-glyph-library: library !default;
|
|
@@ -1613,7 +1591,7 @@ $tokens: (
|
|
|
1613
1591
|
'tablet': $content-icon-glyph-tablet,
|
|
1614
1592
|
'terminal': $content-icon-glyph-terminal,
|
|
1615
1593
|
'translate': $content-icon-glyph-translate,
|
|
1616
|
-
'
|
|
1594
|
+
'apps_cloud': $content-icon-glyph-apps-cloud,
|
|
1617
1595
|
'usb': $content-icon-glyph-usb,
|
|
1618
1596
|
'video': $content-icon-glyph-video,
|
|
1619
1597
|
'widgets': $content-icon-glyph-widgets,
|
|
@@ -1661,32 +1639,23 @@ $tokens: (
|
|
|
1661
1639
|
'pound_sterling': $content-icon-glyph-pound-sterling,
|
|
1662
1640
|
'swedish_krona': $content-icon-glyph-swedish-krona,
|
|
1663
1641
|
'swiss_franc': $content-icon-glyph-swiss-franc,
|
|
1664
|
-
'uos': $content-icon-glyph-uos,
|
|
1665
1642
|
'yen': $content-icon-glyph-yen,
|
|
1666
1643
|
'yuan': $content-icon-glyph-yuan,
|
|
1667
1644
|
'currency_exchange': $content-icon-glyph-currency-exchange,
|
|
1668
1645
|
'currency_receive': $content-icon-glyph-currency-receive,
|
|
1669
1646
|
'currency_send': $content-icon-glyph-currency-send,
|
|
1670
|
-
'dollar_to_uos': $content-icon-glyph-dollar-to-uos,
|
|
1671
1647
|
'marketplace_auction': $content-icon-glyph-marketplace-auction,
|
|
1672
1648
|
'marketplace_cancel': $content-icon-glyph-marketplace-cancel,
|
|
1673
1649
|
'marketplace_fixed': $content-icon-glyph-marketplace-fixed,
|
|
1674
1650
|
'marketplace_inverted_auction': $content-icon-glyph-marketplace-inverted-auction,
|
|
1675
1651
|
'nft': $content-icon-glyph-nft,
|
|
1676
|
-
'nft_check': $content-icon-glyph-nft-check,
|
|
1677
|
-
'receive_nft': $content-icon-glyph-receive-nft,
|
|
1678
1652
|
'refund': $content-icon-glyph-refund,
|
|
1679
1653
|
'refund_hand': $content-icon-glyph-refund-hand,
|
|
1680
1654
|
'resell': $content-icon-glyph-resell,
|
|
1681
1655
|
'resell_cancel': $content-icon-glyph-resell-cancel,
|
|
1682
1656
|
'resell_dashed': $content-icon-glyph-resell-dashed,
|
|
1683
|
-
'send_nft': $content-icon-glyph-send-nft,
|
|
1684
1657
|
'trade': $content-icon-glyph-trade,
|
|
1685
1658
|
'trade_dashed': $content-icon-glyph-trade-dashed,
|
|
1686
|
-
'uos_add': $content-icon-glyph-uos-add,
|
|
1687
|
-
'uos_receive': $content-icon-glyph-uos-receive,
|
|
1688
|
-
'uos_to_dollar': $content-icon-glyph-uos-to-dollar,
|
|
1689
|
-
'uos_transfer': $content-icon-glyph-uos-transfer,
|
|
1690
1659
|
'anchors': $content-icon-glyph-anchors,
|
|
1691
1660
|
'archive': $content-icon-glyph-archive,
|
|
1692
1661
|
'auction_hammer': $content-icon-glyph-auction-hammer,
|
|
@@ -1890,14 +1859,7 @@ $tokens: (
|
|
|
1890
1859
|
'file_text': $content-icon-glyph-file-text,
|
|
1891
1860
|
'file_text_double': $content-icon-glyph-file-text-double,
|
|
1892
1861
|
'folder': $content-icon-glyph-folder,
|
|
1893
|
-
'
|
|
1894
|
-
'ultra_prime': $content-icon-glyph-ultra-prime,
|
|
1895
|
-
'ultra_wallet': $content-icon-glyph-ultra-wallet,
|
|
1896
|
-
'ultra_marketplace': $content-icon-glyph-ultra-marketplace,
|
|
1897
|
-
'first_hand_new_uniq': $content-icon-glyph-first-hand-new-uniq,
|
|
1898
|
-
'second_hand_uniq': $content-icon-glyph-second-hand-uniq,
|
|
1899
|
-
'ultra_games': $content-icon-glyph-ultra-games,
|
|
1900
|
-
'ultra_logo': $content-icon-glyph-ultra-logo,
|
|
1862
|
+
'games': $content-icon-glyph-games,
|
|
1901
1863
|
'league': $content-icon-glyph-league,
|
|
1902
1864
|
'double_elim': $content-icon-glyph-double-elim,
|
|
1903
1865
|
'gauntlet': $content-icon-glyph-gauntlet,
|
|
@@ -1906,15 +1868,9 @@ $tokens: (
|
|
|
1906
1868
|
'single_elim': $content-icon-glyph-single-elim,
|
|
1907
1869
|
'swiss_system': $content-icon-glyph-swiss-system,
|
|
1908
1870
|
'bracket_group': $content-icon-glyph-bracket-group,
|
|
1909
|
-
'uniq_unit': $content-icon-glyph-uniq-unit,
|
|
1910
|
-
'crypto_uos': $content-icon-glyph-crypto-uos,
|
|
1911
1871
|
'screen_wide': $content-icon-glyph-screen-wide,
|
|
1912
1872
|
'workshop': $content-icon-glyph-workshop,
|
|
1913
1873
|
'cpu': $content-icon-glyph-cpu,
|
|
1914
|
-
'arena_logo': $content-icon-glyph-arena-logo,
|
|
1915
|
-
'ultra_prime_logo': $content-icon-glyph-ultra-prime-logo,
|
|
1916
|
-
'ultra_wallet_logo': $content-icon-glyph-ultra-wallet-logo,
|
|
1917
|
-
'ultra_marketplace_logo': $content-icon-glyph-ultra-marketplace-logo,
|
|
1918
1874
|
'ultra_games_logo': $content-icon-glyph-ultra-games-logo,
|
|
1919
1875
|
'no_result': $content-icon-glyph-no-result,
|
|
1920
1876
|
'library': $content-icon-glyph-library,
|
|
@@ -94,7 +94,7 @@ class CarouselComponent {
|
|
|
94
94
|
</div>
|
|
95
95
|
</div>
|
|
96
96
|
</div>
|
|
97
|
-
`, isInline: true, styles: ["@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;contain:strict;display:inline-block;height:20px;inset:0;margin:auto;position:absolute;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}.ul-rich-text{font-family:
|
|
97
|
+
`, isInline: true, styles: ["@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;contain:strict;display:inline-block;height:20px;inset:0;margin:auto;position:absolute;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}.ul-rich-text{font-family:Underlayer Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400;color:#fff}.ul-rich-text p,.ul-rich-text ul,.ul-rich-text ol,.ul-rich-text blockquote,.ul-rich-text pre{margin-top:0;margin-bottom:16px}.ul-rich-text:last-child,.ul-rich-text p:last-child,.ul-rich-text ul:last-child,.ul-rich-text ol:last-child,.ul-rich-text blockquote:last-child,.ul-rich-text pre:last-child{margin-bottom:0}.ul-rich-text h1,.ul-rich-text h2,.ul-rich-text h3,.ul-rich-text h4,.ul-rich-text h5,.ul-rich-text h6{margin-top:32px;margin-bottom:12px;font-weight:1000}.ul-rich-text h1{font-family:Underlayer Nunito Sans;line-height:48px;font-size:48px;letter-spacing:-.48px;font-weight:1000}.ul-rich-text h2{font-family:Underlayer Nunito Sans;line-height:48px;font-size:40px;letter-spacing:-.4px;font-weight:1000}.ul-rich-text h3{font-family:Underlayer Nunito Sans;line-height:44px;font-size:36px;letter-spacing:-.36px;font-weight:1000}.ul-rich-text h4{font-family:Underlayer Nunito Sans;line-height:40px;font-size:32px;letter-spacing:-.32px;font-weight:1000}.ul-rich-text h5{font-family:Underlayer Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-rich-text h6{font-family:Underlayer Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-rich-text ul,.ul-rich-text ol{padding-left:24px}.ul-rich-text ul ul,.ul-rich-text ul ol,.ul-rich-text ol ul,.ul-rich-text ol ol{margin-top:8px;margin-bottom:8px}.ul-rich-text li{margin-top:4px;margin-bottom:4px}.ul-rich-text strong{font-weight:800}.ul-rich-text code{font-family:Roboto Mono;line-height:20px;font-size:14px;letter-spacing:0px;font-weight:400}.ul-rich-text em{font-style:italic}.ul-rich-text a{color:#c2a8ff;text-decoration:underline;text-decoration-thickness:1px}.ul-rich-text a:hover{color:#d6c5ff}.ul-rich-text a:active{color:#a781ff}.ul-rich-text pre{padding:16px;border-radius:8px;background-color:#3b3b3b;overflow-x:auto}.ul-rich-text pre code{font-family:Roboto Mono;line-height:20px;font-size:14px;letter-spacing:0px;font-weight:400}.ul-rich-text blockquote{margin-left:0;padding-left:16px;border-left-width:2px;border-left-style:solid;border-left-color:#ffffff1a;color:#ffffffb3}.ul-rich-text--muted{color:#ffffffb3}.ul-rich-text--inverse,.ul-rich-text--inverse a{color:#000}.ul-rich-text--inverse a:hover,.ul-rich-text--inverse a:active{color:#000000b3}.ul-rich-text--body-m{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-rich-text--compact p,.ul-rich-text--compact ul,.ul-rich-text--compact ol,.ul-rich-text--compact blockquote,.ul-rich-text--compact pre{margin-bottom:8px}.ul-rich-text--compact h1,.ul-rich-text--compact h2,.ul-rich-text--compact h3,.ul-rich-text--compact h4,.ul-rich-text--compact h5,.ul-rich-text--compact h6{margin-top:16px;margin-bottom:8px}.ul-carousel{display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;position:relative}.ul-carousel .splide__arrows{position:absolute;inset:0;z-index:1;pointer-events:none}.ul-carousel .splide__arrow{pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:0;border-radius:4096px;background-color:#0000004d;color:#fff;cursor:pointer;transition:background-color .25s cubic-bezier(.4,0,.2,1),opacity .25s cubic-bezier(.4,0,.2,1)}.ul-carousel .splide__arrow:hover:not(:disabled){background-color:#000000b3}.ul-carousel .splide__arrow svg{width:20px;height:20px;fill:currentColor}.ul-carousel .splide__arrow:disabled{opacity:.3;cursor:default}.ul-carousel .splide__arrow--prev{left:8px}.ul-carousel .splide__arrow--prev svg{transform:scaleX(-1)}.ul-carousel .splide__arrow--next{right:8px}.ul-carousel__pagination-dot{border:0;border-radius:50%;margin:1rem .2rem 0;padding:0;height:6px;width:6px;background-color:#ffffff80}.ul-carousel__pagination-dot.is-active{background-color:#fff}\n"], encapsulation: i0.ViewEncapsulation.None });
|
|
98
98
|
}
|
|
99
99
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
100
100
|
type: Component,
|
|
@@ -106,7 +106,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
|
|
|
106
106
|
</div>
|
|
107
107
|
</div>
|
|
108
108
|
</div>
|
|
109
|
-
`, encapsulation: ViewEncapsulation.None, styles: ["@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;contain:strict;display:inline-block;height:20px;inset:0;margin:auto;position:absolute;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}.ul-rich-text{font-family:
|
|
109
|
+
`, encapsulation: ViewEncapsulation.None, styles: ["@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;contain:strict;display:inline-block;height:20px;inset:0;margin:auto;position:absolute;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}.ul-rich-text{font-family:Underlayer Nunito Sans;line-height:28px;font-size:18px;letter-spacing:0px;font-weight:400;color:#fff}.ul-rich-text p,.ul-rich-text ul,.ul-rich-text ol,.ul-rich-text blockquote,.ul-rich-text pre{margin-top:0;margin-bottom:16px}.ul-rich-text:last-child,.ul-rich-text p:last-child,.ul-rich-text ul:last-child,.ul-rich-text ol:last-child,.ul-rich-text blockquote:last-child,.ul-rich-text pre:last-child{margin-bottom:0}.ul-rich-text h1,.ul-rich-text h2,.ul-rich-text h3,.ul-rich-text h4,.ul-rich-text h5,.ul-rich-text h6{margin-top:32px;margin-bottom:12px;font-weight:1000}.ul-rich-text h1{font-family:Underlayer Nunito Sans;line-height:48px;font-size:48px;letter-spacing:-.48px;font-weight:1000}.ul-rich-text h2{font-family:Underlayer Nunito Sans;line-height:48px;font-size:40px;letter-spacing:-.4px;font-weight:1000}.ul-rich-text h3{font-family:Underlayer Nunito Sans;line-height:44px;font-size:36px;letter-spacing:-.36px;font-weight:1000}.ul-rich-text h4{font-family:Underlayer Nunito Sans;line-height:40px;font-size:32px;letter-spacing:-.32px;font-weight:1000}.ul-rich-text h5{font-family:Underlayer Nunito Sans;line-height:36px;font-size:28px;letter-spacing:-.28px;font-weight:1000}.ul-rich-text h6{font-family:Underlayer Nunito Sans;line-height:36px;font-size:24px;letter-spacing:-.24px;font-weight:1000}.ul-rich-text ul,.ul-rich-text ol{padding-left:24px}.ul-rich-text ul ul,.ul-rich-text ul ol,.ul-rich-text ol ul,.ul-rich-text ol ol{margin-top:8px;margin-bottom:8px}.ul-rich-text li{margin-top:4px;margin-bottom:4px}.ul-rich-text strong{font-weight:800}.ul-rich-text code{font-family:Roboto Mono;line-height:20px;font-size:14px;letter-spacing:0px;font-weight:400}.ul-rich-text em{font-style:italic}.ul-rich-text a{color:#c2a8ff;text-decoration:underline;text-decoration-thickness:1px}.ul-rich-text a:hover{color:#d6c5ff}.ul-rich-text a:active{color:#a781ff}.ul-rich-text pre{padding:16px;border-radius:8px;background-color:#3b3b3b;overflow-x:auto}.ul-rich-text pre code{font-family:Roboto Mono;line-height:20px;font-size:14px;letter-spacing:0px;font-weight:400}.ul-rich-text blockquote{margin-left:0;padding-left:16px;border-left-width:2px;border-left-style:solid;border-left-color:#ffffff1a;color:#ffffffb3}.ul-rich-text--muted{color:#ffffffb3}.ul-rich-text--inverse,.ul-rich-text--inverse a{color:#000}.ul-rich-text--inverse a:hover,.ul-rich-text--inverse a:active{color:#000000b3}.ul-rich-text--body-m{font-family:Underlayer Nunito Sans;line-height:24px;font-size:16px;letter-spacing:0px;font-weight:400}.ul-rich-text--compact p,.ul-rich-text--compact ul,.ul-rich-text--compact ol,.ul-rich-text--compact blockquote,.ul-rich-text--compact pre{margin-bottom:8px}.ul-rich-text--compact h1,.ul-rich-text--compact h2,.ul-rich-text--compact h3,.ul-rich-text--compact h4,.ul-rich-text--compact h5,.ul-rich-text--compact h6{margin-top:16px;margin-bottom:8px}.ul-carousel{display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;position:relative}.ul-carousel .splide__arrows{position:absolute;inset:0;z-index:1;pointer-events:none}.ul-carousel .splide__arrow{pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:0;border-radius:4096px;background-color:#0000004d;color:#fff;cursor:pointer;transition:background-color .25s cubic-bezier(.4,0,.2,1),opacity .25s cubic-bezier(.4,0,.2,1)}.ul-carousel .splide__arrow:hover:not(:disabled){background-color:#000000b3}.ul-carousel .splide__arrow svg{width:20px;height:20px;fill:currentColor}.ul-carousel .splide__arrow:disabled{opacity:.3;cursor:default}.ul-carousel .splide__arrow--prev{left:8px}.ul-carousel .splide__arrow--prev svg{transform:scaleX(-1)}.ul-carousel .splide__arrow--next{right:8px}.ul-carousel__pagination-dot{border:0;border-radius:50%;margin:1rem .2rem 0;padding:0;height:6px;width:6px;background-color:#ffffff80}.ul-carousel__pagination-dot.is-active{background-color:#fff}\n"] }]
|
|
110
110
|
}], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], autoMount: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoMount", required: false }] }], mounted: [{ type: i0.Output, args: ["mounted"] }], carousel: [{ type: i0.ViewChild, args: ['carousel', { isSignal: true }] }], items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => CarouselItemComponent), { isSignal: true }] }] } });
|
|
111
111
|
|
|
112
112
|
// Secondary entry point (`@underlayerdev/ui/carousel`), not re-exported from
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"underlayerdev-ui-carousel.mjs","sources":["../../../projects/ui/carousel/carousel.ts","../../../projects/ui/carousel/public-api.ts","../../../projects/ui/carousel/underlayerdev-ui-carousel.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n contentChildren,\n effect,\n ElementRef,\n input,\n OnDestroy,\n output,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport Splide, { Options } from '@splidejs/splide';\n\n@Component({\n selector: 'ul-carousel-item',\n template: ` <ng-content /> `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'splide__slide ul-carousel__item',\n },\n})\nexport class CarouselItemComponent {}\n\n@Component({\n selector: 'ul-carousel',\n template: `\n <div class=\"splide ul-carousel\" #carousel role=\"region\" aria-roledescription=\"carousel\">\n <div class=\"splide__track ul-carousel__track\">\n <div class=\"splide__list\">\n <ng-content />\n </div>\n </div>\n </div>\n `,\n styleUrl: './carousel.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class CarouselComponent implements AfterViewInit, OnDestroy {\n options = input<Options>({\n autoplay: true,\n });\n autoMount = input<boolean>(true);\n mounted = output<Splide>();\n\n private carousel = viewChild<ElementRef<HTMLElement>>('carousel');\n private items = contentChildren<CarouselItemComponent>(CarouselItemComponent);\n private instance: Splide | null = null;\n\n constructor() {\n effect(() => {\n this.items(); // trigger change detection\n this.updateCarouselOnItemsChange();\n });\n }\n\n ngAfterViewInit() {\n this.init();\n }\n\n ngOnDestroy() {\n this.instance?.destroy();\n }\n\n // Get the Splide instance\n getInstance() {\n return this.instance;\n }\n\n // Methods to control the carousel\n goNext() {\n this.instance?.go('>');\n }\n\n goPrev() {\n this.instance?.go('<');\n }\n\n goTo(index: number) {\n this.instance?.go(index);\n }\n\n // Mount the carousel\n mount() {\n if (!this.instance) {\n throw new Error('Carousel instance not found');\n }\n this.instance.mount();\n this.mounted.emit(this.instance);\n }\n\n private init() {\n const carousel = this.carousel();\n if (!carousel) {\n throw new Error('Carousel element not found');\n }\n // initialize the carousel\n this.instance = new Splide(carousel.nativeElement, {\n arrows: false,\n classes: {\n page: 'splide__pagination__page ul-carousel__pagination-dot',\n },\n ...this.options(),\n });\n // mount the carousel\n if (this.autoMount()) {\n this.mount();\n }\n }\n\n private updateCarouselOnItemsChange() {\n this.instance?.refresh();\n }\n}\n","// Secondary entry point (`@underlayerdev/ui/carousel`), not re-exported from\n// the root barrel: CarouselComponent pulls in @splidejs/splide (~36 kB\n// minified), and the root entry ships as a single FESM file — anything that\n// imports even one symbol from it (ButtonComponent, in every app shell)\n// drags the whole file's dependency graph along, splide included, whether\n// or not that consumer ever uses a carousel. A real module boundary is what\n// actually stops that; nothing on the import side can.\n//\n// The component's own source lives in this folder too, not in\n// src/components/carousel/ re-exported from here: ng-packagr's secondary\n// entry points need to own their files — a public-api.ts that only\n// re-exports a file from outside its own directory tree makes ng-packagr's\n// internal dependency graph crash on external templateUrl/styleUrl\n// resolution (\"Cannot destructure property 'pos' of\n// 'file.referencedFiles[index]' as it is undefined\").\nexport * from './carousel';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"underlayerdev-ui-carousel.mjs","sources":["../../../projects/ui/carousel/carousel.ts","../../../projects/ui/carousel/public-api.ts","../../../projects/ui/carousel/underlayerdev-ui-carousel.ts"],"sourcesContent":["import {\n AfterViewInit,\n Component,\n contentChildren,\n effect,\n ElementRef,\n input,\n OnDestroy,\n output,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport Splide, { Options } from '@splidejs/splide';\n\n@Component({\n selector: 'ul-carousel-item',\n template: ` <ng-content /> `,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'splide__slide ul-carousel__item',\n },\n})\nexport class CarouselItemComponent {}\n\n@Component({\n selector: 'ul-carousel',\n template: `\n <div class=\"splide ul-carousel\" #carousel role=\"region\" aria-roledescription=\"carousel\">\n <div class=\"splide__track ul-carousel__track\">\n <div class=\"splide__list\">\n <ng-content />\n </div>\n </div>\n </div>\n `,\n styleUrl: './carousel.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class CarouselComponent implements AfterViewInit, OnDestroy {\n options = input<Options>({\n autoplay: true,\n });\n autoMount = input<boolean>(true);\n mounted = output<Splide>();\n\n private carousel = viewChild<ElementRef<HTMLElement>>('carousel');\n private items = contentChildren<CarouselItemComponent>(CarouselItemComponent);\n private instance: Splide | null = null;\n\n constructor() {\n effect(() => {\n this.items(); // trigger change detection\n this.updateCarouselOnItemsChange();\n });\n }\n\n ngAfterViewInit() {\n this.init();\n }\n\n ngOnDestroy() {\n this.instance?.destroy();\n }\n\n // Get the Splide instance\n getInstance() {\n return this.instance;\n }\n\n // Methods to control the carousel\n goNext() {\n this.instance?.go('>');\n }\n\n goPrev() {\n this.instance?.go('<');\n }\n\n goTo(index: number) {\n this.instance?.go(index);\n }\n\n // Mount the carousel\n mount() {\n if (!this.instance) {\n throw new Error('Carousel instance not found');\n }\n this.instance.mount();\n this.mounted.emit(this.instance);\n }\n\n private init() {\n const carousel = this.carousel();\n if (!carousel) {\n throw new Error('Carousel element not found');\n }\n // initialize the carousel\n this.instance = new Splide(carousel.nativeElement, {\n arrows: false,\n classes: {\n page: 'splide__pagination__page ul-carousel__pagination-dot',\n },\n ...this.options(),\n });\n // mount the carousel\n if (this.autoMount()) {\n this.mount();\n }\n }\n\n private updateCarouselOnItemsChange() {\n this.instance?.refresh();\n }\n}\n","// Secondary entry point (`@underlayerdev/ui/carousel`), not re-exported from\n// the root barrel: CarouselComponent pulls in @splidejs/splide (~36 kB\n// minified), and the root entry ships as a single FESM file — anything that\n// imports even one symbol from it (ButtonComponent, in every app shell)\n// drags the whole file's dependency graph along, splide included, whether\n// or not that consumer ever uses a carousel. A real module boundary is what\n// actually stops that; nothing on the import side can.\n//\n// The component's own source lives in this folder too, not in\n// src/components/carousel/ re-exported from here: ng-packagr's secondary\n// entry points need to own their files — a public-api.ts that only\n// re-exports a file from outside its own directory tree makes ng-packagr's\n// internal dependency graph crash on external templateUrl/styleUrl\n// resolution (\"Cannot destructure property 'pos' of\n// 'file.referencedFiles[index]' as it is undefined\").\nexport * from './carousel';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|