@mcp-b/web-components 0.2.0
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/LICENSE +21 -0
- package/README.md +49 -0
- package/dist/accordion-B1Q3kuP_.d.ts +373 -0
- package/dist/accordion-item-DvPfhpm8.js +307 -0
- package/dist/accordion-item-bPRIahNn.d.ts +63 -0
- package/dist/accordion-zDr-Br4V.js +483 -0
- package/dist/action-bar-CYsjmhwP.d.ts +29 -0
- package/dist/action-bar-CjN_UcnP.js +56 -0
- package/dist/alert-dialog-4CnO3Nb5.d.ts +60 -0
- package/dist/alert-dialog-D25Oi_TS.js +126 -0
- package/dist/avatar-Bje_KpZo.d.ts +141 -0
- package/dist/avatar-CRP0kW3x.js +224 -0
- package/dist/badge-Ct95U4UO.js +301 -0
- package/dist/badge-D1DNQrWn.d.ts +106 -0
- package/dist/breadcrumb-BxZ-nQE5.d.ts +365 -0
- package/dist/breadcrumb-item-BC454oQe.d.ts +59 -0
- package/dist/breadcrumb-item-P5pdq_gE.js +151 -0
- package/dist/breadcrumb-uURhiqWJ.js +384 -0
- package/dist/button-5k_aL_gD.js +802 -0
- package/dist/button-BQofnUt4.d.ts +354 -0
- package/dist/button-group-BydvJTQy.js +197 -0
- package/dist/button-group-COodHeuB.d.ts +155 -0
- package/dist/callout-B8zTf8Go.js +188 -0
- package/dist/callout-DFwPao36.d.ts +103 -0
- package/dist/card-BYDzdMAU.d.ts +177 -0
- package/dist/card-DIg1-X2G.js +332 -0
- package/dist/carousel-Bktu7wrD.js +843 -0
- package/dist/carousel-DQITCtEY.d.ts +423 -0
- package/dist/carousel-item-B5-X31Ha.js +79 -0
- package/dist/carousel-item-BB3jL2tk.d.ts +34 -0
- package/dist/cdn/loader.js +530 -0
- package/dist/checkbox-D6r7PVPj.js +641 -0
- package/dist/checkbox-DoFcDEKB.d.ts +354 -0
- package/dist/checkbox-group-CLvNAO_F.js +201 -0
- package/dist/checkbox-group-Cnh8rAn4.d.ts +152 -0
- package/dist/color-input-Bky89xg_.d.ts +470 -0
- package/dist/color-input-DPIxi9wR.js +894 -0
- package/dist/color-picker-adwOmtRl.js +1240 -0
- package/dist/color-picker-wQw8bPsq.d.ts +360 -0
- package/dist/combobox-B6al50UG.js +1693 -0
- package/dist/combobox-item-D2H1CMxC.d.ts +714 -0
- package/dist/combobox-item-yM6tDrGG.js +225 -0
- package/dist/comparison-B1-nMwmp.d.ts +134 -0
- package/dist/comparison-CyqKrCN-.js +435 -0
- package/dist/components/accordion/accordion.d.ts +2 -0
- package/dist/components/accordion/accordion.js +2 -0
- package/dist/components/accordion-item/accordion-item.d.ts +2 -0
- package/dist/components/accordion-item/accordion-item.js +2 -0
- package/dist/components/action-bar/action-bar.d.ts +2 -0
- package/dist/components/action-bar/action-bar.js +2 -0
- package/dist/components/alert-dialog/alert-dialog.d.ts +2 -0
- package/dist/components/alert-dialog/alert-dialog.js +2 -0
- package/dist/components/avatar/avatar.d.ts +2 -0
- package/dist/components/avatar/avatar.js +2 -0
- package/dist/components/badge/badge.d.ts +2 -0
- package/dist/components/badge/badge.js +2 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +2 -0
- package/dist/components/breadcrumb/breadcrumb.js +2 -0
- package/dist/components/breadcrumb-item/breadcrumb-item.d.ts +2 -0
- package/dist/components/breadcrumb-item/breadcrumb-item.js +2 -0
- package/dist/components/button/button.d.ts +2 -0
- package/dist/components/button/button.js +2 -0
- package/dist/components/button-group/button-group.d.ts +2 -0
- package/dist/components/button-group/button-group.js +2 -0
- package/dist/components/callout/callout.d.ts +2 -0
- package/dist/components/callout/callout.js +2 -0
- package/dist/components/card/card.d.ts +2 -0
- package/dist/components/card/card.js +2 -0
- package/dist/components/carousel/carousel.d.ts +2 -0
- package/dist/components/carousel/carousel.js +2 -0
- package/dist/components/carousel-item/carousel-item.d.ts +2 -0
- package/dist/components/carousel-item/carousel-item.js +2 -0
- package/dist/components/checkbox/checkbox.d.ts +2 -0
- package/dist/components/checkbox/checkbox.js +2 -0
- package/dist/components/checkbox-group/checkbox-group.d.ts +2 -0
- package/dist/components/checkbox-group/checkbox-group.js +2 -0
- package/dist/components/color-input/color-input.d.ts +2 -0
- package/dist/components/color-input/color-input.js +2 -0
- package/dist/components/color-picker/color-picker.d.ts +2 -0
- package/dist/components/color-picker/color-picker.js +2 -0
- package/dist/components/combobox/combobox.d.ts +2 -0
- package/dist/components/combobox/combobox.js +2 -0
- package/dist/components/combobox-item/combobox-item.d.ts +2 -0
- package/dist/components/combobox-item/combobox-item.js +2 -0
- package/dist/components/comparison/comparison.d.ts +2 -0
- package/dist/components/comparison/comparison.js +2 -0
- package/dist/components/copy/copy.d.ts +2 -0
- package/dist/components/copy/copy.js +291 -0
- package/dist/components/data-table/data-table.d.ts +2 -0
- package/dist/components/data-table/data-table.js +2 -0
- package/dist/components/date/date.d.ts +2 -0
- package/dist/components/date/date.js +2 -0
- package/dist/components/dialog/dialog.d.ts +2 -0
- package/dist/components/dialog/dialog.js +2 -0
- package/dist/components/divider/divider.d.ts +2 -0
- package/dist/components/divider/divider.js +2 -0
- package/dist/components/dropdown/dropdown.d.ts +2 -0
- package/dist/components/dropdown/dropdown.js +2 -0
- package/dist/components/dropdown-item/dropdown-item.d.ts +2 -0
- package/dist/components/dropdown-item/dropdown-item.js +2 -0
- package/dist/components/empty-result/empty-result.d.ts +2 -0
- package/dist/components/empty-result/empty-result.js +2 -0
- package/dist/components/empty-state/empty-state.d.ts +2 -0
- package/dist/components/empty-state/empty-state.js +2 -0
- package/dist/components/expander/expander.d.ts +2 -0
- package/dist/components/expander/expander.js +2 -0
- package/dist/components/field/field.d.ts +2 -0
- package/dist/components/field/field.js +2 -0
- package/dist/components/file-input/file-input.d.ts +2 -0
- package/dist/components/file-input/file-input.js +2 -0
- package/dist/components/filter-bar/filter-bar.d.ts +2 -0
- package/dist/components/filter-bar/filter-bar.js +2 -0
- package/dist/components/form-section/form-section.d.ts +2 -0
- package/dist/components/form-section/form-section.js +2 -0
- package/dist/components/icon/icon.d.ts +2 -0
- package/dist/components/icon/icon.js +2 -0
- package/dist/components/include/include.d.ts +2 -0
- package/dist/components/include/include.js +2 -0
- package/dist/components/index.d.ts +85 -0
- package/dist/components/index.js +86 -0
- package/dist/components/infinite-scroller/infinite-scroller.d.ts +2 -0
- package/dist/components/infinite-scroller/infinite-scroller.js +2 -0
- package/dist/components/intersection-observer/intersection-observer.d.ts +2 -0
- package/dist/components/intersection-observer/intersection-observer.js +2 -0
- package/dist/components/listbox/listbox.d.ts +2 -0
- package/dist/components/listbox/listbox.js +2 -0
- package/dist/components/listbox-item/listbox-item.d.ts +2 -0
- package/dist/components/listbox-item/listbox-item.js +2 -0
- package/dist/components/lorem-ipsum/lorem-ipsum.d.ts +2 -0
- package/dist/components/lorem-ipsum/lorem-ipsum.js +2 -0
- package/dist/components/meter/meter.d.ts +2 -0
- package/dist/components/meter/meter.js +2 -0
- package/dist/components/metric/metric.d.ts +2 -0
- package/dist/components/metric/metric.js +2 -0
- package/dist/components/metric-grid/metric-grid.d.ts +2 -0
- package/dist/components/metric-grid/metric-grid.js +2 -0
- package/dist/components/mutation-observer/mutation-observer.d.ts +2 -0
- package/dist/components/mutation-observer/mutation-observer.js +2 -0
- package/dist/components/navicon/navicon.d.ts +2 -0
- package/dist/components/navicon/navicon.js +2 -0
- package/dist/components/number/number.d.ts +2 -0
- package/dist/components/number/number.js +2 -0
- package/dist/components/number-field/number-field.d.ts +2 -0
- package/dist/components/number-field/number-field.js +2 -0
- package/dist/components/pagination/pagination.d.ts +2 -0
- package/dist/components/pagination/pagination.js +2 -0
- package/dist/components/popover/popover.d.ts +2 -0
- package/dist/components/popover/popover.js +2 -0
- package/dist/components/preview-card/preview-card.d.ts +2 -0
- package/dist/components/preview-card/preview-card.js +2 -0
- package/dist/components/progress/progress.d.ts +2 -0
- package/dist/components/progress/progress.js +2 -0
- package/dist/components/radio/radio.d.ts +2 -0
- package/dist/components/radio/radio.js +2 -0
- package/dist/components/radio-item/radio-item.d.ts +2 -0
- package/dist/components/radio-item/radio-item.js +2 -0
- package/dist/components/random-content/random-content.d.ts +2 -0
- package/dist/components/random-content/random-content.js +2 -0
- package/dist/components/rating/rating.d.ts +2 -0
- package/dist/components/rating/rating.js +2 -0
- package/dist/components/resize-observer/resize-observer.d.ts +2 -0
- package/dist/components/resize-observer/resize-observer.js +2 -0
- package/dist/components/scroll-area/scroll-area.d.ts +2 -0
- package/dist/components/scroll-area/scroll-area.js +2 -0
- package/dist/components/scroller/scroller.d.ts +2 -0
- package/dist/components/scroller/scroller.js +2 -0
- package/dist/components/search-list/search-list.d.ts +2 -0
- package/dist/components/search-list/search-list.js +2 -0
- package/dist/components/select/select.d.ts +2 -0
- package/dist/components/select/select.js +2 -0
- package/dist/components/selection-summary/selection-summary.d.ts +2 -0
- package/dist/components/selection-summary/selection-summary.js +2 -0
- package/dist/components/share/share.d.ts +2 -0
- package/dist/components/share/share.js +2 -0
- package/dist/components/slide-activator/slide-activator.d.ts +2 -0
- package/dist/components/slide-activator/slide-activator.js +2 -0
- package/dist/components/slider/slider.d.ts +2 -0
- package/dist/components/slider/slider.js +2 -0
- package/dist/components/sparkline/sparkline.d.ts +2 -0
- package/dist/components/sparkline/sparkline.js +2 -0
- package/dist/components/spinner/spinner.d.ts +2 -0
- package/dist/components/spinner/spinner.js +2 -0
- package/dist/components/splitter/splitter.d.ts +2 -0
- package/dist/components/splitter/splitter.js +2 -0
- package/dist/components/switch/switch.d.ts +2 -0
- package/dist/components/switch/switch.js +2 -0
- package/dist/components/tab/tab.d.ts +2 -0
- package/dist/components/tab/tab.js +2 -0
- package/dist/components/tab-list/tab-list.d.ts +2 -0
- package/dist/components/tab-list/tab-list.js +2 -0
- package/dist/components/tab-panel/tab-panel.d.ts +2 -0
- package/dist/components/tab-panel/tab-panel.js +2 -0
- package/dist/components/text-area/text-area.d.ts +2 -0
- package/dist/components/text-area/text-area.js +2 -0
- package/dist/components/text-field/text-field.d.ts +2 -0
- package/dist/components/text-field/text-field.js +2 -0
- package/dist/components/text-mask/text-mask.d.ts +2 -0
- package/dist/components/text-mask/text-mask.js +2 -0
- package/dist/components/timed-content/timed-content.d.ts +2 -0
- package/dist/components/timed-content/timed-content.js +2 -0
- package/dist/components/toast/toast.d.ts +2 -0
- package/dist/components/toast/toast.js +2 -0
- package/dist/components/toast-item/toast-item.d.ts +2 -0
- package/dist/components/toast-item/toast-item.js +2 -0
- package/dist/components/toggle-icon/toggle-icon.d.ts +2 -0
- package/dist/components/toggle-icon/toggle-icon.js +2 -0
- package/dist/components/toggle-tag/toggle-tag.d.ts +2 -0
- package/dist/components/toggle-tag/toggle-tag.js +2 -0
- package/dist/components/toolbar/toolbar.d.ts +2 -0
- package/dist/components/toolbar/toolbar.js +2 -0
- package/dist/components/tooltip/tooltip.d.ts +2 -0
- package/dist/components/tooltip/tooltip.js +2 -0
- package/dist/components/transition-group/transition-group.d.ts +2 -0
- package/dist/components/transition-group/transition-group.js +2 -0
- package/dist/components/zoomable-frame/zoomable-frame.d.ts +2 -0
- package/dist/components/zoomable-frame/zoomable-frame.js +2 -0
- package/dist/copy-CvC9vaGw.d.ts +206 -0
- package/dist/copy.styles-DWGvGNTP.js +100 -0
- package/dist/data-table-CITa8DSn.js +247 -0
- package/dist/data-table-DL5RhE0d.d.ts +89 -0
- package/dist/date-CJPmOdi9.js +146 -0
- package/dist/date-DtaTBM71.d.ts +142 -0
- package/dist/decorate-DcF3lt7P.js +9 -0
- package/dist/dialog-Cx46HMaZ.js +983 -0
- package/dist/dialog-N-v0woIy.d.ts +414 -0
- package/dist/divider-9vNsfHW8.js +169 -0
- package/dist/divider-DWuAxcXv.d.ts +79 -0
- package/dist/docs/custom-elements.json +29301 -0
- package/dist/dropdown-BXSKpVX9.js +1123 -0
- package/dist/dropdown-Bo00Vlr5.d.ts +537 -0
- package/dist/dropdown-item-_lIs-Tfd.d.ts +111 -0
- package/dist/dropdown-item-i77cRuN6.js +504 -0
- package/dist/empty-result-B2ln1yFL.js +65 -0
- package/dist/empty-result-B54x_Ab2.d.ts +31 -0
- package/dist/empty-state-BLWjtKUo.js +186 -0
- package/dist/empty-state-SGKjpwp3.d.ts +117 -0
- package/dist/expander-BUev0BmM.d.ts +174 -0
- package/dist/expander-Bwvxj6Oa.js +342 -0
- package/dist/field-BEyS909F.js +163 -0
- package/dist/field-ITx0jVw-.d.ts +69 -0
- package/dist/file-input-BEumLJjg.js +841 -0
- package/dist/file-input-D2D6YC0B.d.ts +378 -0
- package/dist/filter-bar-Bj2QzEn9.d.ts +35 -0
- package/dist/filter-bar-Dcs67aXo.js +66 -0
- package/dist/form-section-BchPetkj.js +83 -0
- package/dist/form-section-xFBTBULQ.d.ts +34 -0
- package/dist/icon-BPVkNsY4.js +165 -0
- package/dist/icon-Ci9CPZJV.d.ts +72 -0
- package/dist/icon-library-D_if7p2h.d.ts +2 -0
- package/dist/include-CQHVVtNs.d.ts +103 -0
- package/dist/include-qNUh_6kT.js +155 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.js +92 -0
- package/dist/infinite-scroller-BmmtnWNt.js +285 -0
- package/dist/infinite-scroller-CuUEAlB9.d.ts +174 -0
- package/dist/intersection-observer-B6TciOAQ.js +503 -0
- package/dist/intersection-observer-B7nmP7Zz.d.ts +418 -0
- package/dist/listbox-C3XXRWGX.js +1257 -0
- package/dist/listbox-DD4ujIJe.d.ts +682 -0
- package/dist/listbox-item-CwD9s3VY.js +135 -0
- package/dist/listbox-item-DQEJWp4Z.d.ts +53 -0
- package/dist/localize-322EtXNX.d.ts +66 -0
- package/dist/lorem-ipsum-B2x3V-v8.js +198 -0
- package/dist/lorem-ipsum-CR82CSuJ.d.ts +130 -0
- package/dist/meter-BC7uaJWf.d.ts +73 -0
- package/dist/meter-BIDyjwFp.js +155 -0
- package/dist/metric-CjlLq_VA.d.ts +36 -0
- package/dist/metric-DbuOcDp_.js +86 -0
- package/dist/metric-grid-C2Pb0Zl3.js +37 -0
- package/dist/metric-grid-C5Xbb1_0.d.ts +27 -0
- package/dist/mutation-observer-BmrZ-GER.d.ts +326 -0
- package/dist/mutation-observer-DS8EBuOp.js +388 -0
- package/dist/navicon-Dic5Qjzb.d.ts +159 -0
- package/dist/navicon-_yMHY27-.js +486 -0
- package/dist/number-BNtNXNF3.js +162 -0
- package/dist/number-BwbnErlB.d.ts +143 -0
- package/dist/number-field-BQHB7UYo.js +726 -0
- package/dist/number-field-odk4lKXM.d.ts +422 -0
- package/dist/pagination-6z2qcf3U.d.ts +322 -0
- package/dist/pagination-DuKPuzdb.js +679 -0
- package/dist/popover-D0sxTU6o.d.ts +259 -0
- package/dist/popover-DJBrJ0za.js +556 -0
- package/dist/preview-card-C7H1FPfd.js +287 -0
- package/dist/preview-card-DitOCZTD.d.ts +86 -0
- package/dist/progress-Db0_axHQ.d.ts +181 -0
- package/dist/progress-DzVk260j.js +494 -0
- package/dist/radio-BtDG9xJM.js +658 -0
- package/dist/radio-CieMa4zU.d.ts +460 -0
- package/dist/radio-item-DIrUStAX.js +264 -0
- package/dist/radio-item-Xq2U3cMu.d.ts +69 -0
- package/dist/random-content-BhSeJFKz.d.ts +380 -0
- package/dist/random-content-BwiirXdG.js +450 -0
- package/dist/rating-4xNsWumY.d.ts +369 -0
- package/dist/rating-C1BcJDIO.js +722 -0
- package/dist/resize-observer-BseSbVWP.d.ts +187 -0
- package/dist/resize-observer-DcrLhddo.js +236 -0
- package/dist/scroll-area-COc1857S.js +127 -0
- package/dist/scroll-area-CVYDf5qY.d.ts +61 -0
- package/dist/scroller-LYgBVyfY.js +590 -0
- package/dist/scroller-bB2rGs7b.d.ts +374 -0
- package/dist/search-list-Clmrg8EV.js +884 -0
- package/dist/search-list-n0GYO7rh.d.ts +777 -0
- package/dist/select-CkZK2jJn.d.ts +506 -0
- package/dist/select-DLIaRnA4.js +690 -0
- package/dist/selection-summary-BVnNJ8Lw.js +48 -0
- package/dist/selection-summary-DmFkGyZI.d.ts +34 -0
- package/dist/share-DPlqP2dc.d.ts +162 -0
- package/dist/share-bsgXZCl7.js +250 -0
- package/dist/sigvelo.d.ts +5 -0
- package/dist/sigvelo.js +5 -0
- package/dist/sigvelo.loader.d.ts +3 -0
- package/dist/sigvelo.loader.js +102 -0
- package/dist/slide-activator-D7bBz69E.d.ts +429 -0
- package/dist/slide-activator-DlxQt9R9.js +798 -0
- package/dist/slider-B0FVsV1o.d.ts +921 -0
- package/dist/slider-B90Il7x3.js +1744 -0
- package/dist/sparkline-CcpTaJ_Z.js +358 -0
- package/dist/sparkline-DlCIt81-.d.ts +235 -0
- package/dist/spinner-C04Dmc0H.js +188 -0
- package/dist/spinner-CZ19x_dC.d.ts +99 -0
- package/dist/splitter-DBDJAzsp.d.ts +325 -0
- package/dist/splitter-MnD4In9H.js +638 -0
- package/dist/switch-CPaEKbog.js +581 -0
- package/dist/switch-Cief9M59.d.ts +248 -0
- package/dist/tab-BcqYGsuW.d.ts +44 -0
- package/dist/tab-C-FtuNmh.js +102 -0
- package/dist/tab-list-B_Ye_Oj9.js +691 -0
- package/dist/tab-list-DDvS8qHr.d.ts +450 -0
- package/dist/tab-panel-BaBl6eep.js +60 -0
- package/dist/tab-panel-BzSJlSfd.d.ts +38 -0
- package/dist/text-area-B_mjCE9W.d.ts +327 -0
- package/dist/text-area-Czixaz-_.js +556 -0
- package/dist/text-field-BClWMp6q.d.ts +424 -0
- package/dist/text-field-inpJfp0A.js +687 -0
- package/dist/text-mask-CNKVKSFp.d.ts +336 -0
- package/dist/text-mask-DDEurj90.js +370 -0
- package/dist/themes/sigvelo.css +10 -0
- package/dist/themes/utilities.css +9 -0
- package/dist/timed-content-D2mGFamc.d.ts +181 -0
- package/dist/timed-content-pvEP4l5V.js +226 -0
- package/dist/toast-BnZaIg6Z.js +636 -0
- package/dist/toast-cEBVK9NQ.d.ts +487 -0
- package/dist/toast-item-BPpJT6vD.d.ts +159 -0
- package/dist/toast-item-IS8IFUEg.js +372 -0
- package/dist/toggle-icon-4oLDeEt4.js +752 -0
- package/dist/toggle-icon-DlwMMWZL.d.ts +359 -0
- package/dist/toggle-tag-1sfTFJtg.js +434 -0
- package/dist/toggle-tag-IVvMGT4R.d.ts +245 -0
- package/dist/toolbar-CABq0ZL1.d.ts +122 -0
- package/dist/toolbar-CEZ0-F-X.js +196 -0
- package/dist/tooltip-DbyoPFNe.js +521 -0
- package/dist/tooltip-ahFthek8.d.ts +192 -0
- package/dist/transition-group-3hnAnwSd.js +801 -0
- package/dist/transition-group-DD_CjSNC.d.ts +608 -0
- package/dist/translations/en.d.ts +6 -0
- package/dist/translations/en.js +75 -0
- package/dist/translations/es.d.ts +6 -0
- package/dist/translations/es.js +75 -0
- package/dist/types/custom-element-jsx.d.ts +13723 -0
- package/dist/utilities/icon-library.d.ts +3 -0
- package/dist/utilities/icon-library.js +93 -0
- package/dist/utilities/localize.d.ts +2 -0
- package/dist/utilities/localize.js +6 -0
- package/dist/zoomable-frame-Cldvj5sE.js +398 -0
- package/dist/zoomable-frame-r6S6587z.d.ts +162 -0
- package/package.json +83 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
import { CSSResultGroup, PropertyValues } from "lit";
|
|
2
|
+
import { SigveloElement } from "@mcp-b/wc-support/base/sigvelo-element";
|
|
3
|
+
|
|
4
|
+
//#region src/components/text-mask/text-mask.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* <sigvelo-text-mask>
|
|
7
|
+
*
|
|
8
|
+
* @summary Applies text as a mask over an image, creating visually stylized characters.
|
|
9
|
+
* @tag sigvelo-text-mask
|
|
10
|
+
* @documentation https://design-system.sigvelo.com/docs/components/text-mask
|
|
11
|
+
* @status stable
|
|
12
|
+
* @since 1.0
|
|
13
|
+
*
|
|
14
|
+
* @slot - The text to be masked.
|
|
15
|
+
*
|
|
16
|
+
* @cssproperty --brightness - Adjusts the brightness of the mask image (0-200%, where 100% is normal)
|
|
17
|
+
* @cssproperty --contrast - Adjusts the contrast of the mask image (0-200%, where 100% is normal)
|
|
18
|
+
* @cssproperty --grayscale - Converts the mask to grayscale (0-100%, where 0% is normal and 100% is fully grayscale)
|
|
19
|
+
* @cssproperty --hue-rotate - Rotates the hue of the mask (0-360deg)
|
|
20
|
+
*
|
|
21
|
+
* @example Default
|
|
22
|
+
* Text masks create eye-catching headlines that capture visitors' attention, making them great for landing pages. For best results, use a font with a heavy weight, e.g. 700+ or bold/black variants, as thicker letter forms provide more surface area for the image to show through.
|
|
23
|
+
*
|
|
24
|
+
* ```html
|
|
25
|
+
* <sigvelo-text-mask
|
|
26
|
+
* image="https://images.unsplash.com/photo-1529778873920-4da4926a72c2?q=80&w=1400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
27
|
+
* fixed
|
|
28
|
+
* style="
|
|
29
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
30
|
+
* font-size: 7em;
|
|
31
|
+
* font-weight: 900;
|
|
32
|
+
* line-height: 1;
|
|
33
|
+
* text-align: center;
|
|
34
|
+
* --brightness: 90%;
|
|
35
|
+
* --contrast: 60%;
|
|
36
|
+
* "
|
|
37
|
+
* >
|
|
38
|
+
* <sigvelo-fit-text>LOVE WHAT</sigvelo-fit-text>
|
|
39
|
+
* <sigvelo-fit-text>YOU CREATE</sigvelo-fit-text>
|
|
40
|
+
* </sigvelo-text-mask>
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* **Note:** If you're using light and dark color schemes, ensure the text has sufficient contrast for both by selecting images with high color variation or adjusting the brightness/contrast to ensure readability regardless of the background.
|
|
44
|
+
*
|
|
45
|
+
* @example Providing text
|
|
46
|
+
* All text inside the text mask will be masked. The font, size, weight, etc. is inherited, meaning you can provide them on the text mask or an ancestor element.
|
|
47
|
+
*
|
|
48
|
+
* ```html
|
|
49
|
+
* <sigvelo-text-mask
|
|
50
|
+
* image="https://images.unsplash.com/photo-1566847438217-76e82d383f84?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
51
|
+
* style="
|
|
52
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
53
|
+
* font-size: 2rem;
|
|
54
|
+
* font-weight: 900;
|
|
55
|
+
* line-height: 1.5;
|
|
56
|
+
* text-transform: uppercase;
|
|
57
|
+
* "
|
|
58
|
+
* >
|
|
59
|
+
* <h4 style="font: inherit; font-size: 3rem;">Joy & Mystery</h4>
|
|
60
|
+
* <p>Whether lounging in a sunbeam or chasing invisible prey, cats bring joy and mystery to our homes.</p>
|
|
61
|
+
* </sigvelo-text-mask>
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* **Note:** Most text decorations, such as underlines and text shadows, will not work as expected inside text masks.
|
|
65
|
+
*
|
|
66
|
+
* @example Fitting text
|
|
67
|
+
* Draw a text mask that fits the full width of its container without wrapping.
|
|
68
|
+
*
|
|
69
|
+
* ```html
|
|
70
|
+
* <sigvelo-text-mask
|
|
71
|
+
* image="https://images.unsplash.com/photo-1527416876370-fb74d128c3dc?q=80&w=800&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
72
|
+
* style="
|
|
73
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
74
|
+
* font-size: 4em;
|
|
75
|
+
* font-weight: 900;
|
|
76
|
+
* line-height: 1;
|
|
77
|
+
* text-align: center;
|
|
78
|
+
* --brightness: 90%;
|
|
79
|
+
* --contrast: 60%;
|
|
80
|
+
* "
|
|
81
|
+
* >
|
|
82
|
+
* <sigvelo-fit-text>
|
|
83
|
+
* LOVE WHAT YOU CREATE
|
|
84
|
+
* </sigvelo-fit-text>
|
|
85
|
+
* </sigvelo-text-mask>
|
|
86
|
+
* ```
|
|
87
|
+
*
|
|
88
|
+
* @example Repeating patterns
|
|
89
|
+
* For a tiled background, use a repeating image and set `background-repeat` and `background-size` to the appropriate values in your CSS.
|
|
90
|
+
*
|
|
91
|
+
* ```html
|
|
92
|
+
* <sigvelo-text-mask
|
|
93
|
+
* image="/assets/images/purple-tile.webp"
|
|
94
|
+
* style="
|
|
95
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
96
|
+
* font-size: 4em;
|
|
97
|
+
* font-weight: 900;
|
|
98
|
+
* text-align: center;
|
|
99
|
+
* line-height: 1;
|
|
100
|
+
* background-repeat: repeat;
|
|
101
|
+
* background-size: 140px;
|
|
102
|
+
* "
|
|
103
|
+
* >
|
|
104
|
+
* PATTERNS<br>
|
|
105
|
+
* REPEAT<br>
|
|
106
|
+
* FOREVER
|
|
107
|
+
* </sigvelo-text-mask>
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* @example Fixed backgrounds
|
|
111
|
+
* Use the `fixed` attribute to create a parallax-like effect where the image stays fixed while scrolling. Not supported in iOS Safari.
|
|
112
|
+
*
|
|
113
|
+
* ```html
|
|
114
|
+
* <sigvelo-text-mask
|
|
115
|
+
* image="https://images.unsplash.com/photo-1527416876370-fb74d128c3dc?q=80&w=800&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
116
|
+
* fixed
|
|
117
|
+
* style="
|
|
118
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
119
|
+
* font-size: 4em;
|
|
120
|
+
* font-weight: 900;
|
|
121
|
+
* text-align: center;
|
|
122
|
+
* --brightness: 90%;
|
|
123
|
+
* --contrast: 60%;
|
|
124
|
+
* "
|
|
125
|
+
* >
|
|
126
|
+
* <sigvelo-fit-text>FIXED BACKGROUND</sigvelo-fit-text>
|
|
127
|
+
* </sigvelo-text-mask>
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* **Warning:** Due to [a very old bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1313757), this feature is disabled in Firefox. If you'd like to see this fixed, consider logging in and voting for the bug.
|
|
131
|
+
*
|
|
132
|
+
* @example Brightness
|
|
133
|
+
* Adjust the brightness of the masked image using the `--brightness` custom property (0-200%). Normal brightness is 100%. Values below 100% darken the image, and values above 100% brighten it.
|
|
134
|
+
*
|
|
135
|
+
* ```html
|
|
136
|
+
* <div id="mask__brightness">
|
|
137
|
+
* <sigvelo-text-mask
|
|
138
|
+
* image="https://images.unsplash.com/photo-1529778873920-4da4926a72c2?q=80&w=1400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
139
|
+
* style="
|
|
140
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
141
|
+
* font-size: 4em;
|
|
142
|
+
* font-weight: 900;
|
|
143
|
+
* text-align: center;
|
|
144
|
+
* --brightness: 75%;
|
|
145
|
+
* "
|
|
146
|
+
* >
|
|
147
|
+
* <sigvelo-fit-text>BRIGHTNESS</sigvelo-fit-text>
|
|
148
|
+
* </sigvelo-text-mask>
|
|
149
|
+
*
|
|
150
|
+
* <sigvelo-slider
|
|
151
|
+
* label="Brightness"
|
|
152
|
+
* min="0"
|
|
153
|
+
* max="200"
|
|
154
|
+
* value="75"
|
|
155
|
+
* indicator-offset="100"
|
|
156
|
+
* with-tooltip
|
|
157
|
+
* class="sigvelo-vh-label"
|
|
158
|
+
* ></sigvelo-slider>
|
|
159
|
+
* </div>
|
|
160
|
+
*
|
|
161
|
+
* <script>
|
|
162
|
+
* const container = document.getElementById('mask__brightness');
|
|
163
|
+
* const mask = container.querySelector('sigvelo-text-mask');
|
|
164
|
+
* const slider = container.querySelector('sigvelo-slider');
|
|
165
|
+
*
|
|
166
|
+
* slider.addEventListener('sigvelo-input', () => {
|
|
167
|
+
* mask.style.setProperty('--brightness', `${slider.value}%`);
|
|
168
|
+
* });
|
|
169
|
+
* </script>
|
|
170
|
+
* ```
|
|
171
|
+
*
|
|
172
|
+
* @example Contrast
|
|
173
|
+
* Control the contrast of the masked image with the `--contrast` custom property (0-200%). Normal contrast is 100%. Lower values reduce contrast for a more subtle effect, while higher values increase it for more dramatic definition in the text mask.
|
|
174
|
+
*
|
|
175
|
+
* ```html
|
|
176
|
+
* <div id="mask__contrast">
|
|
177
|
+
* <sigvelo-text-mask
|
|
178
|
+
* image="https://images.unsplash.com/photo-1529778873920-4da4926a72c2?q=80&w=1400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
179
|
+
* style="
|
|
180
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
181
|
+
* font-size: 4em;
|
|
182
|
+
* font-weight: 900;
|
|
183
|
+
* text-align: center;
|
|
184
|
+
* --contrast: 50%;
|
|
185
|
+
* "
|
|
186
|
+
* >
|
|
187
|
+
* <sigvelo-fit-text>CONTRAST</sigvelo-fit-text>
|
|
188
|
+
* </sigvelo-text-mask>
|
|
189
|
+
*
|
|
190
|
+
* <sigvelo-slider
|
|
191
|
+
* label="Contrast"
|
|
192
|
+
* min="0"
|
|
193
|
+
* max="200"
|
|
194
|
+
* value="50"
|
|
195
|
+
* indicator-offset="100"
|
|
196
|
+
* with-tooltip
|
|
197
|
+
* class="sigvelo-vh-label"
|
|
198
|
+
* ></sigvelo-slider>
|
|
199
|
+
* </div>
|
|
200
|
+
*
|
|
201
|
+
* <script>
|
|
202
|
+
* const container = document.getElementById('mask__contrast');
|
|
203
|
+
* const mask = container.querySelector('sigvelo-text-mask');
|
|
204
|
+
* const slider = container.querySelector('sigvelo-slider');
|
|
205
|
+
*
|
|
206
|
+
* slider.addEventListener('sigvelo-input', () => {
|
|
207
|
+
* mask.style.setProperty('--contrast', `${slider.value}%`);
|
|
208
|
+
* });
|
|
209
|
+
* </script>
|
|
210
|
+
* ```
|
|
211
|
+
*
|
|
212
|
+
* @example Grayscale
|
|
213
|
+
* Remove color from the masked image using the `--grayscale` custom property (0-100%). A value of 100% creates a completely black and white effect, while lower values retain some of the original color.
|
|
214
|
+
*
|
|
215
|
+
* ```html
|
|
216
|
+
* <div id="mask__grayscale">
|
|
217
|
+
* <sigvelo-text-mask
|
|
218
|
+
* image="https://images.unsplash.com/photo-1529778873920-4da4926a72c2?q=80&w=1400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
219
|
+
* style="
|
|
220
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
221
|
+
* font-size: 4em;
|
|
222
|
+
* font-weight: 900;
|
|
223
|
+
* text-align: center;
|
|
224
|
+
* --grayscale: 100%;
|
|
225
|
+
* "
|
|
226
|
+
* >
|
|
227
|
+
* <sigvelo-fit-text>GRAYSCALE</sigvelo-fit-text>
|
|
228
|
+
* </sigvelo-text-mask>
|
|
229
|
+
*
|
|
230
|
+
* <sigvelo-slider
|
|
231
|
+
* label="Grayscale"
|
|
232
|
+
* min="0"
|
|
233
|
+
* max="100"
|
|
234
|
+
* value="100"
|
|
235
|
+
* with-tooltip
|
|
236
|
+
* class="sigvelo-vh-label"
|
|
237
|
+
* ></sigvelo-slider>
|
|
238
|
+
* </div>
|
|
239
|
+
*
|
|
240
|
+
* <script>
|
|
241
|
+
* const container = document.getElementById('mask__grayscale');
|
|
242
|
+
* const mask = container.querySelector('sigvelo-text-mask');
|
|
243
|
+
* const slider = container.querySelector('sigvelo-slider');
|
|
244
|
+
*
|
|
245
|
+
* slider.addEventListener('sigvelo-input', () => {
|
|
246
|
+
* mask.style.setProperty('--grayscale', `${slider.value}%`);
|
|
247
|
+
* });
|
|
248
|
+
* </script>
|
|
249
|
+
* ```
|
|
250
|
+
*
|
|
251
|
+
* @example Hue rotation
|
|
252
|
+
* Transform the colors of the masked image with the `--hue-rotate` custom property (0-360deg). Values represent degrees of rotation around the color wheel, creating unique color shifts while maintaining the original luminosity.
|
|
253
|
+
*
|
|
254
|
+
* ```html
|
|
255
|
+
* <div id="mask__hue">
|
|
256
|
+
* <sigvelo-text-mask
|
|
257
|
+
* image="https://images.unsplash.com/photo-1529778873920-4da4926a72c2?q=80&w=1400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
258
|
+
* style="
|
|
259
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
260
|
+
* font-size: 4em;
|
|
261
|
+
* font-weight: 900;
|
|
262
|
+
* text-align: center;
|
|
263
|
+
* --hue-rotate: 180deg;
|
|
264
|
+
* "
|
|
265
|
+
* >
|
|
266
|
+
* <sigvelo-fit-text>HUE ROTATE</sigvelo-fit-text>
|
|
267
|
+
* </sigvelo-text-mask>
|
|
268
|
+
*
|
|
269
|
+
* <sigvelo-slider
|
|
270
|
+
* label="Hue Rotation"
|
|
271
|
+
* min="0"
|
|
272
|
+
* max="360"
|
|
273
|
+
* value="180"
|
|
274
|
+
* with-tooltip
|
|
275
|
+
* class="sigvelo-vh-label"
|
|
276
|
+
* ></sigvelo-slider>
|
|
277
|
+
* </div>
|
|
278
|
+
*
|
|
279
|
+
* <script>
|
|
280
|
+
* const container = document.getElementById('mask__hue');
|
|
281
|
+
* const mask = container.querySelector('sigvelo-text-mask');
|
|
282
|
+
* const slider = container.querySelector('sigvelo-slider');
|
|
283
|
+
* const formatter = new Intl.NumberFormat('en-US', { style: 'unit', unit: 'degree', unitDisplay: 'narrow' });
|
|
284
|
+
*
|
|
285
|
+
* // Format the slider's tooltip as an angle
|
|
286
|
+
* customElements.whenDefined('sigvelo-slider').then(() => {
|
|
287
|
+
* slider.valueFormatter = value => formatter.format(value);
|
|
288
|
+
* });
|
|
289
|
+
*
|
|
290
|
+
* // Change with the slider
|
|
291
|
+
* slider.addEventListener('sigvelo-input', () => {
|
|
292
|
+
* mask.style.setProperty('--hue-rotate', `${slider.value}deg`);
|
|
293
|
+
* });
|
|
294
|
+
* </script>
|
|
295
|
+
*
|
|
296
|
+
* <style>
|
|
297
|
+
* #mask__hue {
|
|
298
|
+
* sigvelo-slider::part(track) {
|
|
299
|
+
* background-image:
|
|
300
|
+
* linear-gradient(
|
|
301
|
+
* to right,
|
|
302
|
+
* rgb(255, 0, 0) 0%,
|
|
303
|
+
* rgb(255, 255, 0) 17%,
|
|
304
|
+
* rgb(0, 255, 0) 33%,
|
|
305
|
+
* rgb(0, 255, 255) 50%,
|
|
306
|
+
* rgb(0, 0, 255) 67%,
|
|
307
|
+
* rgb(255, 0, 255) 83%,
|
|
308
|
+
* rgb(255, 0, 0) 100%
|
|
309
|
+
* );
|
|
310
|
+
* }
|
|
311
|
+
*
|
|
312
|
+
* sigvelo-slider::part(indicator) {
|
|
313
|
+
* display: none;
|
|
314
|
+
* }
|
|
315
|
+
* }
|
|
316
|
+
* </style>
|
|
317
|
+
* ```
|
|
318
|
+
*
|
|
319
|
+
* <!-- Font for demos -->
|
|
320
|
+
*/
|
|
321
|
+
declare class SigveloTextMask extends SigveloElement {
|
|
322
|
+
static styles: CSSResultGroup;
|
|
323
|
+
/** The URL of the image to use for the mask. */
|
|
324
|
+
image: string;
|
|
325
|
+
/** Creates a parallax-like effect where the image stays fixed while scrolling */
|
|
326
|
+
fixed: boolean;
|
|
327
|
+
updated(changedProperties: PropertyValues<this>): void;
|
|
328
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
329
|
+
}
|
|
330
|
+
declare global {
|
|
331
|
+
interface HTMLElementTagNameMap {
|
|
332
|
+
"sigvelo-text-mask": SigveloTextMask;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
//#endregion
|
|
336
|
+
export { SigveloTextMask as t };
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { t as __decorate } from "./decorate-DcF3lt7P.js";
|
|
2
|
+
import { css, html } from "lit";
|
|
3
|
+
import { property } from "lit/decorators.js";
|
|
4
|
+
import hostStyles from "@mcp-b/wc-support/styles/host.styles";
|
|
5
|
+
import { SigveloElement } from "@mcp-b/wc-support/base/sigvelo-element";
|
|
6
|
+
//#region src/components/text-mask/text-mask.styles.ts
|
|
7
|
+
var text_mask_styles_default = css`
|
|
8
|
+
:host {
|
|
9
|
+
--brightness: 100%;
|
|
10
|
+
--contrast: 100%;
|
|
11
|
+
--grayscale: 0%;
|
|
12
|
+
--hue-rotate: 0deg;
|
|
13
|
+
|
|
14
|
+
display: block;
|
|
15
|
+
background-position: center;
|
|
16
|
+
background-size: cover;
|
|
17
|
+
background-repeat: no-repeat;
|
|
18
|
+
-webkit-background-clip: text;
|
|
19
|
+
background-clip: text;
|
|
20
|
+
-webkit-text-fill-color: transparent;
|
|
21
|
+
text-fill-color: transparent;
|
|
22
|
+
text-shadow: none !important; /* this will break the mask effect */
|
|
23
|
+
filter: brightness(var(--brightness)) contrast(var(--contrast)) grayscale(var(--grayscale))
|
|
24
|
+
hue-rotate(var(--hue-rotate));
|
|
25
|
+
}
|
|
26
|
+
`;
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/components/text-mask/text-mask.ts
|
|
29
|
+
/**
|
|
30
|
+
* <sigvelo-text-mask>
|
|
31
|
+
*
|
|
32
|
+
* @summary Applies text as a mask over an image, creating visually stylized characters.
|
|
33
|
+
* @tag sigvelo-text-mask
|
|
34
|
+
* @documentation https://design-system.sigvelo.com/docs/components/text-mask
|
|
35
|
+
* @status stable
|
|
36
|
+
* @since 1.0
|
|
37
|
+
*
|
|
38
|
+
* @slot - The text to be masked.
|
|
39
|
+
*
|
|
40
|
+
* @cssproperty --brightness - Adjusts the brightness of the mask image (0-200%, where 100% is normal)
|
|
41
|
+
* @cssproperty --contrast - Adjusts the contrast of the mask image (0-200%, where 100% is normal)
|
|
42
|
+
* @cssproperty --grayscale - Converts the mask to grayscale (0-100%, where 0% is normal and 100% is fully grayscale)
|
|
43
|
+
* @cssproperty --hue-rotate - Rotates the hue of the mask (0-360deg)
|
|
44
|
+
*
|
|
45
|
+
* @example Default
|
|
46
|
+
* Text masks create eye-catching headlines that capture visitors' attention, making them great for landing pages. For best results, use a font with a heavy weight, e.g. 700+ or bold/black variants, as thicker letter forms provide more surface area for the image to show through.
|
|
47
|
+
*
|
|
48
|
+
* ```html
|
|
49
|
+
* <sigvelo-text-mask
|
|
50
|
+
* image="https://images.unsplash.com/photo-1529778873920-4da4926a72c2?q=80&w=1400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
51
|
+
* fixed
|
|
52
|
+
* style="
|
|
53
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
54
|
+
* font-size: 7em;
|
|
55
|
+
* font-weight: 900;
|
|
56
|
+
* line-height: 1;
|
|
57
|
+
* text-align: center;
|
|
58
|
+
* --brightness: 90%;
|
|
59
|
+
* --contrast: 60%;
|
|
60
|
+
* "
|
|
61
|
+
* >
|
|
62
|
+
* <sigvelo-fit-text>LOVE WHAT</sigvelo-fit-text>
|
|
63
|
+
* <sigvelo-fit-text>YOU CREATE</sigvelo-fit-text>
|
|
64
|
+
* </sigvelo-text-mask>
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* **Note:** If you're using light and dark color schemes, ensure the text has sufficient contrast for both by selecting images with high color variation or adjusting the brightness/contrast to ensure readability regardless of the background.
|
|
68
|
+
*
|
|
69
|
+
* @example Providing text
|
|
70
|
+
* All text inside the text mask will be masked. The font, size, weight, etc. is inherited, meaning you can provide them on the text mask or an ancestor element.
|
|
71
|
+
*
|
|
72
|
+
* ```html
|
|
73
|
+
* <sigvelo-text-mask
|
|
74
|
+
* image="https://images.unsplash.com/photo-1566847438217-76e82d383f84?q=80&w=1000&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
75
|
+
* style="
|
|
76
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
77
|
+
* font-size: 2rem;
|
|
78
|
+
* font-weight: 900;
|
|
79
|
+
* line-height: 1.5;
|
|
80
|
+
* text-transform: uppercase;
|
|
81
|
+
* "
|
|
82
|
+
* >
|
|
83
|
+
* <h4 style="font: inherit; font-size: 3rem;">Joy & Mystery</h4>
|
|
84
|
+
* <p>Whether lounging in a sunbeam or chasing invisible prey, cats bring joy and mystery to our homes.</p>
|
|
85
|
+
* </sigvelo-text-mask>
|
|
86
|
+
* ```
|
|
87
|
+
*
|
|
88
|
+
* **Note:** Most text decorations, such as underlines and text shadows, will not work as expected inside text masks.
|
|
89
|
+
*
|
|
90
|
+
* @example Fitting text
|
|
91
|
+
* Draw a text mask that fits the full width of its container without wrapping.
|
|
92
|
+
*
|
|
93
|
+
* ```html
|
|
94
|
+
* <sigvelo-text-mask
|
|
95
|
+
* image="https://images.unsplash.com/photo-1527416876370-fb74d128c3dc?q=80&w=800&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
96
|
+
* style="
|
|
97
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
98
|
+
* font-size: 4em;
|
|
99
|
+
* font-weight: 900;
|
|
100
|
+
* line-height: 1;
|
|
101
|
+
* text-align: center;
|
|
102
|
+
* --brightness: 90%;
|
|
103
|
+
* --contrast: 60%;
|
|
104
|
+
* "
|
|
105
|
+
* >
|
|
106
|
+
* <sigvelo-fit-text>
|
|
107
|
+
* LOVE WHAT YOU CREATE
|
|
108
|
+
* </sigvelo-fit-text>
|
|
109
|
+
* </sigvelo-text-mask>
|
|
110
|
+
* ```
|
|
111
|
+
*
|
|
112
|
+
* @example Repeating patterns
|
|
113
|
+
* For a tiled background, use a repeating image and set `background-repeat` and `background-size` to the appropriate values in your CSS.
|
|
114
|
+
*
|
|
115
|
+
* ```html
|
|
116
|
+
* <sigvelo-text-mask
|
|
117
|
+
* image="/assets/images/purple-tile.webp"
|
|
118
|
+
* style="
|
|
119
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
120
|
+
* font-size: 4em;
|
|
121
|
+
* font-weight: 900;
|
|
122
|
+
* text-align: center;
|
|
123
|
+
* line-height: 1;
|
|
124
|
+
* background-repeat: repeat;
|
|
125
|
+
* background-size: 140px;
|
|
126
|
+
* "
|
|
127
|
+
* >
|
|
128
|
+
* PATTERNS<br>
|
|
129
|
+
* REPEAT<br>
|
|
130
|
+
* FOREVER
|
|
131
|
+
* </sigvelo-text-mask>
|
|
132
|
+
* ```
|
|
133
|
+
*
|
|
134
|
+
* @example Fixed backgrounds
|
|
135
|
+
* Use the `fixed` attribute to create a parallax-like effect where the image stays fixed while scrolling. Not supported in iOS Safari.
|
|
136
|
+
*
|
|
137
|
+
* ```html
|
|
138
|
+
* <sigvelo-text-mask
|
|
139
|
+
* image="https://images.unsplash.com/photo-1527416876370-fb74d128c3dc?q=80&w=800&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
140
|
+
* fixed
|
|
141
|
+
* style="
|
|
142
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
143
|
+
* font-size: 4em;
|
|
144
|
+
* font-weight: 900;
|
|
145
|
+
* text-align: center;
|
|
146
|
+
* --brightness: 90%;
|
|
147
|
+
* --contrast: 60%;
|
|
148
|
+
* "
|
|
149
|
+
* >
|
|
150
|
+
* <sigvelo-fit-text>FIXED BACKGROUND</sigvelo-fit-text>
|
|
151
|
+
* </sigvelo-text-mask>
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* **Warning:** Due to [a very old bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1313757), this feature is disabled in Firefox. If you'd like to see this fixed, consider logging in and voting for the bug.
|
|
155
|
+
*
|
|
156
|
+
* @example Brightness
|
|
157
|
+
* Adjust the brightness of the masked image using the `--brightness` custom property (0-200%). Normal brightness is 100%. Values below 100% darken the image, and values above 100% brighten it.
|
|
158
|
+
*
|
|
159
|
+
* ```html
|
|
160
|
+
* <div id="mask__brightness">
|
|
161
|
+
* <sigvelo-text-mask
|
|
162
|
+
* image="https://images.unsplash.com/photo-1529778873920-4da4926a72c2?q=80&w=1400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
163
|
+
* style="
|
|
164
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
165
|
+
* font-size: 4em;
|
|
166
|
+
* font-weight: 900;
|
|
167
|
+
* text-align: center;
|
|
168
|
+
* --brightness: 75%;
|
|
169
|
+
* "
|
|
170
|
+
* >
|
|
171
|
+
* <sigvelo-fit-text>BRIGHTNESS</sigvelo-fit-text>
|
|
172
|
+
* </sigvelo-text-mask>
|
|
173
|
+
*
|
|
174
|
+
* <sigvelo-slider
|
|
175
|
+
* label="Brightness"
|
|
176
|
+
* min="0"
|
|
177
|
+
* max="200"
|
|
178
|
+
* value="75"
|
|
179
|
+
* indicator-offset="100"
|
|
180
|
+
* with-tooltip
|
|
181
|
+
* class="sigvelo-vh-label"
|
|
182
|
+
* ></sigvelo-slider>
|
|
183
|
+
* </div>
|
|
184
|
+
*
|
|
185
|
+
* <script>
|
|
186
|
+
* const container = document.getElementById('mask__brightness');
|
|
187
|
+
* const mask = container.querySelector('sigvelo-text-mask');
|
|
188
|
+
* const slider = container.querySelector('sigvelo-slider');
|
|
189
|
+
*
|
|
190
|
+
* slider.addEventListener('sigvelo-input', () => {
|
|
191
|
+
* mask.style.setProperty('--brightness', `${slider.value}%`);
|
|
192
|
+
* });
|
|
193
|
+
* <\/script>
|
|
194
|
+
* ```
|
|
195
|
+
*
|
|
196
|
+
* @example Contrast
|
|
197
|
+
* Control the contrast of the masked image with the `--contrast` custom property (0-200%). Normal contrast is 100%. Lower values reduce contrast for a more subtle effect, while higher values increase it for more dramatic definition in the text mask.
|
|
198
|
+
*
|
|
199
|
+
* ```html
|
|
200
|
+
* <div id="mask__contrast">
|
|
201
|
+
* <sigvelo-text-mask
|
|
202
|
+
* image="https://images.unsplash.com/photo-1529778873920-4da4926a72c2?q=80&w=1400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
203
|
+
* style="
|
|
204
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
205
|
+
* font-size: 4em;
|
|
206
|
+
* font-weight: 900;
|
|
207
|
+
* text-align: center;
|
|
208
|
+
* --contrast: 50%;
|
|
209
|
+
* "
|
|
210
|
+
* >
|
|
211
|
+
* <sigvelo-fit-text>CONTRAST</sigvelo-fit-text>
|
|
212
|
+
* </sigvelo-text-mask>
|
|
213
|
+
*
|
|
214
|
+
* <sigvelo-slider
|
|
215
|
+
* label="Contrast"
|
|
216
|
+
* min="0"
|
|
217
|
+
* max="200"
|
|
218
|
+
* value="50"
|
|
219
|
+
* indicator-offset="100"
|
|
220
|
+
* with-tooltip
|
|
221
|
+
* class="sigvelo-vh-label"
|
|
222
|
+
* ></sigvelo-slider>
|
|
223
|
+
* </div>
|
|
224
|
+
*
|
|
225
|
+
* <script>
|
|
226
|
+
* const container = document.getElementById('mask__contrast');
|
|
227
|
+
* const mask = container.querySelector('sigvelo-text-mask');
|
|
228
|
+
* const slider = container.querySelector('sigvelo-slider');
|
|
229
|
+
*
|
|
230
|
+
* slider.addEventListener('sigvelo-input', () => {
|
|
231
|
+
* mask.style.setProperty('--contrast', `${slider.value}%`);
|
|
232
|
+
* });
|
|
233
|
+
* <\/script>
|
|
234
|
+
* ```
|
|
235
|
+
*
|
|
236
|
+
* @example Grayscale
|
|
237
|
+
* Remove color from the masked image using the `--grayscale` custom property (0-100%). A value of 100% creates a completely black and white effect, while lower values retain some of the original color.
|
|
238
|
+
*
|
|
239
|
+
* ```html
|
|
240
|
+
* <div id="mask__grayscale">
|
|
241
|
+
* <sigvelo-text-mask
|
|
242
|
+
* image="https://images.unsplash.com/photo-1529778873920-4da4926a72c2?q=80&w=1400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
243
|
+
* style="
|
|
244
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
245
|
+
* font-size: 4em;
|
|
246
|
+
* font-weight: 900;
|
|
247
|
+
* text-align: center;
|
|
248
|
+
* --grayscale: 100%;
|
|
249
|
+
* "
|
|
250
|
+
* >
|
|
251
|
+
* <sigvelo-fit-text>GRAYSCALE</sigvelo-fit-text>
|
|
252
|
+
* </sigvelo-text-mask>
|
|
253
|
+
*
|
|
254
|
+
* <sigvelo-slider
|
|
255
|
+
* label="Grayscale"
|
|
256
|
+
* min="0"
|
|
257
|
+
* max="100"
|
|
258
|
+
* value="100"
|
|
259
|
+
* with-tooltip
|
|
260
|
+
* class="sigvelo-vh-label"
|
|
261
|
+
* ></sigvelo-slider>
|
|
262
|
+
* </div>
|
|
263
|
+
*
|
|
264
|
+
* <script>
|
|
265
|
+
* const container = document.getElementById('mask__grayscale');
|
|
266
|
+
* const mask = container.querySelector('sigvelo-text-mask');
|
|
267
|
+
* const slider = container.querySelector('sigvelo-slider');
|
|
268
|
+
*
|
|
269
|
+
* slider.addEventListener('sigvelo-input', () => {
|
|
270
|
+
* mask.style.setProperty('--grayscale', `${slider.value}%`);
|
|
271
|
+
* });
|
|
272
|
+
* <\/script>
|
|
273
|
+
* ```
|
|
274
|
+
*
|
|
275
|
+
* @example Hue rotation
|
|
276
|
+
* Transform the colors of the masked image with the `--hue-rotate` custom property (0-360deg). Values represent degrees of rotation around the color wheel, creating unique color shifts while maintaining the original luminosity.
|
|
277
|
+
*
|
|
278
|
+
* ```html
|
|
279
|
+
* <div id="mask__hue">
|
|
280
|
+
* <sigvelo-text-mask
|
|
281
|
+
* image="https://images.unsplash.com/photo-1529778873920-4da4926a72c2?q=80&w=1400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"
|
|
282
|
+
* style="
|
|
283
|
+
* font-family: 'Fira Sans', sans-serif;
|
|
284
|
+
* font-size: 4em;
|
|
285
|
+
* font-weight: 900;
|
|
286
|
+
* text-align: center;
|
|
287
|
+
* --hue-rotate: 180deg;
|
|
288
|
+
* "
|
|
289
|
+
* >
|
|
290
|
+
* <sigvelo-fit-text>HUE ROTATE</sigvelo-fit-text>
|
|
291
|
+
* </sigvelo-text-mask>
|
|
292
|
+
*
|
|
293
|
+
* <sigvelo-slider
|
|
294
|
+
* label="Hue Rotation"
|
|
295
|
+
* min="0"
|
|
296
|
+
* max="360"
|
|
297
|
+
* value="180"
|
|
298
|
+
* with-tooltip
|
|
299
|
+
* class="sigvelo-vh-label"
|
|
300
|
+
* ></sigvelo-slider>
|
|
301
|
+
* </div>
|
|
302
|
+
*
|
|
303
|
+
* <script>
|
|
304
|
+
* const container = document.getElementById('mask__hue');
|
|
305
|
+
* const mask = container.querySelector('sigvelo-text-mask');
|
|
306
|
+
* const slider = container.querySelector('sigvelo-slider');
|
|
307
|
+
* const formatter = new Intl.NumberFormat('en-US', { style: 'unit', unit: 'degree', unitDisplay: 'narrow' });
|
|
308
|
+
*
|
|
309
|
+
* // Format the slider's tooltip as an angle
|
|
310
|
+
* customElements.whenDefined('sigvelo-slider').then(() => {
|
|
311
|
+
* slider.valueFormatter = value => formatter.format(value);
|
|
312
|
+
* });
|
|
313
|
+
*
|
|
314
|
+
* // Change with the slider
|
|
315
|
+
* slider.addEventListener('sigvelo-input', () => {
|
|
316
|
+
* mask.style.setProperty('--hue-rotate', `${slider.value}deg`);
|
|
317
|
+
* });
|
|
318
|
+
* <\/script>
|
|
319
|
+
*
|
|
320
|
+
* <style>
|
|
321
|
+
* #mask__hue {
|
|
322
|
+
* sigvelo-slider::part(track) {
|
|
323
|
+
* background-image:
|
|
324
|
+
* linear-gradient(
|
|
325
|
+
* to right,
|
|
326
|
+
* rgb(255, 0, 0) 0%,
|
|
327
|
+
* rgb(255, 255, 0) 17%,
|
|
328
|
+
* rgb(0, 255, 0) 33%,
|
|
329
|
+
* rgb(0, 255, 255) 50%,
|
|
330
|
+
* rgb(0, 0, 255) 67%,
|
|
331
|
+
* rgb(255, 0, 255) 83%,
|
|
332
|
+
* rgb(255, 0, 0) 100%
|
|
333
|
+
* );
|
|
334
|
+
* }
|
|
335
|
+
*
|
|
336
|
+
* sigvelo-slider::part(indicator) {
|
|
337
|
+
* display: none;
|
|
338
|
+
* }
|
|
339
|
+
* }
|
|
340
|
+
* </style>
|
|
341
|
+
* ```
|
|
342
|
+
*
|
|
343
|
+
* <!-- Font for demos -->
|
|
344
|
+
*/
|
|
345
|
+
var SigveloTextMask = class extends SigveloElement {
|
|
346
|
+
constructor(..._args) {
|
|
347
|
+
super(..._args);
|
|
348
|
+
this.image = "";
|
|
349
|
+
this.fixed = false;
|
|
350
|
+
}
|
|
351
|
+
static {
|
|
352
|
+
this.styles = [hostStyles, text_mask_styles_default];
|
|
353
|
+
}
|
|
354
|
+
updated(changedProperties) {
|
|
355
|
+
if (changedProperties.has("fixed")) if (navigator.userAgent.toLowerCase().indexOf("firefox") > -1) this.style.backgroundAttachment = "scroll";
|
|
356
|
+
else this.style.backgroundAttachment = this.fixed ? "fixed" : "scroll";
|
|
357
|
+
if (changedProperties.has("image")) this.style.backgroundImage = `url(${this.image})`;
|
|
358
|
+
}
|
|
359
|
+
render() {
|
|
360
|
+
return html` <slot></slot> `;
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
__decorate([property()], SigveloTextMask.prototype, "image", void 0);
|
|
364
|
+
__decorate([property({
|
|
365
|
+
type: Boolean,
|
|
366
|
+
reflect: true
|
|
367
|
+
})], SigveloTextMask.prototype, "fixed", void 0);
|
|
368
|
+
customElements.define("sigvelo-text-mask", SigveloTextMask);
|
|
369
|
+
//#endregion
|
|
370
|
+
export { SigveloTextMask as t };
|