@krollins/blueprint 0.2.2 → 0.3.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 +20 -20
- package/README.md +123 -123
- package/README.npm.md +123 -123
- package/dist/components/accordion/accordion.d.ts +6 -1
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/accordion/accordion.style.d.ts.map +1 -1
- package/dist/components/accordion.js +2 -394
- package/dist/components/alert/alert.d.ts +6 -1
- package/dist/components/alert/alert.d.ts.map +1 -1
- package/dist/components/alert/alert.style.d.ts.map +1 -1
- package/dist/components/alert.js +2 -219
- package/dist/components/avatar/avatar.d.ts +6 -1
- package/dist/components/avatar/avatar.d.ts.map +1 -1
- package/dist/components/avatar.js +2 -238
- package/dist/components/badge/badge.d.ts.map +1 -1
- package/dist/components/badge/badge.style.d.ts.map +1 -1
- package/dist/components/badge.js +2 -144
- package/dist/components/breadcrumb/breadcrumb.d.ts +6 -1
- package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
- package/dist/components/breadcrumb/breadcrumb.style.d.ts +9 -0
- package/dist/components/breadcrumb/breadcrumb.style.d.ts.map +1 -1
- package/dist/components/breadcrumb.js +2 -481
- package/dist/components/button/button.d.ts.map +1 -1
- package/dist/components/button.js +2 -192
- package/dist/components/card/card.d.ts.map +1 -1
- package/dist/components/card.js +2 -223
- package/dist/components/checkbox/checkbox.d.ts +7 -0
- package/dist/components/checkbox/checkbox.d.ts.map +1 -1
- package/dist/components/checkbox.js +2 -336
- package/dist/components/code-block/code-block.d.ts.map +1 -1
- package/dist/components/code-block.js +2 -585
- package/dist/components/color-picker/color-picker.d.ts +12 -1
- package/dist/components/color-picker/color-picker.d.ts.map +1 -1
- package/dist/components/color-picker/color-picker.style.d.ts.map +1 -1
- package/dist/components/color-picker/color-picker.utils.d.ts.map +1 -1
- package/dist/components/color-picker.js +2 -1660
- package/dist/components/combobox/combobox.d.ts +14 -1
- package/dist/components/combobox/combobox.d.ts.map +1 -1
- package/dist/components/combobox/combobox.style.d.ts.map +1 -1
- package/dist/components/combobox.js +2 -595
- package/dist/components/container/container.d.ts +26 -0
- package/dist/components/container/container.d.ts.map +1 -0
- package/dist/components/container/container.style.d.ts +2 -0
- package/dist/components/container/container.style.d.ts.map +1 -0
- package/dist/components/container.js +2 -0
- package/dist/components/date-picker/date-picker.d.ts +15 -1
- package/dist/components/date-picker/date-picker.d.ts.map +1 -1
- package/dist/components/date-picker/date-picker.style.d.ts.map +1 -1
- package/dist/components/date-picker.js +2 -726
- package/dist/components/divider/divider.d.ts.map +1 -1
- package/dist/components/divider.js +2 -214
- package/dist/components/drawer/drawer.d.ts +6 -1
- package/dist/components/drawer/drawer.d.ts.map +1 -1
- package/dist/components/drawer/drawer.style.d.ts.map +1 -1
- package/dist/components/drawer.js +2 -569
- package/dist/components/dropdown/dropdown.d.ts.map +1 -1
- package/dist/components/dropdown.js +2 -377
- package/dist/components/fieldset/fieldset.d.ts +54 -0
- package/dist/components/fieldset/fieldset.d.ts.map +1 -0
- package/dist/components/fieldset/fieldset.style.d.ts +2 -0
- package/dist/components/fieldset/fieldset.style.d.ts.map +1 -0
- package/dist/components/fieldset.js +2 -0
- package/dist/components/file-upload/file-upload.d.ts +13 -1
- package/dist/components/file-upload/file-upload.d.ts.map +1 -1
- package/dist/components/file-upload/file-upload.style.d.ts.map +1 -1
- package/dist/components/file-upload.js +2 -669
- package/dist/components/grid/grid.d.ts +37 -0
- package/dist/components/grid/grid.d.ts.map +1 -0
- package/dist/components/grid/grid.style.d.ts +2 -0
- package/dist/components/grid/grid.style.d.ts.map +1 -0
- package/dist/components/grid.js +2 -0
- package/dist/components/heading/heading.d.ts.map +1 -1
- package/dist/components/heading.js +2 -161
- package/dist/components/icon/icon.d.ts +1 -1
- package/dist/components/icon/icon.d.ts.map +1 -1
- package/dist/components/icon/icon.style.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/airplay.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/alarm-clock.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/align-horizontal.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/align-vertical.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/angle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/archive.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/arrow-bottom-left.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/arrow-bottom-right.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/arrow-down-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/arrow-down.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/arrow-left-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/arrow-left.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/arrow-right-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/arrow-right.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/arrow-top-left.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/arrow-top-right.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/arrow-up-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/arrow-up.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/audio-wave.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/backspace.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/backward.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/bag.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/battery-75.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/battery-charging.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/battery-empty.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/battery-full.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/battery-half.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/battery-low.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/bell-disabled.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/bell-ringing.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/bell-snooze.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/bell.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/bluetooth.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/book-closed.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/book-text.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/book.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/bookmark-book.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/bookmark.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/box-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/box-download.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/box-open.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/box-remove.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/box.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/boxes.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/branch.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/briefcase.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/browser-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/browser.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/button-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/button-minus.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/calculator.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/calendar-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/calendar-date.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/calendar-day.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/calendar-days.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/calendar-last-day.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/calendar-month.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/calendar-move.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/calendar-remove.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/calendar-split.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/calendar-week.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/calendar.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/camera-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/camera-noflash-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/camera-noflash.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/camera.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/capture.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/card-timeline.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/card-view.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/carousel.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cart.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cast.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chain.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chat-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/check-circle-outside.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/check-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/check.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/checkbox-checked.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/checkbox-empty.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-close.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-down-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-down-double.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-down.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-left-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-left-double.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-left.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-open.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-right-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-right-double.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-right.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-up-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-up-double.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/chevron-up.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/circle-menu.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/circle-split.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/clipboard-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/clipboard-check.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/clipboard-copy.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/clipboard-cross.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/clipboard-notes.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/clipboard-remove.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/clipboard.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/clock.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/close.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cloud-disconnect.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cloud-download-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cloud-download.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cloud-upload-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cloud-upload.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cloud.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/code.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/coffee.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/coin.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/coins.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/compass.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/component-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/contacts.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/contract.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/create.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/credit-card.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/crop.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cross-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cross.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/crosshair.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cube.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cubes.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/cylinder.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/database.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/diamond.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/directions.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/disc.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/display-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/display.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/document-justified.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/document-list.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/document-stack.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/document-words.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/document.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/door-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/door.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/download-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/download.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/downward.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/drag-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/drag-vertical.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/drag.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/duplicate-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/duplicate.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/enter-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/enter.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/episodes.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/exit-left.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/exit-right.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/expand-height.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/expand-width.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/expand.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/external.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/eye-closed.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/eye-no.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/eye.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/face-delighted.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/face-happy.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/face-neutral.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/face-sad.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/file-download.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/file-upload.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/files-history.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/files-multi.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/files-stack.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/film.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/filter-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/filter-single.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/filter.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/filtering.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/fingerprint.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/flag.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/flame-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/flame.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/flip-view.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/floppy.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/folder-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/folder-closed.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/folder-minus.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/folder-open.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/fork-git.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/forward.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/frame.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/fullscreen.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/funnel.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/gauge.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/gift.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/globe.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/gps.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/grab.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/graph-bar.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/graph-box.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/graph-increase.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/grid-circles-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/grid-circles.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/grid-small.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/grid-squares-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/grid-squares.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/grid.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/hand.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/harddrive.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/hash.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/heart-rate.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/heart-remove.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/heart.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/height.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/hierarchy.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/home-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/home-check.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/home-door.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/home.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/import.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/inbox-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/inbox.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/info-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/iphone-landscape.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/iphone-portrait.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/jump-backward.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/jump-forward.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/jump-left.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/jump-right.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/keyboard.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/laptop.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/lightbulb-on.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/lightbulb.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/lightning-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/lightning.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/lineweight.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/link-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/link-broken.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/link-horizontal.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/link-vertical.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/link.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/list-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/list-numbered.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/list.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/loader.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/location.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/lock-open.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/lock.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/mail-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/mail-delete.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/mail-minus.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/mail-new.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/mail-open.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/mail-remove.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/mail.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/marquee.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/maximise.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/menu-hamburger.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/menu-horizontal.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/menu-vertical.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/message-writing.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/message.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/microphone-disabled.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/microphone-muted.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/microphone.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/midpoint.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/mini-player.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/minimise.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/minus-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/minus.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/moon.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/move.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/newspaper.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/no-sign.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/notebook.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/notification.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/nut.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/pages.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/panel-bottom.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/panel-center.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/panel-left.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/panel-right.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/panel-sectioned.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/panel-top.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/paper-folded.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/paper-plane-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/paper-plane.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/paper.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/paperclip.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/paragraph-center.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/paragraph-end.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/paragraph-left.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/paragraph-right.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/paragraph-start.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/pen.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/phone-landscape.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/phone-portrait.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/picture.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/pie-half.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/pie-quarter.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/pie-third.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/pill.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/play-button.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/plus-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/plus.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/postcard.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/printer.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/projector.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/pull-down.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/pull-left.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/pull-right.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/pull-up.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/push-down.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/push-left.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/push-right.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/push-up.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/question-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/radio-on.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/receipt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/record.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/redo.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/refresh-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/refresh.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/replicate-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/replicate.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/reset-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/reset-forward.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/reset-hard.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/reset-temporary.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/reset.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/retweet.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/reuse.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/reverse-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/reverse.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/revert.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/rocket.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/ruler.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/scale-contract.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/scale-extend.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/scale.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/scalpel.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/search.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/server.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/settings.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/share-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/share.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/shuffle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/side-menu.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/signal-full.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/signal-low.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/signal-medium.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/signal-none.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/slash-backward.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/slash-forward.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/sliders.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/sort-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/sort.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/speaker.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/speech-bubble.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/speech-typing.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/split-three.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/split.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/star.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/sun.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/support.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/swap.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/switch.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/table-header.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/table.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/tag-milestone.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/tag.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/tags.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/target.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/terminal.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/thread.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/thumbs-down.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/thumbs-up.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/ticket.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/timeline.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/todo.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/toggle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/toggles.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/translate.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/trash-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/trash.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/trophy.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/tv-mode.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/unarchive.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/undo-history.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/undo.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/unlink-horizontal.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/unlink-vertical.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/upload-alt.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/upload.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/upward.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/user-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/user-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/user-male-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/user-male.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/user-remove.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/user.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/users.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/venn.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/version.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/versions.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/video.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/volume-0.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/volume-add.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/volume-disabled.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/volume-high.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/volume-low.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/volume-minus.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/volume-muted.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/wallet.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/warning-circle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/warning-hex.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/warning-triangle.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/waves.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/width.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/wifi-error.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/wifi-none.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/wifi.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/window-collapse-left.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/window-collapse-right.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/window-content.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/window.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/wrap-back.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/wrap-forward.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/write.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/zoom-cancel.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/zoom-in.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/zoom-out.d.ts.map +1 -1
- package/dist/components/icon/icons/entries/zoom-reset.d.ts.map +1 -1
- package/dist/components/icon-button/icon-button.d.ts +52 -0
- package/dist/components/icon-button/icon-button.d.ts.map +1 -0
- package/dist/components/icon-button/icon-button.style.d.ts +2 -0
- package/dist/components/icon-button/icon-button.style.d.ts.map +1 -0
- package/dist/components/icon-button.js +2 -0
- package/dist/components/icon.js +2 -196
- package/dist/components/index.d.ts +9 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/input/input.d.ts +12 -2
- package/dist/components/input/input.d.ts.map +1 -1
- package/dist/components/input/input.style.d.ts.map +1 -1
- package/dist/components/input.js +2 -363
- package/dist/components/link/link.d.ts.map +1 -1
- package/dist/components/link.js +2 -178
- package/dist/components/menu/menu.d.ts.map +1 -1
- package/dist/components/menu.js +2 -331
- package/dist/components/modal/modal.d.ts.map +1 -1
- package/dist/components/modal.js +2 -317
- package/dist/components/multi-select/multi-select.d.ts +16 -1
- package/dist/components/multi-select/multi-select.d.ts.map +1 -1
- package/dist/components/multi-select/multi-select.style.d.ts.map +1 -1
- package/dist/components/multi-select.js +2 -642
- package/dist/components/notification/notification.d.ts +14 -2
- package/dist/components/notification/notification.d.ts.map +1 -1
- package/dist/components/notification/notification.style.d.ts.map +1 -1
- package/dist/components/notification-stack/notification-stack.d.ts +87 -0
- package/dist/components/notification-stack/notification-stack.d.ts.map +1 -0
- package/dist/components/notification-stack/notification-stack.style.d.ts +2 -0
- package/dist/components/notification-stack/notification-stack.style.d.ts.map +1 -0
- package/dist/components/notification-stack.js +2 -0
- package/dist/components/notification.js +2 -436
- package/dist/components/number-input/number-input.d.ts +18 -2
- package/dist/components/number-input/number-input.d.ts.map +1 -1
- package/dist/components/number-input/number-input.style.d.ts.map +1 -1
- package/dist/components/number-input.js +2 -556
- package/dist/components/pagination/pagination.d.ts.map +1 -1
- package/dist/components/pagination.js +2 -320
- package/dist/components/popover/popover.d.ts +6 -1
- package/dist/components/popover/popover.d.ts.map +1 -1
- package/dist/components/popover/popover.style.d.ts.map +1 -1
- package/dist/components/popover.js +2 -598
- package/dist/components/progress/progress.d.ts.map +1 -1
- package/dist/components/progress.js +2 -219
- package/dist/components/radio/radio.d.ts +12 -0
- package/dist/components/radio/radio.d.ts.map +1 -1
- package/dist/components/radio-group/radio-group.d.ts +87 -0
- package/dist/components/radio-group/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group/radio-group.style.d.ts +2 -0
- package/dist/components/radio-group/radio-group.style.d.ts.map +1 -0
- package/dist/components/radio-group.js +2 -0
- package/dist/components/radio.js +2 -321
- package/dist/components/select/select.d.ts +12 -1
- package/dist/components/select/select.d.ts.map +1 -1
- package/dist/components/select/select.style.d.ts.map +1 -1
- package/dist/components/select.js +2 -498
- package/dist/components/skeleton/skeleton.d.ts.map +1 -1
- package/dist/components/skeleton.js +2 -240
- package/dist/components/slider/slider.d.ts +12 -1
- package/dist/components/slider/slider.d.ts.map +1 -1
- package/dist/components/slider/slider.style.d.ts.map +1 -1
- package/dist/components/slider.js +2 -9
- package/dist/components/spinner/spinner.d.ts.map +1 -1
- package/dist/components/spinner.js +2 -133
- package/dist/components/stack/stack.d.ts +37 -0
- package/dist/components/stack/stack.d.ts.map +1 -0
- package/dist/components/stack/stack.style.d.ts +2 -0
- package/dist/components/stack/stack.style.d.ts.map +1 -0
- package/dist/components/stack.js +2 -0
- package/dist/components/stepper/stepper.d.ts.map +1 -1
- package/dist/components/stepper/stepper.style.d.ts.map +1 -1
- package/dist/components/stepper.js +2 -812
- package/dist/components/switch/switch.d.ts +7 -0
- package/dist/components/switch/switch.d.ts.map +1 -1
- package/dist/components/switch.js +2 -379
- package/dist/components/table/table.d.ts +6 -1
- package/dist/components/table/table.d.ts.map +1 -1
- package/dist/components/table.js +2 -644
- package/dist/components/tabs/tabs.d.ts +6 -1
- package/dist/components/tabs/tabs.d.ts.map +1 -1
- package/dist/components/tabs.js +2 -547
- package/dist/components/tag/tag.d.ts +6 -1
- package/dist/components/tag/tag.d.ts.map +1 -1
- package/dist/components/tag/tag.style.d.ts.map +1 -1
- package/dist/components/tag.js +2 -292
- package/dist/components/text/text.d.ts.map +1 -1
- package/dist/components/text.js +2 -278
- package/dist/components/textarea/textarea.d.ts +11 -3
- package/dist/components/textarea/textarea.d.ts.map +1 -1
- package/dist/components/textarea/textarea.style.d.ts.map +1 -1
- package/dist/components/textarea.js +2 -380
- package/dist/components/time-picker/time-picker.d.ts +12 -1
- package/dist/components/time-picker/time-picker.d.ts.map +1 -1
- package/dist/components/time-picker/time-picker.style.d.ts.map +1 -1
- package/dist/components/time-picker.js +2 -457
- package/dist/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/tooltip.js +2 -239
- package/dist/components/tree/tree.d.ts +8 -2
- package/dist/components/tree/tree.d.ts.map +1 -1
- package/dist/components/tree.js +2 -583
- package/dist/icons/airplay.js +6 -6
- package/dist/icons/airplay.js.map +1 -1
- package/dist/icons/alarm-clock.js +6 -6
- package/dist/icons/alarm-clock.js.map +1 -1
- package/dist/icons/align-horizontal.js +6 -6
- package/dist/icons/align-horizontal.js.map +1 -1
- package/dist/icons/align-vertical.js +6 -6
- package/dist/icons/align-vertical.js.map +1 -1
- package/dist/icons/angle.js +6 -6
- package/dist/icons/angle.js.map +1 -1
- package/dist/icons/archive.js +6 -6
- package/dist/icons/archive.js.map +1 -1
- package/dist/icons/arrow-bottom-left.js +6 -6
- package/dist/icons/arrow-bottom-left.js.map +1 -1
- package/dist/icons/arrow-bottom-right.js +6 -6
- package/dist/icons/arrow-bottom-right.js.map +1 -1
- package/dist/icons/arrow-down-circle.js +6 -6
- package/dist/icons/arrow-down-circle.js.map +1 -1
- package/dist/icons/arrow-down.js +6 -6
- package/dist/icons/arrow-down.js.map +1 -1
- package/dist/icons/arrow-left-circle.js +6 -6
- package/dist/icons/arrow-left-circle.js.map +1 -1
- package/dist/icons/arrow-left.js +6 -6
- package/dist/icons/arrow-left.js.map +1 -1
- package/dist/icons/arrow-right-circle.js +6 -6
- package/dist/icons/arrow-right-circle.js.map +1 -1
- package/dist/icons/arrow-right.js +6 -6
- package/dist/icons/arrow-right.js.map +1 -1
- package/dist/icons/arrow-top-left.js +6 -6
- package/dist/icons/arrow-top-left.js.map +1 -1
- package/dist/icons/arrow-top-right.js +6 -6
- package/dist/icons/arrow-top-right.js.map +1 -1
- package/dist/icons/arrow-up-circle.js +6 -6
- package/dist/icons/arrow-up-circle.js.map +1 -1
- package/dist/icons/arrow-up.js +6 -6
- package/dist/icons/arrow-up.js.map +1 -1
- package/dist/icons/audio-wave.js +6 -6
- package/dist/icons/audio-wave.js.map +1 -1
- package/dist/icons/backspace.js +6 -6
- package/dist/icons/backspace.js.map +1 -1
- package/dist/icons/backward.js +6 -6
- package/dist/icons/backward.js.map +1 -1
- package/dist/icons/bag.js +6 -6
- package/dist/icons/bag.js.map +1 -1
- package/dist/icons/battery-75.js +6 -6
- package/dist/icons/battery-75.js.map +1 -1
- package/dist/icons/battery-charging.js +6 -6
- package/dist/icons/battery-charging.js.map +1 -1
- package/dist/icons/battery-empty.js +6 -6
- package/dist/icons/battery-empty.js.map +1 -1
- package/dist/icons/battery-full.js +6 -6
- package/dist/icons/battery-full.js.map +1 -1
- package/dist/icons/battery-half.js +6 -6
- package/dist/icons/battery-half.js.map +1 -1
- package/dist/icons/battery-low.js +6 -6
- package/dist/icons/battery-low.js.map +1 -1
- package/dist/icons/bell-disabled.js +6 -6
- package/dist/icons/bell-disabled.js.map +1 -1
- package/dist/icons/bell-ringing.js +6 -6
- package/dist/icons/bell-ringing.js.map +1 -1
- package/dist/icons/bell-snooze.js +6 -6
- package/dist/icons/bell-snooze.js.map +1 -1
- package/dist/icons/bell.js +6 -6
- package/dist/icons/bell.js.map +1 -1
- package/dist/icons/bluetooth.js +6 -6
- package/dist/icons/bluetooth.js.map +1 -1
- package/dist/icons/book-closed.js +6 -6
- package/dist/icons/book-closed.js.map +1 -1
- package/dist/icons/book-text.js +6 -6
- package/dist/icons/book-text.js.map +1 -1
- package/dist/icons/book.js +6 -6
- package/dist/icons/book.js.map +1 -1
- package/dist/icons/bookmark-book.js +6 -6
- package/dist/icons/bookmark-book.js.map +1 -1
- package/dist/icons/bookmark.js +6 -6
- package/dist/icons/bookmark.js.map +1 -1
- package/dist/icons/box-add.js +6 -6
- package/dist/icons/box-add.js.map +1 -1
- package/dist/icons/box-download.js +6 -6
- package/dist/icons/box-download.js.map +1 -1
- package/dist/icons/box-open.js +6 -6
- package/dist/icons/box-open.js.map +1 -1
- package/dist/icons/box-remove.js +6 -6
- package/dist/icons/box-remove.js.map +1 -1
- package/dist/icons/box.js +6 -6
- package/dist/icons/box.js.map +1 -1
- package/dist/icons/boxes.js +6 -6
- package/dist/icons/boxes.js.map +1 -1
- package/dist/icons/branch.js +6 -6
- package/dist/icons/branch.js.map +1 -1
- package/dist/icons/briefcase.js +6 -6
- package/dist/icons/briefcase.js.map +1 -1
- package/dist/icons/browser-alt.js +6 -6
- package/dist/icons/browser-alt.js.map +1 -1
- package/dist/icons/browser.js +6 -6
- package/dist/icons/browser.js.map +1 -1
- package/dist/icons/button-add.js +6 -6
- package/dist/icons/button-add.js.map +1 -1
- package/dist/icons/button-minus.js +6 -6
- package/dist/icons/button-minus.js.map +1 -1
- package/dist/icons/calculator.js +6 -6
- package/dist/icons/calculator.js.map +1 -1
- package/dist/icons/calendar-add.js +6 -6
- package/dist/icons/calendar-add.js.map +1 -1
- package/dist/icons/calendar-date.js +6 -6
- package/dist/icons/calendar-date.js.map +1 -1
- package/dist/icons/calendar-day.js +6 -6
- package/dist/icons/calendar-day.js.map +1 -1
- package/dist/icons/calendar-days.js +6 -6
- package/dist/icons/calendar-days.js.map +1 -1
- package/dist/icons/calendar-last-day.js +6 -6
- package/dist/icons/calendar-last-day.js.map +1 -1
- package/dist/icons/calendar-month.js +6 -6
- package/dist/icons/calendar-month.js.map +1 -1
- package/dist/icons/calendar-move.js +6 -6
- package/dist/icons/calendar-move.js.map +1 -1
- package/dist/icons/calendar-remove.js +6 -6
- package/dist/icons/calendar-remove.js.map +1 -1
- package/dist/icons/calendar-split.js +6 -6
- package/dist/icons/calendar-split.js.map +1 -1
- package/dist/icons/calendar-week.js +6 -6
- package/dist/icons/calendar-week.js.map +1 -1
- package/dist/icons/calendar.js +6 -6
- package/dist/icons/calendar.js.map +1 -1
- package/dist/icons/camera-alt.js +6 -6
- package/dist/icons/camera-alt.js.map +1 -1
- package/dist/icons/camera-noflash-alt.js +6 -6
- package/dist/icons/camera-noflash-alt.js.map +1 -1
- package/dist/icons/camera-noflash.js +6 -6
- package/dist/icons/camera-noflash.js.map +1 -1
- package/dist/icons/camera.js +6 -6
- package/dist/icons/camera.js.map +1 -1
- package/dist/icons/capture.js +6 -6
- package/dist/icons/capture.js.map +1 -1
- package/dist/icons/card-timeline.js +6 -6
- package/dist/icons/card-timeline.js.map +1 -1
- package/dist/icons/card-view.js +6 -6
- package/dist/icons/card-view.js.map +1 -1
- package/dist/icons/carousel.js +6 -6
- package/dist/icons/carousel.js.map +1 -1
- package/dist/icons/cart.js +6 -6
- package/dist/icons/cart.js.map +1 -1
- package/dist/icons/cast.js +6 -6
- package/dist/icons/cast.js.map +1 -1
- package/dist/icons/chain.js +6 -6
- package/dist/icons/chain.js.map +1 -1
- package/dist/icons/chat-add.js +6 -6
- package/dist/icons/chat-add.js.map +1 -1
- package/dist/icons/check-circle-outside.js +6 -6
- package/dist/icons/check-circle-outside.js.map +1 -1
- package/dist/icons/check-circle.js +6 -6
- package/dist/icons/check-circle.js.map +1 -1
- package/dist/icons/check.js +6 -6
- package/dist/icons/check.js.map +1 -1
- package/dist/icons/checkbox-checked.js +6 -6
- package/dist/icons/checkbox-checked.js.map +1 -1
- package/dist/icons/checkbox-empty.js +6 -6
- package/dist/icons/checkbox-empty.js.map +1 -1
- package/dist/icons/chevron-close.js +6 -6
- package/dist/icons/chevron-close.js.map +1 -1
- package/dist/icons/chevron-down-circle.js +6 -6
- package/dist/icons/chevron-down-circle.js.map +1 -1
- package/dist/icons/chevron-down-double.js +6 -6
- package/dist/icons/chevron-down-double.js.map +1 -1
- package/dist/icons/chevron-down.js +6 -6
- package/dist/icons/chevron-down.js.map +1 -1
- package/dist/icons/chevron-left-circle.js +6 -6
- package/dist/icons/chevron-left-circle.js.map +1 -1
- package/dist/icons/chevron-left-double.js +6 -6
- package/dist/icons/chevron-left-double.js.map +1 -1
- package/dist/icons/chevron-left.js +6 -6
- package/dist/icons/chevron-left.js.map +1 -1
- package/dist/icons/chevron-open.js +6 -6
- package/dist/icons/chevron-open.js.map +1 -1
- package/dist/icons/chevron-right-circle.js +6 -6
- package/dist/icons/chevron-right-circle.js.map +1 -1
- package/dist/icons/chevron-right-double.js +6 -6
- package/dist/icons/chevron-right-double.js.map +1 -1
- package/dist/icons/chevron-right.js +6 -6
- package/dist/icons/chevron-right.js.map +1 -1
- package/dist/icons/chevron-up-circle.js +6 -6
- package/dist/icons/chevron-up-circle.js.map +1 -1
- package/dist/icons/chevron-up-double.js +6 -6
- package/dist/icons/chevron-up-double.js.map +1 -1
- package/dist/icons/chevron-up.js +6 -6
- package/dist/icons/chevron-up.js.map +1 -1
- package/dist/icons/circle-menu.js +6 -6
- package/dist/icons/circle-menu.js.map +1 -1
- package/dist/icons/circle-split.js +6 -6
- package/dist/icons/circle-split.js.map +1 -1
- package/dist/icons/circle.js +6 -6
- package/dist/icons/circle.js.map +1 -1
- package/dist/icons/clipboard-add.js +6 -6
- package/dist/icons/clipboard-add.js.map +1 -1
- package/dist/icons/clipboard-check.js +6 -6
- package/dist/icons/clipboard-check.js.map +1 -1
- package/dist/icons/clipboard-copy.js +6 -6
- package/dist/icons/clipboard-copy.js.map +1 -1
- package/dist/icons/clipboard-cross.js +6 -6
- package/dist/icons/clipboard-cross.js.map +1 -1
- package/dist/icons/clipboard-notes.js +6 -6
- package/dist/icons/clipboard-notes.js.map +1 -1
- package/dist/icons/clipboard-remove.js +6 -6
- package/dist/icons/clipboard-remove.js.map +1 -1
- package/dist/icons/clipboard.js +6 -6
- package/dist/icons/clipboard.js.map +1 -1
- package/dist/icons/clock.js +6 -6
- package/dist/icons/clock.js.map +1 -1
- package/dist/icons/close.js +6 -6
- package/dist/icons/close.js.map +1 -1
- package/dist/icons/cloud-disconnect.js +6 -6
- package/dist/icons/cloud-disconnect.js.map +1 -1
- package/dist/icons/cloud-download-alt.js +6 -6
- package/dist/icons/cloud-download-alt.js.map +1 -1
- package/dist/icons/cloud-download.js +6 -6
- package/dist/icons/cloud-download.js.map +1 -1
- package/dist/icons/cloud-upload-alt.js +6 -6
- package/dist/icons/cloud-upload-alt.js.map +1 -1
- package/dist/icons/cloud-upload.js +6 -6
- package/dist/icons/cloud-upload.js.map +1 -1
- package/dist/icons/cloud.js +6 -6
- package/dist/icons/cloud.js.map +1 -1
- package/dist/icons/code.js +6 -6
- package/dist/icons/code.js.map +1 -1
- package/dist/icons/coffee.js +6 -6
- package/dist/icons/coffee.js.map +1 -1
- package/dist/icons/coin.js +6 -6
- package/dist/icons/coin.js.map +1 -1
- package/dist/icons/coins.js +6 -6
- package/dist/icons/coins.js.map +1 -1
- package/dist/icons/compass.js +6 -6
- package/dist/icons/compass.js.map +1 -1
- package/dist/icons/component-add.js +6 -6
- package/dist/icons/component-add.js.map +1 -1
- package/dist/icons/contacts.js +6 -6
- package/dist/icons/contacts.js.map +1 -1
- package/dist/icons/contract.js +6 -6
- package/dist/icons/contract.js.map +1 -1
- package/dist/icons/create.js +6 -13
- package/dist/icons/create.js.map +1 -1
- package/dist/icons/credit-card.js +6 -6
- package/dist/icons/credit-card.js.map +1 -1
- package/dist/icons/crop.js +6 -6
- package/dist/icons/crop.js.map +1 -1
- package/dist/icons/cross-circle.js +6 -6
- package/dist/icons/cross-circle.js.map +1 -1
- package/dist/icons/cross.js +6 -6
- package/dist/icons/cross.js.map +1 -1
- package/dist/icons/crosshair.js +6 -6
- package/dist/icons/crosshair.js.map +1 -1
- package/dist/icons/cube.js +6 -6
- package/dist/icons/cube.js.map +1 -1
- package/dist/icons/cubes.js +6 -6
- package/dist/icons/cubes.js.map +1 -1
- package/dist/icons/cylinder.js +6 -6
- package/dist/icons/cylinder.js.map +1 -1
- package/dist/icons/database.js +6 -6
- package/dist/icons/database.js.map +1 -1
- package/dist/icons/diamond.js +6 -6
- package/dist/icons/diamond.js.map +1 -1
- package/dist/icons/directions.js +6 -6
- package/dist/icons/directions.js.map +1 -1
- package/dist/icons/disc.js +6 -6
- package/dist/icons/disc.js.map +1 -1
- package/dist/icons/display-alt.js +6 -6
- package/dist/icons/display-alt.js.map +1 -1
- package/dist/icons/display.js +6 -6
- package/dist/icons/display.js.map +1 -1
- package/dist/icons/document-justified.js +6 -6
- package/dist/icons/document-justified.js.map +1 -1
- package/dist/icons/document-list.js +6 -6
- package/dist/icons/document-list.js.map +1 -1
- package/dist/icons/document-stack.js +6 -6
- package/dist/icons/document-stack.js.map +1 -1
- package/dist/icons/document-words.js +6 -6
- package/dist/icons/document-words.js.map +1 -1
- package/dist/icons/document.js +6 -6
- package/dist/icons/document.js.map +1 -1
- package/dist/icons/door-alt.js +6 -6
- package/dist/icons/door-alt.js.map +1 -1
- package/dist/icons/door.js +6 -6
- package/dist/icons/door.js.map +1 -1
- package/dist/icons/download-alt.js +6 -6
- package/dist/icons/download-alt.js.map +1 -1
- package/dist/icons/download.js +6 -6
- package/dist/icons/download.js.map +1 -1
- package/dist/icons/downward.js +6 -6
- package/dist/icons/downward.js.map +1 -1
- package/dist/icons/drag-circle.js +6 -6
- package/dist/icons/drag-circle.js.map +1 -1
- package/dist/icons/drag-vertical.js +6 -6
- package/dist/icons/drag-vertical.js.map +1 -1
- package/dist/icons/drag.js +6 -6
- package/dist/icons/drag.js.map +1 -1
- package/dist/icons/duplicate-alt.js +6 -6
- package/dist/icons/duplicate-alt.js.map +1 -1
- package/dist/icons/duplicate.js +6 -6
- package/dist/icons/duplicate.js.map +1 -1
- package/dist/icons/enter-alt.js +6 -6
- package/dist/icons/enter-alt.js.map +1 -1
- package/dist/icons/enter.js +6 -6
- package/dist/icons/enter.js.map +1 -1
- package/dist/icons/episodes.js +6 -6
- package/dist/icons/episodes.js.map +1 -1
- package/dist/icons/exit-left.js +6 -6
- package/dist/icons/exit-left.js.map +1 -1
- package/dist/icons/exit-right.js +6 -6
- package/dist/icons/exit-right.js.map +1 -1
- package/dist/icons/expand-height.js +6 -6
- package/dist/icons/expand-height.js.map +1 -1
- package/dist/icons/expand-width.js +6 -6
- package/dist/icons/expand-width.js.map +1 -1
- package/dist/icons/expand.js +6 -6
- package/dist/icons/expand.js.map +1 -1
- package/dist/icons/external.js +6 -6
- package/dist/icons/external.js.map +1 -1
- package/dist/icons/eye-closed.js +6 -6
- package/dist/icons/eye-closed.js.map +1 -1
- package/dist/icons/eye-no.js +6 -6
- package/dist/icons/eye-no.js.map +1 -1
- package/dist/icons/eye.js +6 -6
- package/dist/icons/eye.js.map +1 -1
- package/dist/icons/face-delighted.js +6 -6
- package/dist/icons/face-delighted.js.map +1 -1
- package/dist/icons/face-happy.js +6 -6
- package/dist/icons/face-happy.js.map +1 -1
- package/dist/icons/face-neutral.js +6 -6
- package/dist/icons/face-neutral.js.map +1 -1
- package/dist/icons/face-sad.js +6 -6
- package/dist/icons/face-sad.js.map +1 -1
- package/dist/icons/file-download.js +6 -6
- package/dist/icons/file-download.js.map +1 -1
- package/dist/icons/file-upload.js +6 -6
- package/dist/icons/file-upload.js.map +1 -1
- package/dist/icons/files-history.js +6 -6
- package/dist/icons/files-history.js.map +1 -1
- package/dist/icons/files-multi.js +6 -6
- package/dist/icons/files-multi.js.map +1 -1
- package/dist/icons/files-stack.js +6 -6
- package/dist/icons/files-stack.js.map +1 -1
- package/dist/icons/film.js +6 -6
- package/dist/icons/film.js.map +1 -1
- package/dist/icons/filter-circle.js +6 -6
- package/dist/icons/filter-circle.js.map +1 -1
- package/dist/icons/filter-single.js +6 -6
- package/dist/icons/filter-single.js.map +1 -1
- package/dist/icons/filter.js +6 -6
- package/dist/icons/filter.js.map +1 -1
- package/dist/icons/filtering.js +6 -6
- package/dist/icons/filtering.js.map +1 -1
- package/dist/icons/fingerprint.js +6 -6
- package/dist/icons/fingerprint.js.map +1 -1
- package/dist/icons/flag.js +6 -6
- package/dist/icons/flag.js.map +1 -1
- package/dist/icons/flame-alt.js +6 -6
- package/dist/icons/flame-alt.js.map +1 -1
- package/dist/icons/flame.js +6 -11
- package/dist/icons/flame.js.map +1 -1
- package/dist/icons/flip-view.js +6 -6
- package/dist/icons/flip-view.js.map +1 -1
- package/dist/icons/floppy.js +6 -6
- package/dist/icons/floppy.js.map +1 -1
- package/dist/icons/folder-add.js +6 -6
- package/dist/icons/folder-add.js.map +1 -1
- package/dist/icons/folder-closed.js +6 -6
- package/dist/icons/folder-closed.js.map +1 -1
- package/dist/icons/folder-minus.js +6 -6
- package/dist/icons/folder-minus.js.map +1 -1
- package/dist/icons/folder-open.js +6 -6
- package/dist/icons/folder-open.js.map +1 -1
- package/dist/icons/fork-git.js +6 -6
- package/dist/icons/fork-git.js.map +1 -1
- package/dist/icons/forward.js +6 -6
- package/dist/icons/forward.js.map +1 -1
- package/dist/icons/frame.js +6 -6
- package/dist/icons/frame.js.map +1 -1
- package/dist/icons/fullscreen.js +6 -6
- package/dist/icons/fullscreen.js.map +1 -1
- package/dist/icons/funnel.js +6 -6
- package/dist/icons/funnel.js.map +1 -1
- package/dist/icons/gauge.js +6 -6
- package/dist/icons/gauge.js.map +1 -1
- package/dist/icons/gift.js +6 -6
- package/dist/icons/gift.js.map +1 -1
- package/dist/icons/globe.js +6 -6
- package/dist/icons/globe.js.map +1 -1
- package/dist/icons/gps.js +6 -6
- package/dist/icons/gps.js.map +1 -1
- package/dist/icons/grab.js +6 -6
- package/dist/icons/grab.js.map +1 -1
- package/dist/icons/graph-bar.js +6 -6
- package/dist/icons/graph-bar.js.map +1 -1
- package/dist/icons/graph-box.js +6 -6
- package/dist/icons/graph-box.js.map +1 -1
- package/dist/icons/graph-increase.js +6 -6
- package/dist/icons/graph-increase.js.map +1 -1
- package/dist/icons/grid-circles-add.js +6 -6
- package/dist/icons/grid-circles-add.js.map +1 -1
- package/dist/icons/grid-circles.js +6 -6
- package/dist/icons/grid-circles.js.map +1 -1
- package/dist/icons/grid-small.js +6 -6
- package/dist/icons/grid-small.js.map +1 -1
- package/dist/icons/grid-squares-add.js +6 -6
- package/dist/icons/grid-squares-add.js.map +1 -1
- package/dist/icons/grid-squares.js +6 -6
- package/dist/icons/grid-squares.js.map +1 -1
- package/dist/icons/grid.js +6 -6
- package/dist/icons/grid.js.map +1 -1
- package/dist/icons/hand.js +6 -6
- package/dist/icons/hand.js.map +1 -1
- package/dist/icons/harddrive.js +6 -6
- package/dist/icons/harddrive.js.map +1 -1
- package/dist/icons/hash.js +6 -6
- package/dist/icons/hash.js.map +1 -1
- package/dist/icons/heart-rate.js +6 -6
- package/dist/icons/heart-rate.js.map +1 -1
- package/dist/icons/heart-remove.js +6 -6
- package/dist/icons/heart-remove.js.map +1 -1
- package/dist/icons/heart.js +6 -6
- package/dist/icons/heart.js.map +1 -1
- package/dist/icons/height.js +6 -6
- package/dist/icons/height.js.map +1 -1
- package/dist/icons/hierarchy.js +6 -6
- package/dist/icons/hierarchy.js.map +1 -1
- package/dist/icons/home-alt.js +6 -6
- package/dist/icons/home-alt.js.map +1 -1
- package/dist/icons/home-check.js +6 -6
- package/dist/icons/home-check.js.map +1 -1
- package/dist/icons/home-door.js +6 -6
- package/dist/icons/home-door.js.map +1 -1
- package/dist/icons/home.js +6 -6
- package/dist/icons/home.js.map +1 -1
- package/dist/icons/import.js +6 -6
- package/dist/icons/import.js.map +1 -1
- package/dist/icons/inbox-alt.js +6 -6
- package/dist/icons/inbox-alt.js.map +1 -1
- package/dist/icons/inbox.js +6 -6
- package/dist/icons/inbox.js.map +1 -1
- package/dist/icons/info-circle.js +6 -6
- package/dist/icons/info-circle.js.map +1 -1
- package/dist/icons/iphone-landscape.js +6 -6
- package/dist/icons/iphone-landscape.js.map +1 -1
- package/dist/icons/iphone-portrait.js +6 -6
- package/dist/icons/iphone-portrait.js.map +1 -1
- package/dist/icons/jump-backward.js +6 -6
- package/dist/icons/jump-backward.js.map +1 -1
- package/dist/icons/jump-forward.js +6 -6
- package/dist/icons/jump-forward.js.map +1 -1
- package/dist/icons/jump-left.js +6 -6
- package/dist/icons/jump-left.js.map +1 -1
- package/dist/icons/jump-right.js +6 -6
- package/dist/icons/jump-right.js.map +1 -1
- package/dist/icons/keyboard.js +6 -6
- package/dist/icons/keyboard.js.map +1 -1
- package/dist/icons/laptop.js +6 -6
- package/dist/icons/laptop.js.map +1 -1
- package/dist/icons/lightbulb-on.js +6 -6
- package/dist/icons/lightbulb-on.js.map +1 -1
- package/dist/icons/lightbulb.js +6 -6
- package/dist/icons/lightbulb.js.map +1 -1
- package/dist/icons/lightning-alt.js +6 -6
- package/dist/icons/lightning-alt.js.map +1 -1
- package/dist/icons/lightning.js +6 -6
- package/dist/icons/lightning.js.map +1 -1
- package/dist/icons/lineweight.js +6 -6
- package/dist/icons/lineweight.js.map +1 -1
- package/dist/icons/link-alt.js +6 -6
- package/dist/icons/link-alt.js.map +1 -1
- package/dist/icons/link-broken.js +6 -6
- package/dist/icons/link-broken.js.map +1 -1
- package/dist/icons/link-horizontal.js +6 -6
- package/dist/icons/link-horizontal.js.map +1 -1
- package/dist/icons/link-vertical.js +6 -6
- package/dist/icons/link-vertical.js.map +1 -1
- package/dist/icons/link.js +6 -6
- package/dist/icons/link.js.map +1 -1
- package/dist/icons/list-add.js +6 -6
- package/dist/icons/list-add.js.map +1 -1
- package/dist/icons/list-numbered.js +6 -6
- package/dist/icons/list-numbered.js.map +1 -1
- package/dist/icons/list.js +6 -6
- package/dist/icons/list.js.map +1 -1
- package/dist/icons/loader.js +6 -6
- package/dist/icons/loader.js.map +1 -1
- package/dist/icons/location.js +6 -6
- package/dist/icons/location.js.map +1 -1
- package/dist/icons/lock-open.js +6 -6
- package/dist/icons/lock-open.js.map +1 -1
- package/dist/icons/lock.js +6 -6
- package/dist/icons/lock.js.map +1 -1
- package/dist/icons/mail-add.js +6 -6
- package/dist/icons/mail-add.js.map +1 -1
- package/dist/icons/mail-delete.js +6 -6
- package/dist/icons/mail-delete.js.map +1 -1
- package/dist/icons/mail-minus.js +6 -6
- package/dist/icons/mail-minus.js.map +1 -1
- package/dist/icons/mail-new.js +6 -6
- package/dist/icons/mail-new.js.map +1 -1
- package/dist/icons/mail-open.js +6 -6
- package/dist/icons/mail-open.js.map +1 -1
- package/dist/icons/mail-remove.js +6 -6
- package/dist/icons/mail-remove.js.map +1 -1
- package/dist/icons/mail.js +6 -6
- package/dist/icons/mail.js.map +1 -1
- package/dist/icons/marquee.js +6 -6
- package/dist/icons/marquee.js.map +1 -1
- package/dist/icons/maximise.js +6 -6
- package/dist/icons/maximise.js.map +1 -1
- package/dist/icons/menu-hamburger.js +6 -6
- package/dist/icons/menu-hamburger.js.map +1 -1
- package/dist/icons/menu-horizontal.js +6 -6
- package/dist/icons/menu-horizontal.js.map +1 -1
- package/dist/icons/menu-vertical.js +6 -6
- package/dist/icons/menu-vertical.js.map +1 -1
- package/dist/icons/message-writing.js +6 -6
- package/dist/icons/message-writing.js.map +1 -1
- package/dist/icons/message.js +6 -6
- package/dist/icons/message.js.map +1 -1
- package/dist/icons/microphone-disabled.js +6 -6
- package/dist/icons/microphone-disabled.js.map +1 -1
- package/dist/icons/microphone-muted.js +6 -6
- package/dist/icons/microphone-muted.js.map +1 -1
- package/dist/icons/microphone.js +6 -6
- package/dist/icons/microphone.js.map +1 -1
- package/dist/icons/midpoint.js +6 -6
- package/dist/icons/midpoint.js.map +1 -1
- package/dist/icons/mini-player.js +6 -6
- package/dist/icons/mini-player.js.map +1 -1
- package/dist/icons/minimise.js +6 -6
- package/dist/icons/minimise.js.map +1 -1
- package/dist/icons/minus-circle.js +6 -6
- package/dist/icons/minus-circle.js.map +1 -1
- package/dist/icons/minus.js +6 -6
- package/dist/icons/minus.js.map +1 -1
- package/dist/icons/moon.js +6 -6
- package/dist/icons/moon.js.map +1 -1
- package/dist/icons/move.js +6 -6
- package/dist/icons/move.js.map +1 -1
- package/dist/icons/newspaper.js +6 -6
- package/dist/icons/newspaper.js.map +1 -1
- package/dist/icons/no-sign.js +6 -6
- package/dist/icons/no-sign.js.map +1 -1
- package/dist/icons/notebook.js +6 -6
- package/dist/icons/notebook.js.map +1 -1
- package/dist/icons/notification.js +6 -6
- package/dist/icons/notification.js.map +1 -1
- package/dist/icons/nut.js +6 -6
- package/dist/icons/nut.js.map +1 -1
- package/dist/icons/pages.js +6 -6
- package/dist/icons/pages.js.map +1 -1
- package/dist/icons/panel-bottom.js +6 -6
- package/dist/icons/panel-bottom.js.map +1 -1
- package/dist/icons/panel-center.js +6 -6
- package/dist/icons/panel-center.js.map +1 -1
- package/dist/icons/panel-left.js +6 -6
- package/dist/icons/panel-left.js.map +1 -1
- package/dist/icons/panel-right.js +6 -6
- package/dist/icons/panel-right.js.map +1 -1
- package/dist/icons/panel-sectioned.js +6 -6
- package/dist/icons/panel-sectioned.js.map +1 -1
- package/dist/icons/panel-top.js +6 -6
- package/dist/icons/panel-top.js.map +1 -1
- package/dist/icons/paper-folded.js +6 -6
- package/dist/icons/paper-folded.js.map +1 -1
- package/dist/icons/paper-plane-alt.js +6 -6
- package/dist/icons/paper-plane-alt.js.map +1 -1
- package/dist/icons/paper-plane.js +6 -6
- package/dist/icons/paper-plane.js.map +1 -1
- package/dist/icons/paper.js +6 -6
- package/dist/icons/paper.js.map +1 -1
- package/dist/icons/paperclip.js +6 -6
- package/dist/icons/paperclip.js.map +1 -1
- package/dist/icons/paragraph-center.js +6 -6
- package/dist/icons/paragraph-center.js.map +1 -1
- package/dist/icons/paragraph-end.js +6 -6
- package/dist/icons/paragraph-end.js.map +1 -1
- package/dist/icons/paragraph-left.js +6 -6
- package/dist/icons/paragraph-left.js.map +1 -1
- package/dist/icons/paragraph-right.js +6 -6
- package/dist/icons/paragraph-right.js.map +1 -1
- package/dist/icons/paragraph-start.js +6 -6
- package/dist/icons/paragraph-start.js.map +1 -1
- package/dist/icons/pen.js +6 -6
- package/dist/icons/pen.js.map +1 -1
- package/dist/icons/phone-landscape.js +6 -6
- package/dist/icons/phone-landscape.js.map +1 -1
- package/dist/icons/phone-portrait.js +6 -6
- package/dist/icons/phone-portrait.js.map +1 -1
- package/dist/icons/picture.js +6 -6
- package/dist/icons/picture.js.map +1 -1
- package/dist/icons/pie-half.js +6 -6
- package/dist/icons/pie-half.js.map +1 -1
- package/dist/icons/pie-quarter.js +6 -6
- package/dist/icons/pie-quarter.js.map +1 -1
- package/dist/icons/pie-third.js +6 -6
- package/dist/icons/pie-third.js.map +1 -1
- package/dist/icons/pill.js +6 -6
- package/dist/icons/pill.js.map +1 -1
- package/dist/icons/play-button.js +6 -6
- package/dist/icons/play-button.js.map +1 -1
- package/dist/icons/plus-circle.js +6 -6
- package/dist/icons/plus-circle.js.map +1 -1
- package/dist/icons/plus.js +6 -6
- package/dist/icons/plus.js.map +1 -1
- package/dist/icons/postcard.js +6 -6
- package/dist/icons/postcard.js.map +1 -1
- package/dist/icons/printer.js +6 -6
- package/dist/icons/printer.js.map +1 -1
- package/dist/icons/projector.js +6 -6
- package/dist/icons/projector.js.map +1 -1
- package/dist/icons/pull-down.js +6 -6
- package/dist/icons/pull-down.js.map +1 -1
- package/dist/icons/pull-left.js +6 -6
- package/dist/icons/pull-left.js.map +1 -1
- package/dist/icons/pull-right.js +6 -6
- package/dist/icons/pull-right.js.map +1 -1
- package/dist/icons/pull-up.js +6 -6
- package/dist/icons/pull-up.js.map +1 -1
- package/dist/icons/push-down.js +6 -6
- package/dist/icons/push-down.js.map +1 -1
- package/dist/icons/push-left.js +6 -6
- package/dist/icons/push-left.js.map +1 -1
- package/dist/icons/push-right.js +6 -6
- package/dist/icons/push-right.js.map +1 -1
- package/dist/icons/push-up.js +6 -6
- package/dist/icons/push-up.js.map +1 -1
- package/dist/icons/question-circle.js +6 -6
- package/dist/icons/question-circle.js.map +1 -1
- package/dist/icons/radio-on.js +6 -6
- package/dist/icons/radio-on.js.map +1 -1
- package/dist/icons/receipt.js +6 -6
- package/dist/icons/receipt.js.map +1 -1
- package/dist/icons/record.js +6 -6
- package/dist/icons/record.js.map +1 -1
- package/dist/icons/redo.js +6 -6
- package/dist/icons/redo.js.map +1 -1
- package/dist/icons/refresh-alt.js +6 -6
- package/dist/icons/refresh-alt.js.map +1 -1
- package/dist/icons/refresh.js +6 -6
- package/dist/icons/refresh.js.map +1 -1
- package/dist/icons/replicate-alt.js +6 -6
- package/dist/icons/replicate-alt.js.map +1 -1
- package/dist/icons/replicate.js +6 -6
- package/dist/icons/replicate.js.map +1 -1
- package/dist/icons/reset-alt.js +6 -6
- package/dist/icons/reset-alt.js.map +1 -1
- package/dist/icons/reset-forward.js +6 -6
- package/dist/icons/reset-forward.js.map +1 -1
- package/dist/icons/reset-hard.js +6 -6
- package/dist/icons/reset-hard.js.map +1 -1
- package/dist/icons/reset-temporary.js +6 -6
- package/dist/icons/reset-temporary.js.map +1 -1
- package/dist/icons/reset.js +6 -6
- package/dist/icons/reset.js.map +1 -1
- package/dist/icons/resolver.js +439 -438
- package/dist/icons/resolver.js.map +1 -1
- package/dist/icons/retweet.js +6 -6
- package/dist/icons/retweet.js.map +1 -1
- package/dist/icons/reuse.js +6 -6
- package/dist/icons/reuse.js.map +1 -1
- package/dist/icons/reverse-alt.js +6 -6
- package/dist/icons/reverse-alt.js.map +1 -1
- package/dist/icons/reverse.js +6 -6
- package/dist/icons/reverse.js.map +1 -1
- package/dist/icons/revert.js +6 -6
- package/dist/icons/revert.js.map +1 -1
- package/dist/icons/rocket.js +6 -6
- package/dist/icons/rocket.js.map +1 -1
- package/dist/icons/ruler.js +6 -6
- package/dist/icons/ruler.js.map +1 -1
- package/dist/icons/scale-contract.js +6 -6
- package/dist/icons/scale-contract.js.map +1 -1
- package/dist/icons/scale-extend.js +6 -6
- package/dist/icons/scale-extend.js.map +1 -1
- package/dist/icons/scale.js +6 -6
- package/dist/icons/scale.js.map +1 -1
- package/dist/icons/scalpel.js +6 -6
- package/dist/icons/scalpel.js.map +1 -1
- package/dist/icons/search.js +6 -6
- package/dist/icons/search.js.map +1 -1
- package/dist/icons/server.js +6 -6
- package/dist/icons/server.js.map +1 -1
- package/dist/icons/settings.js +6 -6
- package/dist/icons/settings.js.map +1 -1
- package/dist/icons/share-alt.js +6 -6
- package/dist/icons/share-alt.js.map +1 -1
- package/dist/icons/share.js +6 -6
- package/dist/icons/share.js.map +1 -1
- package/dist/icons/shuffle.js +6 -6
- package/dist/icons/shuffle.js.map +1 -1
- package/dist/icons/side-menu.js +6 -6
- package/dist/icons/side-menu.js.map +1 -1
- package/dist/icons/signal-full.js +6 -6
- package/dist/icons/signal-full.js.map +1 -1
- package/dist/icons/signal-low.js +6 -6
- package/dist/icons/signal-low.js.map +1 -1
- package/dist/icons/signal-medium.js +6 -6
- package/dist/icons/signal-medium.js.map +1 -1
- package/dist/icons/signal-none.js +6 -6
- package/dist/icons/signal-none.js.map +1 -1
- package/dist/icons/slash-backward.js +6 -6
- package/dist/icons/slash-backward.js.map +1 -1
- package/dist/icons/slash-forward.js +6 -6
- package/dist/icons/slash-forward.js.map +1 -1
- package/dist/icons/sliders.js +6 -6
- package/dist/icons/sliders.js.map +1 -1
- package/dist/icons/sort-alt.js +6 -6
- package/dist/icons/sort-alt.js.map +1 -1
- package/dist/icons/sort.js +6 -6
- package/dist/icons/sort.js.map +1 -1
- package/dist/icons/speaker.js +6 -6
- package/dist/icons/speaker.js.map +1 -1
- package/dist/icons/speech-bubble.js +6 -6
- package/dist/icons/speech-bubble.js.map +1 -1
- package/dist/icons/speech-typing.js +6 -6
- package/dist/icons/speech-typing.js.map +1 -1
- package/dist/icons/split-three.js +6 -6
- package/dist/icons/split-three.js.map +1 -1
- package/dist/icons/split.js +6 -6
- package/dist/icons/split.js.map +1 -1
- package/dist/icons/star.js +6 -6
- package/dist/icons/star.js.map +1 -1
- package/dist/icons/sun.js +6 -6
- package/dist/icons/sun.js.map +1 -1
- package/dist/icons/support.js +6 -6
- package/dist/icons/support.js.map +1 -1
- package/dist/icons/swap.js +6 -6
- package/dist/icons/swap.js.map +1 -1
- package/dist/icons/switch.js +6 -6
- package/dist/icons/switch.js.map +1 -1
- package/dist/icons/table-header.js +6 -6
- package/dist/icons/table-header.js.map +1 -1
- package/dist/icons/table.js +6 -6
- package/dist/icons/table.js.map +1 -1
- package/dist/icons/tag-milestone.js +6 -6
- package/dist/icons/tag-milestone.js.map +1 -1
- package/dist/icons/tag.js +6 -6
- package/dist/icons/tag.js.map +1 -1
- package/dist/icons/tags.js +6 -6
- package/dist/icons/tags.js.map +1 -1
- package/dist/icons/target.js +6 -6
- package/dist/icons/target.js.map +1 -1
- package/dist/icons/terminal.js +6 -6
- package/dist/icons/terminal.js.map +1 -1
- package/dist/icons/thread.js +6 -6
- package/dist/icons/thread.js.map +1 -1
- package/dist/icons/thumbs-down.js +6 -6
- package/dist/icons/thumbs-down.js.map +1 -1
- package/dist/icons/thumbs-up.js +6 -6
- package/dist/icons/thumbs-up.js.map +1 -1
- package/dist/icons/ticket.js +6 -6
- package/dist/icons/ticket.js.map +1 -1
- package/dist/icons/timeline.js +6 -6
- package/dist/icons/timeline.js.map +1 -1
- package/dist/icons/todo.js +6 -6
- package/dist/icons/todo.js.map +1 -1
- package/dist/icons/toggle.js +6 -6
- package/dist/icons/toggle.js.map +1 -1
- package/dist/icons/toggles.js +6 -6
- package/dist/icons/toggles.js.map +1 -1
- package/dist/icons/translate.js +6 -6
- package/dist/icons/translate.js.map +1 -1
- package/dist/icons/trash-alt.js +6 -6
- package/dist/icons/trash-alt.js.map +1 -1
- package/dist/icons/trash.js +6 -6
- package/dist/icons/trash.js.map +1 -1
- package/dist/icons/trophy.js +6 -6
- package/dist/icons/trophy.js.map +1 -1
- package/dist/icons/tv-mode.js +6 -6
- package/dist/icons/tv-mode.js.map +1 -1
- package/dist/icons/unarchive.js +6 -6
- package/dist/icons/unarchive.js.map +1 -1
- package/dist/icons/undo-history.js +6 -6
- package/dist/icons/undo-history.js.map +1 -1
- package/dist/icons/undo.js +6 -6
- package/dist/icons/undo.js.map +1 -1
- package/dist/icons/unlink-horizontal.js +6 -6
- package/dist/icons/unlink-horizontal.js.map +1 -1
- package/dist/icons/unlink-vertical.js +6 -6
- package/dist/icons/unlink-vertical.js.map +1 -1
- package/dist/icons/upload-alt.js +6 -6
- package/dist/icons/upload-alt.js.map +1 -1
- package/dist/icons/upload.js +6 -6
- package/dist/icons/upload.js.map +1 -1
- package/dist/icons/upward.js +6 -6
- package/dist/icons/upward.js.map +1 -1
- package/dist/icons/user-add.js +6 -6
- package/dist/icons/user-add.js.map +1 -1
- package/dist/icons/user-circle.js +6 -6
- package/dist/icons/user-circle.js.map +1 -1
- package/dist/icons/user-male-circle.js +6 -6
- package/dist/icons/user-male-circle.js.map +1 -1
- package/dist/icons/user-male.js +6 -6
- package/dist/icons/user-male.js.map +1 -1
- package/dist/icons/user-remove.js +6 -6
- package/dist/icons/user-remove.js.map +1 -1
- package/dist/icons/user.js +6 -6
- package/dist/icons/user.js.map +1 -1
- package/dist/icons/users.js +6 -6
- package/dist/icons/users.js.map +1 -1
- package/dist/icons/venn.js +6 -6
- package/dist/icons/venn.js.map +1 -1
- package/dist/icons/version.js +6 -6
- package/dist/icons/version.js.map +1 -1
- package/dist/icons/versions.js +6 -6
- package/dist/icons/versions.js.map +1 -1
- package/dist/icons/video.js +6 -6
- package/dist/icons/video.js.map +1 -1
- package/dist/icons/volume-0.js +6 -6
- package/dist/icons/volume-0.js.map +1 -1
- package/dist/icons/volume-add.js +6 -6
- package/dist/icons/volume-add.js.map +1 -1
- package/dist/icons/volume-disabled.js +6 -6
- package/dist/icons/volume-disabled.js.map +1 -1
- package/dist/icons/volume-high.js +6 -6
- package/dist/icons/volume-high.js.map +1 -1
- package/dist/icons/volume-low.js +6 -6
- package/dist/icons/volume-low.js.map +1 -1
- package/dist/icons/volume-minus.js +6 -6
- package/dist/icons/volume-minus.js.map +1 -1
- package/dist/icons/volume-muted.js +6 -6
- package/dist/icons/volume-muted.js.map +1 -1
- package/dist/icons/wallet.js +6 -6
- package/dist/icons/wallet.js.map +1 -1
- package/dist/icons/warning-circle.js +6 -6
- package/dist/icons/warning-circle.js.map +1 -1
- package/dist/icons/warning-hex.js +6 -6
- package/dist/icons/warning-hex.js.map +1 -1
- package/dist/icons/warning-triangle.js +6 -6
- package/dist/icons/warning-triangle.js.map +1 -1
- package/dist/icons/waves.js +6 -6
- package/dist/icons/waves.js.map +1 -1
- package/dist/icons/width.js +6 -6
- package/dist/icons/width.js.map +1 -1
- package/dist/icons/wifi-error.js +6 -6
- package/dist/icons/wifi-error.js.map +1 -1
- package/dist/icons/wifi-none.js +6 -6
- package/dist/icons/wifi-none.js.map +1 -1
- package/dist/icons/wifi.js +6 -6
- package/dist/icons/wifi.js.map +1 -1
- package/dist/icons/window-collapse-left.js +6 -6
- package/dist/icons/window-collapse-left.js.map +1 -1
- package/dist/icons/window-collapse-right.js +6 -6
- package/dist/icons/window-collapse-right.js.map +1 -1
- package/dist/icons/window-content.js +6 -6
- package/dist/icons/window-content.js.map +1 -1
- package/dist/icons/window.js +6 -6
- package/dist/icons/window.js.map +1 -1
- package/dist/icons/wrap-back.js +6 -6
- package/dist/icons/wrap-back.js.map +1 -1
- package/dist/icons/wrap-forward.js +6 -6
- package/dist/icons/wrap-forward.js.map +1 -1
- package/dist/icons/write.js +6 -6
- package/dist/icons/write.js.map +1 -1
- package/dist/icons/zoom-cancel.js +6 -6
- package/dist/icons/zoom-cancel.js.map +1 -1
- package/dist/icons/zoom-in.js +6 -6
- package/dist/icons/zoom-in.js.map +1 -1
- package/dist/icons/zoom-out.js +6 -6
- package/dist/icons/zoom-out.js.map +1 -1
- package/dist/icons/zoom-reset.js +6 -6
- package/dist/icons/zoom-reset.js.map +1 -1
- package/dist/index.css +2 -1
- package/dist/index.js +56 -99
- package/dist/shared/accordion-DdjSWHBH.js +359 -0
- package/dist/shared/accordion-DdjSWHBH.js.map +1 -0
- package/dist/shared/alert-CZE6Ht5G.js +234 -0
- package/dist/shared/alert-CZE6Ht5G.js.map +1 -0
- package/dist/shared/avatar-DMc878aU.js +232 -0
- package/dist/shared/avatar-DMc878aU.js.map +1 -0
- package/dist/shared/badge-Bc661ppN.js +142 -0
- package/dist/shared/badge-Bc661ppN.js.map +1 -0
- package/dist/shared/boolean-converter-saxBDLhA.js +13 -0
- package/dist/shared/boolean-converter-saxBDLhA.js.map +1 -0
- package/dist/shared/breadcrumb-BUUBrakn.js +459 -0
- package/dist/shared/breadcrumb-BUUBrakn.js.map +1 -0
- package/dist/shared/button-BBmxCyz-.js +186 -0
- package/dist/shared/button-BBmxCyz-.js.map +1 -0
- package/dist/shared/card-Cm0X0KrG.js +216 -0
- package/dist/shared/card-Cm0X0KrG.js.map +1 -0
- package/dist/shared/checkbox-DVNGkHj-.js +322 -0
- package/dist/shared/checkbox-DVNGkHj-.js.map +1 -0
- package/dist/shared/code-block-9yvHd_mF.js +542 -0
- package/dist/shared/code-block-9yvHd_mF.js.map +1 -0
- package/dist/shared/color-picker-C3-0c3_0.js +1423 -0
- package/dist/shared/color-picker-C3-0c3_0.js.map +1 -0
- package/dist/shared/combobox-fcD23BVq.js +557 -0
- package/dist/shared/combobox-fcD23BVq.js.map +1 -0
- package/dist/shared/container-g5tWN0VG.js +85 -0
- package/dist/shared/container-g5tWN0VG.js.map +1 -0
- package/dist/shared/date-picker-CBtZk2uN.js +719 -0
- package/dist/shared/date-picker-CBtZk2uN.js.map +1 -0
- package/dist/shared/debounce-BOon6N4f.js +23 -0
- package/dist/shared/debounce-BOon6N4f.js.map +1 -0
- package/dist/shared/decorate-BJVyhdRd.js +9 -0
- package/dist/shared/divider-Cs0fV9wg.js +205 -0
- package/dist/shared/divider-Cs0fV9wg.js.map +1 -0
- package/dist/shared/drawer-B_BgT3xH.js +533 -0
- package/dist/shared/drawer-B_BgT3xH.js.map +1 -0
- package/dist/shared/dropdown-DXT3zeCU.js +316 -0
- package/dist/shared/dropdown-DXT3zeCU.js.map +1 -0
- package/dist/shared/field-message-CPXPLd6z.js +46 -0
- package/dist/shared/field-message-CPXPLd6z.js.map +1 -0
- package/dist/shared/fieldset-BPRt4nC5.js +155 -0
- package/dist/shared/fieldset-BPRt4nC5.js.map +1 -0
- package/dist/shared/file-upload-Cn6JAJ2C.js +608 -0
- package/dist/shared/file-upload-Cn6JAJ2C.js.map +1 -0
- package/dist/shared/form-control-CBEBNz12.js +120 -0
- package/dist/shared/form-control-CBEBNz12.js.map +1 -0
- package/dist/shared/grid-BDSEzri7.js +88 -0
- package/dist/shared/grid-BDSEzri7.js.map +1 -0
- package/dist/shared/heading-9DjHVERY.js +150 -0
- package/dist/shared/heading-9DjHVERY.js.map +1 -0
- package/dist/shared/icon-SU3ebQcn.js +176 -0
- package/dist/shared/icon-SU3ebQcn.js.map +1 -0
- package/dist/shared/icon-button-BQJ44FGd.js +230 -0
- package/dist/shared/icon-button-BQJ44FGd.js.map +1 -0
- package/dist/shared/input-nV6RvTZq.js +329 -0
- package/dist/shared/input-nV6RvTZq.js.map +1 -0
- package/dist/shared/link-BlDSXjMo.js +174 -0
- package/dist/shared/link-BlDSXjMo.js.map +1 -0
- package/dist/shared/memoize-CpXRWhgJ.js +14 -0
- package/dist/shared/memoize-CpXRWhgJ.js.map +1 -0
- package/dist/shared/menu-Cr_E847O.js +291 -0
- package/dist/shared/menu-Cr_E847O.js.map +1 -0
- package/dist/shared/modal-BxL4EDMm.js +299 -0
- package/dist/shared/modal-BxL4EDMm.js.map +1 -0
- package/dist/shared/multi-select-BuU5RFrR.js +631 -0
- package/dist/shared/multi-select-BuU5RFrR.js.map +1 -0
- package/dist/shared/notification--jDZt64l.js +385 -0
- package/dist/shared/notification--jDZt64l.js.map +1 -0
- package/dist/shared/notification-stack-iVG35x2L.js +127 -0
- package/dist/shared/notification-stack-iVG35x2L.js.map +1 -0
- package/dist/shared/number-input-CnHIbGjG.js +474 -0
- package/dist/shared/number-input-CnHIbGjG.js.map +1 -0
- package/dist/shared/pagination-sPm2C9Gl.js +295 -0
- package/dist/shared/pagination-sPm2C9Gl.js.map +1 -0
- package/dist/shared/popover-BBmiWhfm.js +560 -0
- package/dist/shared/popover-BBmiWhfm.js.map +1 -0
- package/dist/shared/progress-BPsiJ-Bl.js +198 -0
- package/dist/shared/progress-BPsiJ-Bl.js.map +1 -0
- package/dist/shared/radio-DnuSzORk.js +306 -0
- package/dist/shared/radio-DnuSzORk.js.map +1 -0
- package/dist/shared/radio-group-Cey9Yz5s.js +163 -0
- package/dist/shared/radio-group-Cey9Yz5s.js.map +1 -0
- package/dist/shared/select-Dz52figi.js +465 -0
- package/dist/shared/select-Dz52figi.js.map +1 -0
- package/dist/shared/skeleton-BY6tANXI.js +206 -0
- package/dist/shared/skeleton-BY6tANXI.js.map +1 -0
- package/dist/shared/slider-6Q8ChlAS.js +425 -0
- package/dist/shared/slider-6Q8ChlAS.js.map +1 -0
- package/dist/shared/spinner-Bg4fErQA.js +129 -0
- package/dist/shared/spinner-Bg4fErQA.js.map +1 -0
- package/dist/shared/stack-BZslXtDg.js +113 -0
- package/dist/shared/stack-BZslXtDg.js.map +1 -0
- package/dist/shared/stepper-B42LunTc.js +713 -0
- package/dist/shared/stepper-B42LunTc.js.map +1 -0
- package/dist/shared/switch-Df-8K3aW.js +348 -0
- package/dist/shared/switch-Df-8K3aW.js.map +1 -0
- package/dist/shared/table-D2qrSuqf.js +575 -0
- package/dist/shared/table-D2qrSuqf.js.map +1 -0
- package/dist/shared/tabs-CDf79ZXn.js +523 -0
- package/dist/shared/tabs-CDf79ZXn.js.map +1 -0
- package/dist/shared/tag-CHVTSqVW.js +292 -0
- package/dist/shared/tag-CHVTSqVW.js.map +1 -0
- package/dist/shared/text-DpWMArti.js +272 -0
- package/dist/shared/text-DpWMArti.js.map +1 -0
- package/dist/shared/textarea-Cba7xnZw.js +346 -0
- package/dist/shared/textarea-Cba7xnZw.js.map +1 -0
- package/dist/shared/time-picker-B_KTAdhx.js +423 -0
- package/dist/shared/time-picker-B_KTAdhx.js.map +1 -0
- package/dist/shared/tooltip-DUXEHFzC.js +212 -0
- package/dist/shared/tooltip-DUXEHFzC.js.map +1 -0
- package/dist/shared/tree-Dm3oQey1.js +450 -0
- package/dist/shared/tree-Dm3oQey1.js.map +1 -0
- package/dist/utilities/field-message.d.ts +42 -0
- package/dist/utilities/field-message.d.ts.map +1 -0
- package/dist/utilities/form-control.d.ts +87 -0
- package/dist/utilities/form-control.d.ts.map +1 -0
- package/dist/utilities/index.d.ts +2 -0
- package/dist/utilities/index.d.ts.map +1 -1
- package/package.json +35 -29
- package/dist/components/accordion.js.map +0 -1
- package/dist/components/alert.js.map +0 -1
- package/dist/components/avatar.js.map +0 -1
- package/dist/components/badge.js.map +0 -1
- package/dist/components/breadcrumb.js.map +0 -1
- package/dist/components/button.js.map +0 -1
- package/dist/components/card.js.map +0 -1
- package/dist/components/checkbox.js.map +0 -1
- package/dist/components/code-block.js.map +0 -1
- package/dist/components/color-picker.js.map +0 -1
- package/dist/components/combobox.js.map +0 -1
- package/dist/components/date-picker.js.map +0 -1
- package/dist/components/divider.js.map +0 -1
- package/dist/components/drawer.js.map +0 -1
- package/dist/components/dropdown.js.map +0 -1
- package/dist/components/file-upload.js.map +0 -1
- package/dist/components/heading.js.map +0 -1
- package/dist/components/icon.js.map +0 -1
- package/dist/components/input.js.map +0 -1
- package/dist/components/link.js.map +0 -1
- package/dist/components/menu.js.map +0 -1
- package/dist/components/modal.js.map +0 -1
- package/dist/components/multi-select.js.map +0 -1
- package/dist/components/notification.js.map +0 -1
- package/dist/components/number-input.js.map +0 -1
- package/dist/components/pagination.js.map +0 -1
- package/dist/components/popover.js.map +0 -1
- package/dist/components/progress.js.map +0 -1
- package/dist/components/radio.js.map +0 -1
- package/dist/components/select.js.map +0 -1
- package/dist/components/skeleton.js.map +0 -1
- package/dist/components/slider.js.map +0 -1
- package/dist/components/spinner.js.map +0 -1
- package/dist/components/stepper.js.map +0 -1
- package/dist/components/switch.js.map +0 -1
- package/dist/components/table.js.map +0 -1
- package/dist/components/tabs.js.map +0 -1
- package/dist/components/tag.js.map +0 -1
- package/dist/components/text.js.map +0 -1
- package/dist/components/textarea.js.map +0 -1
- package/dist/components/time-picker.js.map +0 -1
- package/dist/components/tooltip.js.map +0 -1
- package/dist/components/tree.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/shared/boolean-converter-XDGfS9LC.js +0 -12
- package/dist/shared/boolean-converter-XDGfS9LC.js.map +0 -1
- package/dist/shared/debounce-BckY30Sf.js +0 -23
- package/dist/shared/debounce-BckY30Sf.js.map +0 -1
- package/dist/shared/memoize-DlOFy-92.js +0 -16
- package/dist/shared/memoize-DlOFy-92.js.map +0 -1
- package/dist/shared/slider-BNt5TITl.js +0 -484
- package/dist/shared/slider-BNt5TITl.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload.js","sources":["../../source/components/file-upload/file-upload.style.ts","../../source/components/file-upload/file-upload.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const fileUploadStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n .file-upload {\n font-family: var(--bp-font-family);\n display: flex;\n flex-direction: column;\n gap: var(--bp-spacing-md);\n }\n\n /* Hidden file input - standard sr-only pattern */\n input[type='file'] {\n position: absolute;\n width: var(--bp-spacing-0-5);\n height: var(--bp-spacing-0-5);\n padding: var(--bp-spacing-0);\n margin: calc(var(--bp-spacing-0-5) * -1);\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n /* Visually hidden but accessible - standard sr-only pattern */\n .visually-hidden {\n position: absolute;\n width: var(--bp-spacing-0-5);\n height: var(--bp-spacing-0-5);\n padding: var(--bp-spacing-0);\n margin: calc(var(--bp-spacing-0-5) * -1);\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n /* Dropzone */\n .file-upload__dropzone {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--bp-spacing-sm);\n padding: var(--bp-spacing-xl);\n border: var(--bp-focus-width) dashed var(--bp-color-border);\n border-radius: var(--bp-border-radius-lg);\n background-color: var(--bp-color-surface);\n cursor: pointer;\n transition:\n border-color var(--bp-transition-fast),\n background-color var(--bp-transition-fast);\n text-align: center;\n }\n\n .file-upload__dropzone:hover:not(.file-upload__dropzone--disabled) {\n border-color: var(--bp-color-primary);\n background-color: var(--bp-color-surface-elevated);\n }\n\n .file-upload__dropzone:focus-visible {\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n border-color: var(--bp-color-primary);\n }\n\n .file-upload__dropzone:active:not(.file-upload__dropzone--disabled) {\n transform: scale(0.995);\n }\n\n /* Drag over state */\n .file-upload__dropzone--drag-over {\n border-color: var(--bp-color-primary);\n background-color: var(--bp-color-surface-elevated);\n border-style: solid;\n }\n\n /* Disabled state */\n .file-upload__dropzone--disabled {\n opacity: var(--bp-opacity-disabled);\n cursor: not-allowed;\n background-color: var(--bp-color-surface-subdued);\n }\n\n /* Icon */\n .file-upload__icon {\n width: var(--bp-spacing-2xl);\n height: var(--bp-spacing-2xl);\n color: var(--bp-color-text-muted);\n transition: color var(--bp-transition-fast);\n }\n\n .file-upload__dropzone:hover:not(.file-upload__dropzone--disabled)\n .file-upload__icon,\n .file-upload__dropzone--drag-over .file-upload__icon {\n color: var(--bp-color-primary);\n }\n\n /* Label */\n .file-upload__label {\n font-size: var(--bp-font-size-base);\n font-weight: var(--bp-font-weight-medium);\n color: var(--bp-color-text);\n line-height: var(--bp-line-height-normal);\n }\n\n /* Description */\n .file-upload__description {\n font-size: var(--bp-font-size-sm);\n color: var(--bp-color-text-muted);\n line-height: var(--bp-line-height-normal);\n }\n\n /* Variants */\n .file-upload__dropzone--success {\n border-color: var(--bp-color-success);\n }\n\n .file-upload__dropzone--success:hover:not(.file-upload__dropzone--disabled) {\n border-color: var(--bp-color-success);\n }\n\n .file-upload__dropzone--error {\n border-color: var(--bp-color-error);\n }\n\n .file-upload__dropzone--error:hover:not(.file-upload__dropzone--disabled) {\n border-color: var(--bp-color-error);\n }\n\n .file-upload__dropzone--warning {\n border-color: var(--bp-color-warning);\n }\n\n .file-upload__dropzone--warning:hover:not(.file-upload__dropzone--disabled) {\n border-color: var(--bp-color-warning);\n }\n\n /* Size variants */\n .file-upload__dropzone--sm {\n padding: var(--bp-spacing-lg);\n gap: var(--bp-spacing-xs);\n }\n\n .file-upload__dropzone--sm .file-upload__icon {\n width: var(--bp-spacing-xl);\n height: var(--bp-spacing-xl);\n }\n\n .file-upload__dropzone--sm .file-upload__label {\n font-size: var(--bp-font-size-sm);\n }\n\n .file-upload__dropzone--sm .file-upload__description {\n font-size: var(--bp-font-size-xs);\n }\n\n .file-upload__dropzone--md {\n padding: var(--bp-spacing-xl);\n }\n\n .file-upload__dropzone--lg {\n padding: var(--bp-spacing-2xl);\n gap: var(--bp-spacing-md);\n }\n\n .file-upload__dropzone--lg .file-upload__icon {\n width: var(--bp-spacing-10);\n height: var(--bp-spacing-10);\n }\n\n .file-upload__dropzone--lg .file-upload__label {\n font-size: var(--bp-font-size-lg);\n }\n\n /* File list */\n .file-upload__file-list {\n display: flex;\n flex-direction: column;\n gap: var(--bp-spacing-sm);\n }\n\n .file-upload__file-item {\n display: flex;\n align-items: center;\n gap: var(--bp-spacing-md);\n padding: var(--bp-spacing-md);\n background-color: var(--bp-color-surface);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n transition:\n background-color var(--bp-transition-fast),\n border-color var(--bp-transition-fast),\n transform var(--bp-transition-fast);\n }\n\n .file-upload__file-item:hover {\n background-color: var(--bp-color-surface-elevated);\n border-color: var(--bp-color-border-strong);\n }\n\n .file-upload__file-item:active {\n transform: scale(0.99);\n }\n\n /* File preview */\n .file-upload__preview {\n width: var(--bp-spacing-10);\n height: var(--bp-spacing-10);\n object-fit: cover;\n border-radius: var(--bp-border-radius-sm);\n flex-shrink: 0;\n }\n\n .file-upload__file-icon {\n width: var(--bp-spacing-10);\n height: var(--bp-spacing-10);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: var(--bp-color-text-muted);\n transition: color var(--bp-transition-fast);\n }\n\n .file-upload__file-icon svg {\n width: var(--bp-spacing-6);\n height: var(--bp-spacing-6);\n }\n\n /* File info */\n .file-upload__file-info {\n display: flex;\n flex-direction: column;\n gap: var(--bp-spacing-2xs);\n flex: 1;\n min-width: 0;\n }\n\n .file-upload__file-name {\n font-size: var(--bp-font-size-sm);\n font-weight: var(--bp-font-weight-medium);\n color: var(--bp-color-text);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: var(--bp-line-height-normal);\n }\n\n .file-upload__file-size {\n font-size: var(--bp-font-size-xs);\n color: var(--bp-color-text-muted);\n line-height: var(--bp-line-height-normal);\n }\n\n /* Remove button */\n .file-upload__remove-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--bp-spacing-6);\n height: var(--bp-spacing-6);\n padding: 0;\n border: none;\n background: transparent;\n border-radius: var(--bp-border-radius-sm);\n color: var(--bp-color-text-muted);\n cursor: pointer;\n transition:\n background-color var(--bp-transition-fast),\n color var(--bp-transition-fast);\n flex-shrink: 0;\n }\n\n .file-upload__remove-button:hover:not(:disabled) {\n background-color: var(--bp-color-error);\n color: var(--bp-color-text-inverse);\n }\n\n .file-upload__remove-button:focus-visible {\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n }\n\n .file-upload__remove-button:disabled {\n cursor: not-allowed;\n opacity: var(--bp-opacity-disabled);\n }\n\n .file-upload__remove-button svg {\n width: var(--bp-spacing-4);\n height: var(--bp-spacing-4);\n }\n\n /* Message */\n .file-upload__message {\n font-size: var(--bp-font-size-sm);\n color: var(--bp-color-text-muted);\n line-height: var(--bp-line-height-normal);\n }\n\n .file-upload__message--success {\n color: var(--bp-color-success);\n }\n\n .file-upload__message--error {\n color: var(--bp-color-error);\n }\n\n .file-upload__message--warning {\n color: var(--bp-color-warning);\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { fileUploadStyles } from './file-upload.style.js';\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\n\n/**\n * File information object returned in events\n */\nexport interface FileInfo {\n /** Original File object */\n file: File;\n /** File name */\n name: string;\n /** File size in bytes */\n size: number;\n /** MIME type */\n type: string;\n /** Unique identifier */\n id: string;\n /** Preview URL for images */\n previewUrl?: string;\n /** Upload progress (0-100) */\n progress?: number;\n /** Upload status */\n status?: 'pending' | 'uploading' | 'complete' | 'error';\n /** Error message if upload failed */\n error?: string;\n}\n\n/**\n * A file upload component with drag-and-drop support.\n *\n * @element bp-file-upload\n *\n * @fires bp-change - Fired when files are added or removed\n * @fires bp-file-added - Fired when a file is added\n * @fires bp-file-removed - Fired when a file is removed\n * @fires bp-file-rejected - Fired when a file is rejected (wrong type/size)\n *\n * @csspart dropzone - The drop zone container\n * @csspart input - The hidden file input\n * @csspart label - The label text\n * @csspart description - The description text\n * @csspart icon - The upload icon\n * @csspart file-list - The file list container\n * @csspart file-item - Individual file item\n * @csspart file-name - File name text\n * @csspart file-size - File size text\n * @csspart file-remove - Remove file button\n */\n@customElement('bp-file-upload')\nexport class BpFileUpload extends LitElement {\n /** Name attribute for form submission */\n @property({ type: String }) declare name: string;\n\n /** Label text displayed in the drop zone */\n @property({ type: String }) declare label: string;\n\n /** Description text displayed below the label */\n @property({ type: String }) declare description: string;\n\n /** Accepted file types (comma-separated MIME types or extensions) */\n @property({ type: String }) declare accept: string;\n\n /** Whether multiple files can be selected */\n @property({ type: Boolean }) declare multiple: boolean;\n\n /** Maximum file size in bytes */\n @property({ type: Number }) declare maxSize: number;\n\n /** Maximum number of files allowed */\n @property({ type: Number }) declare maxFiles: number;\n\n /** Whether the component is disabled */\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\n\n /** Whether a file is required */\n @property({ type: Boolean }) declare required: boolean;\n\n /** Visual variant for validation states */\n @property({ type: String }) declare variant:\n | 'default'\n | 'success'\n | 'error'\n | 'warning';\n\n /** Helper or error message text */\n @property({ type: String }) declare message: string;\n\n /** Size variant */\n @property({ type: String }) declare size: 'sm' | 'md' | 'lg';\n\n /** Whether to show file previews for images */\n @property({ converter: booleanConverter, reflect: true })\n declare showPreviews: boolean;\n\n /** Whether drag is currently over the drop zone */\n @state() private isDragOver = false;\n\n /** List of selected files */\n @state() private files: FileInfo[] = [];\n\n /** Reference to the hidden file input */\n @query('input[type=\"file\"]') private fileInput!: HTMLInputElement;\n\n static styles = [fileUploadStyles];\n\n constructor() {\n super();\n this.name = '';\n this.label = 'Drop files here or click to upload';\n this.description = '';\n this.accept = '';\n this.multiple = false;\n this.maxSize = 0;\n this.maxFiles = 0;\n this.disabled = false;\n this.required = false;\n this.variant = 'default';\n this.message = '';\n this.size = 'md';\n this.showPreviews = true;\n }\n\n /**\n * Get the list of selected files\n */\n getFiles(): FileInfo[] {\n return [...this.files];\n }\n\n /**\n * Clear all selected files\n */\n clearFiles(): void {\n // Revoke object URLs to prevent memory leaks\n this.files.forEach((fileInfo) => {\n if (fileInfo.previewUrl) {\n URL.revokeObjectURL(fileInfo.previewUrl);\n }\n });\n this.files = [];\n if (this.fileInput) {\n this.fileInput.value = '';\n }\n this.dispatchChangeEvent();\n }\n\n /**\n * Remove a specific file by ID\n */\n removeFile(fileId: string): void {\n const fileIndex = this.files.findIndex((f) => f.id === fileId);\n if (fileIndex !== -1) {\n const removedFile = this.files[fileIndex];\n if (removedFile.previewUrl) {\n URL.revokeObjectURL(removedFile.previewUrl);\n }\n this.files = this.files.filter((f) => f.id !== fileId);\n this.dispatchEvent(\n new CustomEvent('bp-file-removed', {\n detail: { file: removedFile },\n bubbles: true,\n composed: true,\n })\n );\n this.dispatchChangeEvent();\n }\n }\n\n private handleClick(): void {\n if (!this.disabled) {\n this.fileInput?.click();\n }\n }\n\n private handleKeyDown(event: globalThis.KeyboardEvent): void {\n if (this.disabled) return;\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.fileInput?.click();\n }\n }\n\n private handleInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.files) {\n this.processFiles(Array.from(input.files));\n }\n }\n\n private handleDragEnter(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n this.isDragOver = true;\n }\n }\n\n private handleDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled && event.dataTransfer) {\n event.dataTransfer.dropEffect = 'copy';\n }\n }\n\n private handleDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n // Only set isDragOver to false if we're leaving the dropzone entirely\n const relatedTarget = event.relatedTarget as Node | null;\n if (!this.contains(relatedTarget)) {\n this.isDragOver = false;\n }\n }\n\n private handleDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n\n if (this.disabled) return;\n\n const dataTransfer = event.dataTransfer;\n if (dataTransfer?.files) {\n this.processFiles(Array.from(dataTransfer.files));\n }\n }\n\n private processFiles(newFiles: File[]): void {\n const validFiles: FileInfo[] = [];\n\n for (const file of newFiles) {\n // Check if max files limit is reached\n if (\n this.maxFiles > 0 &&\n this.files.length + validFiles.length >= this.maxFiles\n ) {\n this.dispatchRejectEvent(file, 'Maximum number of files exceeded');\n continue;\n }\n\n // Check file type\n if (this.accept && !this.isFileTypeAccepted(file)) {\n this.dispatchRejectEvent(file, 'File type not accepted');\n continue;\n }\n\n // Check file size\n if (this.maxSize > 0 && file.size > this.maxSize) {\n this.dispatchRejectEvent(file, 'File size exceeds limit');\n continue;\n }\n\n // Create file info object\n const fileInfo: FileInfo = {\n file,\n name: file.name,\n size: file.size,\n type: file.type,\n id: this.generateFileId(),\n status: 'pending',\n progress: 0,\n };\n\n // Generate preview for images\n if (this.showPreviews && file.type.startsWith('image/')) {\n fileInfo.previewUrl = URL.createObjectURL(file);\n }\n\n validFiles.push(fileInfo);\n\n this.dispatchEvent(\n new CustomEvent('bp-file-added', {\n detail: { file: fileInfo },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n if (validFiles.length > 0) {\n if (this.multiple) {\n this.files = [...this.files, ...validFiles];\n } else {\n // Single file mode - replace existing file\n this.files.forEach((existingFile) => {\n if (existingFile.previewUrl) {\n URL.revokeObjectURL(existingFile.previewUrl);\n }\n });\n this.files = validFiles.slice(0, 1);\n }\n this.dispatchChangeEvent();\n }\n }\n\n private isFileTypeAccepted(file: File): boolean {\n if (!this.accept) return true;\n\n const acceptedTypes = this.accept\n .split(',')\n .map((type) => type.trim().toLowerCase());\n const fileType = file.type.toLowerCase();\n const fileExtension = '.' + file.name.split('.').pop()?.toLowerCase();\n\n return acceptedTypes.some((accepted) => {\n // Check MIME type match\n if (accepted === fileType) return true;\n // Check extension match\n if (accepted === fileExtension) return true;\n // Check wildcard MIME type (e.g., image/*)\n if (accepted.endsWith('/*')) {\n const category = accepted.slice(0, -2);\n return fileType.startsWith(category + '/');\n }\n return false;\n });\n }\n\n private dispatchChangeEvent(): void {\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: { files: this.getFiles() },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private dispatchRejectEvent(file: File, reason: string): void {\n this.dispatchEvent(\n new CustomEvent('bp-file-rejected', {\n detail: { file, reason },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private generateFileId(): string {\n return `file-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n }\n\n private formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n const units = ['B', 'KB', 'MB', 'GB'];\n const exponent = Math.min(\n Math.floor(Math.log(bytes) / Math.log(1024)),\n units.length - 1\n );\n const size = bytes / Math.pow(1024, exponent);\n return `${size.toFixed(exponent > 0 ? 1 : 0)} ${units[exponent]}`;\n }\n\n private handleRemoveFile(event: Event, fileId: string): void {\n event.stopPropagation();\n this.removeFile(fileId);\n }\n\n private renderUploadIcon() {\n return html`\n <svg\n class=\"file-upload__icon\"\n part=\"icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" />\n </svg>\n `;\n }\n\n private renderFileList() {\n if (this.files.length === 0) return nothing;\n\n return html`\n <div\n class=\"file-upload__file-list\"\n part=\"file-list\"\n role=\"list\"\n aria-label=\"Selected files\"\n >\n ${this.files.map(\n (fileInfo) => html`\n <div\n class=\"file-upload__file-item\"\n part=\"file-item\"\n role=\"listitem\"\n >\n ${fileInfo.previewUrl\n ? html`\n <img\n class=\"file-upload__preview\"\n src=\"${fileInfo.previewUrl}\"\n alt=\"Preview of ${fileInfo.name}\"\n />\n `\n : html`\n <div class=\"file-upload__file-icon\" aria-hidden=\"true\">\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path\n d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\n />\n <polyline points=\"14 2 14 8 20 8\" />\n </svg>\n </div>\n `}\n <div class=\"file-upload__file-info\">\n <span class=\"file-upload__file-name\" part=\"file-name\"\n >${fileInfo.name}</span\n >\n <span class=\"file-upload__file-size\" part=\"file-size\"\n >${this.formatFileSize(fileInfo.size)}</span\n >\n </div>\n <button\n type=\"button\"\n class=\"file-upload__remove-button\"\n part=\"file-remove\"\n @click=${(e: Event) => this.handleRemoveFile(e, fileInfo.id)}\n aria-label=\"Remove ${fileInfo.name}\"\n ?disabled=${this.disabled}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </div>\n `\n )}\n </div>\n `;\n }\n\n render() {\n const dropzoneClasses = {\n 'file-upload__dropzone': true,\n 'file-upload__dropzone--drag-over': this.isDragOver,\n 'file-upload__dropzone--disabled': this.disabled,\n 'file-upload__dropzone--has-files': this.files.length > 0,\n [`file-upload__dropzone--${this.variant}`]: this.variant !== 'default',\n [`file-upload__dropzone--${this.size}`]: true,\n };\n\n const acceptDescription = this.accept\n ? `Accepted file types: ${this.accept}`\n : '';\n const sizeDescription =\n this.maxSize > 0\n ? `Maximum file size: ${this.formatFileSize(this.maxSize)}`\n : '';\n\n return html`\n <div class=\"file-upload\">\n <div\n class=${classMap(dropzoneClasses)}\n part=\"dropzone\"\n role=\"button\"\n tabindex=${this.disabled ? -1 : 0}\n aria-disabled=${this.disabled}\n aria-describedby=\"file-upload-description\"\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n @dragenter=${this.handleDragEnter}\n @dragover=${this.handleDragOver}\n @dragleave=${this.handleDragLeave}\n @drop=${this.handleDrop}\n >\n <input\n type=\"file\"\n part=\"input\"\n .name=${this.name}\n .accept=${this.accept}\n ?multiple=${this.multiple}\n ?disabled=${this.disabled}\n ?required=${this.required}\n @change=${this.handleInputChange}\n aria-hidden=\"true\"\n tabindex=\"-1\"\n />\n\n ${this.renderUploadIcon()}\n\n <span class=\"file-upload__label\" part=\"label\">${this.label}</span>\n\n ${this.description\n ? html`<span class=\"file-upload__description\" part=\"description\"\n >${this.description}</span\n >`\n : nothing}\n </div>\n\n <span id=\"file-upload-description\" class=\"visually-hidden\">\n ${acceptDescription} ${sizeDescription}\n </span>\n\n ${this.renderFileList()}\n ${this.message\n ? html`<div\n class=\"file-upload__message file-upload__message--${this.variant}\"\n part=\"message\"\n >\n ${this.message}\n </div>`\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-file-upload': BpFileUpload;\n }\n}\n"],"names":["fileUploadStyles","css","BpFileUpload","LitElement","fileInfo","fileId","fileIndex","f","removedFile","event","input","relatedTarget","dataTransfer","newFiles","validFiles","file","existingFile","acceptedTypes","type","fileType","fileExtension","accepted","category","reason","bytes","units","exponent","html","nothing","e","dropzoneClasses","acceptDescription","sizeDescription","classMap","__decorateClass","property","booleanConverter","state","query","customElement"],"mappings":";;;;AAEO,MAAMA,IAAmBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"heading.js","sources":["../../source/components/heading/heading.style.ts","../../source/components/heading/heading.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const headingStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n .heading {\n margin: 0;\n padding: 0;\n color: var(--bp-color-text);\n font-family: var(--bp-font-family);\n }\n\n /* Sizes */\n .heading--xs {\n font-size: var(--bp-font-size-xs);\n line-height: 1.5;\n }\n\n .heading--sm {\n font-size: var(--bp-font-size-sm);\n line-height: 1.45;\n }\n\n .heading--md {\n font-size: var(--bp-font-size-base);\n line-height: 1.4;\n }\n\n .heading--lg {\n font-size: var(--bp-font-size-lg);\n line-height: 1.35;\n }\n\n .heading--xl {\n font-size: var(--bp-font-size-xl);\n line-height: 1.3;\n }\n\n .heading--2xl {\n font-size: var(--bp-font-size-2xl);\n line-height: 1.25;\n letter-spacing: -0.01em;\n }\n\n .heading--3xl {\n font-size: var(--bp-font-size-3xl);\n line-height: 1.2;\n letter-spacing: -0.015em;\n }\n\n .heading--4xl {\n font-size: var(--bp-font-size-4xl);\n line-height: 1.1;\n letter-spacing: -0.02em;\n }\n\n /* Font weights */\n .heading--light {\n font-weight: var(--bp-font-weight-light);\n }\n\n .heading--normal {\n font-weight: var(--bp-font-weight-normal);\n }\n\n .heading--medium {\n font-weight: var(--bp-font-weight-medium);\n }\n\n .heading--semibold {\n font-weight: var(--bp-font-weight-semibold);\n }\n\n .heading--bold {\n font-weight: var(--bp-font-weight-bold);\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { headingStyles } from './heading.style.js';\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type HeadingSize =\n | 'xs'\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | '2xl'\n | '3xl'\n | '4xl';\nexport type HeadingWeight = 'light' | 'normal' | 'medium' | 'semibold' | 'bold';\n\n/**\n * A typography component for semantic headings (h1-h6).\n *\n * @element bp-heading\n *\n * @property {HeadingLevel} level - The semantic heading level (h1-h6)\n * @property {HeadingSize} size - The visual size of the heading\n * @property {HeadingWeight} weight - The font weight of the heading\n *\n * @slot - The heading text content\n *\n * @cssprop --bp-heading-color - Custom color for the heading\n * @cssprop --bp-heading-font-family - Custom font family for the heading\n *\n * @csspart heading - The heading element (h1-h6)\n */\n@customElement('bp-heading')\nexport class BpHeading extends LitElement {\n /**\n * The semantic heading level (h1-h6).\n * Determines the actual HTML element rendered.\n */\n @property({ type: Number, reflect: true }) declare level: HeadingLevel;\n\n /**\n * The visual size of the heading.\n * Allows visual hierarchy independent of semantic level.\n * Defaults to match the level when not specified.\n */\n @property({ type: String, reflect: true }) declare size: HeadingSize;\n\n /**\n * The font weight of the heading.\n */\n @property({ type: String, reflect: true }) declare weight: HeadingWeight;\n\n static styles = [headingStyles];\n\n constructor() {\n super();\n this.level = 1;\n this.size = '4xl';\n this.weight = 'bold';\n }\n\n render() {\n const sizeClass = `heading--${this.size}`;\n const weightClass = `heading--${this.weight}`;\n\n // Using a switch to create the proper heading element\n switch (this.level) {\n case 1:\n return html`<h1\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h1>`;\n case 2:\n return html`<h2\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h2>`;\n case 3:\n return html`<h3\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h3>`;\n case 4:\n return html`<h4\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h4>`;\n case 5:\n return html`<h5\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h5>`;\n case 6:\n return html`<h6\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h6>`;\n default:\n return html`<h1\n part=\"heading\"\n class=\"heading ${sizeClass} ${weightClass}\"\n >\n <slot></slot>\n </h1>`;\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-heading': BpHeading;\n }\n}\n"],"names":["headingStyles","css","BpHeading","LitElement","sizeClass","weightClass","html","__decorateClass","property","customElement"],"mappings":";;AAEO,MAAMA,IAAgBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;AC+BtB,IAAMC,IAAN,cAAwBC,EAAW;AAAA,EAqBxC,cAAc;AACZ,UAAA,GACA,KAAK,QAAQ,GACb,KAAK,OAAO,OACZ,KAAK,SAAS;AAAA,EAChB;AAAA,EAEA,SAAS;AACP,UAAMC,IAAY,YAAY,KAAK,IAAI,IACjCC,IAAc,YAAY,KAAK,MAAM;AAG3C,YAAQ,KAAK,OAAA;AAAA,MACX,KAAK;AACH,eAAOC;AAAA;AAAA,2BAEYF,CAAS,IAAIC,CAAW;AAAA;AAAA;AAAA;AAAA,MAI7C,KAAK;AACH,eAAOC;AAAA;AAAA,2BAEYF,CAAS,IAAIC,CAAW;AAAA;AAAA;AAAA;AAAA,MAI7C,KAAK;AACH,eAAOC;AAAA;AAAA,2BAEYF,CAAS,IAAIC,CAAW;AAAA;AAAA;AAAA;AAAA,MAI7C,KAAK;AACH,eAAOC;AAAA;AAAA,2BAEYF,CAAS,IAAIC,CAAW;AAAA;AAAA;AAAA;AAAA,MAI7C,KAAK;AACH,eAAOC;AAAA;AAAA,2BAEYF,CAAS,IAAIC,CAAW;AAAA;AAAA;AAAA;AAAA,MAI7C,KAAK;AACH,eAAOC;AAAA;AAAA,2BAEYF,CAAS,IAAIC,CAAW;AAAA;AAAA;AAAA;AAAA,MAI7C;AACE,eAAOC;AAAA;AAAA,2BAEYF,CAAS,IAAIC,CAAW;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,EAKjD;AACF;AArFaH,EAmBJ,SAAS,CAACF,CAAa;AAdqBO,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAL9BN,EAKwC,WAAA,SAAA,CAAA;AAOAK,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAZ9BN,EAYwC,WAAA,QAAA,CAAA;AAKAK,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAjB9BN,EAiBwC,WAAA,UAAA,CAAA;AAjBxCA,IAANK,EAAA;AAAA,EADNE,EAAc,YAAY;AAAA,GACdP,CAAA;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icon.js","sources":["../../source/components/icon/icon.style.ts","../../source/components/icon/icon-registry.ts","../../source/components/icon/icon.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const iconStyles = css`\n /* Base styles */\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n }\n\n :host([size='full']) {\n display: flex;\n width: 100%;\n height: 100%;\n }\n\n .icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n color: var(--bp-color-text);\n }\n\n .icon svg,\n .icon ::slotted(svg) {\n width: 100%;\n height: 100%;\n display: block;\n fill: currentColor;\n }\n\n /* Color variants */\n .icon--default {\n color: var(--bp-color-text);\n }\n\n .icon--primary {\n color: var(--bp-color-primary);\n }\n\n .icon--success {\n color: var(--bp-color-success);\n }\n\n .icon--warning {\n color: var(--bp-color-warning);\n }\n\n .icon--error {\n color: var(--bp-color-error);\n }\n\n .icon--muted {\n color: var(--bp-color-text-muted);\n }\n\n /* Size variants */\n .icon--xs {\n width: var(--bp-icon-size-xs);\n height: var(--bp-icon-size-xs);\n }\n\n .icon--sm {\n width: var(--bp-icon-size-sm);\n height: var(--bp-icon-size-sm);\n }\n\n .icon--md {\n width: var(--bp-icon-size-md);\n height: var(--bp-icon-size-md);\n }\n\n .icon--lg {\n width: var(--bp-icon-size-lg);\n height: var(--bp-icon-size-lg);\n }\n\n .icon--xl {\n width: var(--bp-icon-size-xl);\n height: var(--bp-icon-size-xl);\n }\n\n .icon--2xl {\n width: var(--bp-icon-size-2xl);\n height: var(--bp-icon-size-2xl);\n }\n\n .icon--3xl {\n width: var(--bp-icon-size-3xl);\n height: var(--bp-icon-size-3xl);\n }\n\n .icon--4xl {\n width: var(--bp-icon-size-4xl);\n height: var(--bp-icon-size-4xl);\n }\n\n .icon--full {\n width: 100%;\n height: 100%;\n }\n`;\n","/**\r\n * Shared icon registry — runtime singleton.\r\n *\r\n * Serves two roles:\r\n * 1. **Lazy-load cache** — When `<bp-icon name=\"...\">` dynamically imports\r\n * an icon entry module, the SVG is stored here so subsequent renders of\r\n * the same icon name are instant.\r\n * 2. **Bulk registration** — `all.ts` imports every icon entry and calls\r\n * `registerIcon()` for each one (used by Storybook / dev tools).\r\n *\r\n * Internal Blueprint components bypass the registry entirely. They import\r\n * SVG data as value bindings and pass them directly via the `svg` property,\r\n * which guarantees the data survives bundler tree-shaking.\r\n */\r\n\r\nconst registry = new Map<string, string>();\r\n\r\n/**\r\n * Register an icon's SVG content by name.\r\n * Duplicate registrations silently overwrite (idempotent).\r\n */\r\nexport function registerIcon(name: string, svg: string): void {\r\n registry.set(name, svg);\r\n}\r\n\r\n/**\r\n * Retrieve the raw SVG string for a registered icon.\r\n * Returns undefined if the icon has not been registered.\r\n */\r\nexport function getIconSvg(name: string): string | undefined {\r\n return registry.get(name);\r\n}\r\n\r\n\r\n","import { LitElement, html, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\nimport { iconStyles } from './icon.style.js';\nimport { getIconSvg, registerIcon } from './icon-registry.js';\nimport type { IconName } from './icons/icon-name.generated.js';\n\nexport type { IconName } from './icons/icon-name.generated.js';\n\nexport type IconSize =\n | 'xs'\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | '2xl'\n | '3xl'\n | '4xl'\n | 'full';\nexport type IconColor =\n | 'default'\n | 'primary'\n | 'success'\n | 'warning'\n | 'error'\n | 'muted';\n\n/**\n * Icon component - SVG icon wrapper with size variants\n *\n * Supports both named icons from the System UI Icons library and custom SVG content via slot.\n *\n * @slot - Custom SVG content to display (used when `name` is not provided)\n *\n * @csspart icon - The icon container element\n *\n * @example\n * ```html\n * <!-- Using named icon from library -->\n * <bp-icon name=\"create\" size=\"md\" color=\"primary\"></bp-icon>\n *\n * <!-- Using custom SVG content -->\n * <bp-icon size=\"md\">\n * <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n * <path d=\"M12 2L2 7v10c0 5.5 3.8 10.6 10 12 6.2-1.4 10-6.5 10-12V7l-10-5z\"/>\n * </svg>\n * </bp-icon>\n * ```\n */\n@customElement('bp-icon')\nexport class BpIcon extends LitElement {\n /**\n * Name of the icon from the System UI Icons library.\n * When set (and `svg` is empty), the component lazy-loads the icon's\n * entry module at runtime and caches the SVG for subsequent renders.\n * Ignored when the `svg` property is set.\n * @type {IconName}\n */\n @property({ type: String }) declare name: IconName | '';\n\n /**\n * Raw SVG string to render directly. When set, the `name` property is\n * ignored. This is the preferred way for internal Blueprint components\n * to supply icon data because it survives bundler tree-shaking.\n * @type {string}\n */\n @property({ type: String }) declare svg: string;\n\n /**\n * Size variant of the icon\n * @type {IconSize}\n */\n @property({ type: String, reflect: true }) declare size: IconSize;\n\n /**\n * Color variant of the icon\n * @type {IconColor}\n */\n @property({ type: String }) declare color: IconColor;\n\n /**\n * ARIA label for accessibility\n * @type {string}\n */\n @property({ type: String, attribute: 'aria-label' })\n declare ariaLabel: string;\n\n /** SVG content resolved by lazy-loading an icon entry module. */\n @state() private _loadedSvg = '';\n\n /** Tracks which icon name is currently being loaded to avoid races. */\n private _loadingName = '';\n\n constructor() {\n super();\n this.name = '';\n this.svg = '';\n this.size = 'md';\n this.color = 'default';\n this.ariaLabel = '';\n }\n\n static styles = [iconStyles];\n\n willUpdate(changedProps: PropertyValues) {\n // When the name changes and no direct svg is provided, lazy-load the icon.\n if (changedProps.has('name') || changedProps.has('svg')) {\n if (this.svg) {\n // Direct svg takes priority — clear any lazy-loaded content.\n this._loadedSvg = '';\n this._loadingName = '';\n return;\n }\n\n if (this.name && changedProps.has('name')) {\n this._loadIcon(this.name);\n }\n }\n }\n\n /**\n * Lazy-load an icon entry module by name.\n *\n * First checks the sync registry cache (populated by `all.ts` or a\n * previous load). If the icon isn't cached, dynamically imports the\n * generated resolver module which contains static `import()` paths for\n * every icon. Static paths let the consumer's bundler (Vite, Rollup,\n * esbuild) analyse and rewrite them at build time — unlike computed\n * URLs which break when the bundler reorganises the file layout.\n */\n private async _loadIcon(name: string) {\n this._loadingName = name;\n\n // Fast path: icon already in the registry (e.g. tests import all.ts).\n const cached = getIconSvg(name);\n if (cached) {\n this._loadedSvg = cached;\n return;\n }\n\n try {\n const { loadIconByName } = await import(\n './icons/resolver.generated.js'\n );\n const svg = await loadIconByName(name);\n\n if (svg && this._loadingName === name) {\n registerIcon(name, svg); // Cache for next time.\n this._loadedSvg = svg;\n }\n } catch {\n if (this._loadingName === name) {\n this._loadedSvg = '';\n }\n }\n }\n\n render() {\n const classes = ['icon', `icon--${this.size}`, `icon--${this.color}`].join(\n ' '\n );\n\n // Priority: svg property → lazy-loaded → slot fallback\n const svgContent = this.svg || this._loadedSvg || null;\n\n return html`\n <span\n class=${classes}\n part=\"icon\"\n role=${this.ariaLabel ? 'img' : 'presentation'}\n aria-label=${ifDefined(this.ariaLabel || undefined)}\n >\n ${svgContent ? html`${unsafeHTML(svgContent)}` : html`<slot></slot>`}\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-icon': BpIcon;\n }\n}\n"],"names":["iconStyles","css","registry","registerIcon","name","svg","getIconSvg","BpIcon","LitElement","changedProps","cached","loadIconByName","classes","svgContent","html","ifDefined","unsafeHTML","__decorateClass","property","state","customElement"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sources":["../../source/components/input/input.style.ts","../../source/components/input/input.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const inputStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n .input-wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--bp-spacing-xs);\n }\n\n .input-label {\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-sm);\n font-weight: var(--bp-font-weight-medium);\n color: var(--bp-color-text);\n line-height: var(--bp-line-height-normal);\n }\n\n .input-required {\n color: var(--bp-color-error);\n margin-left: var(--bp-spacing-xs);\n }\n\n .input {\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-base);\n line-height: var(--bp-line-height-normal);\n color: var(--bp-color-text);\n background-color: var(--bp-color-background);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n box-shadow: inset 0 1px 2px oklch(0 0 0 / 0.05);\n transition:\n border-color var(--bp-transition-fast),\n box-shadow var(--bp-transition-fast);\n width: 100%;\n box-sizing: border-box;\n }\n\n .input::placeholder {\n color: var(--bp-color-text-muted);\n opacity: var(--bp-opacity-subtle);\n }\n\n /* Variants */\n .input--default {\n border-color: var(--bp-color-border);\n }\n\n .input--success {\n border-color: var(--bp-color-success);\n }\n\n .input--error {\n border-color: var(--bp-color-error);\n }\n\n .input--warning {\n border-color: var(--bp-color-warning);\n }\n\n .input--info {\n border-color: var(--bp-color-info);\n }\n\n /* Sizes */\n .input--sm {\n font-size: var(--bp-font-size-sm);\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\n }\n\n .input--md {\n font-size: var(--bp-font-size-base);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n }\n\n .input--lg {\n font-size: var(--bp-font-size-lg);\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\n }\n\n /* States */\n .input:hover:not(:disabled):not(:focus) {\n border-color: var(--bp-color-border-strong);\n }\n\n .input:focus {\n outline: none;\n border-color: var(--bp-color-focus);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-focus);\n }\n\n .input:focus-visible {\n outline: none;\n border-color: var(--bp-color-focus);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-focus);\n }\n\n .input:disabled {\n opacity: var(--bp-opacity-disabled);\n cursor: not-allowed;\n background-color: var(--bp-color-surface-subdued);\n }\n\n .input:read-only {\n background-color: var(--bp-color-surface);\n cursor: default;\n }\n\n /* Variant-specific focus states */\n .input--success:focus,\n .input--success:focus-visible {\n border-color: var(--bp-color-success);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-success);\n }\n\n .input--error:focus,\n .input--error:focus-visible {\n border-color: var(--bp-color-error);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-error);\n }\n\n .input--warning:focus,\n .input--warning:focus-visible {\n border-color: var(--bp-color-warning);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-warning);\n }\n\n .input--info:focus,\n .input--info:focus-visible {\n border-color: var(--bp-color-info);\n box-shadow: 0 0 0 var(--bp-focus-offset) var(--bp-color-info);\n }\n\n /* Messages */\n .input-message {\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-sm);\n line-height: var(--bp-line-height-normal);\n color: var(--bp-color-text-muted);\n }\n\n .input-message--error {\n color: var(--bp-color-error);\n }\n\n /* iOS zoom prevention: ensure 16px minimum on touch devices */\n @media (max-width: 768px) {\n .input--sm {\n font-size: 16px;\n }\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { inputStyles } from './input.style.js';\nimport { debounce } from '../../utilities/debounce.js';\n\nexport type InputVariant = 'default' | 'success' | 'error' | 'warning' | 'info';\nexport type InputSize = 'sm' | 'md' | 'lg';\nexport type InputType =\n | 'text'\n | 'email'\n | 'password'\n | 'number'\n | 'tel'\n | 'url'\n | 'search';\n\nexport type InputModeType =\n | 'none'\n | 'text'\n | 'tel'\n | 'url'\n | 'email'\n | 'numeric'\n | 'decimal'\n | 'search';\n\nexport type AutocompleteType =\n | 'on'\n | 'off'\n | 'name'\n | 'email'\n | 'username'\n | 'new-password'\n | 'current-password'\n | 'tel'\n | 'url'\n | 'street-address'\n | 'address-line1'\n | 'address-line2'\n | 'address-line3'\n | 'address-level1'\n | 'address-level2'\n | 'address-level3'\n | 'address-level4'\n | 'country'\n | 'country-name'\n | 'postal-code'\n | 'cc-name'\n | 'cc-given-name'\n | 'cc-additional-name'\n | 'cc-family-name'\n | 'cc-number'\n | 'cc-exp'\n | 'cc-exp-month'\n | 'cc-exp-year'\n | 'cc-csc'\n | 'cc-type'\n | 'transaction-currency'\n | 'transaction-amount'\n | 'language'\n | 'bday'\n | 'bday-day'\n | 'bday-month'\n | 'bday-year'\n | 'sex'\n | 'tel-country-code'\n | 'tel-national'\n | 'tel-area-code'\n | 'tel-local'\n | 'tel-extension'\n | 'organization'\n | 'organization-title';\n\n@customElement('bp-input')\nexport class BpInput extends LitElement {\n @property({ type: String, reflect: true }) variant: InputVariant = 'default';\n @property({ type: String, reflect: true }) size: InputSize = 'md';\n @property({ type: String, reflect: true }) type: InputType = 'text';\n @property({ type: String, reflect: true }) value: string = '';\n @property({ type: String, reflect: true }) placeholder?: string;\n @property({ type: String, reflect: true }) label?: string;\n @property({ type: String, reflect: true }) helperText?: string;\n @property({ type: String, reflect: true }) errorMessage?: string;\n @property({ type: Boolean, reflect: true }) disabled: boolean = false;\n @property({ type: Boolean, reflect: true }) required: boolean = false;\n @property({ type: Boolean, reflect: true }) readonly: boolean = false;\n @property({ type: String, reflect: true }) name?: string;\n @property({ type: String, reflect: true }) autocomplete?: AutocompleteType;\n @property({ type: Number, reflect: true }) minlength?: number;\n @property({ type: Number, reflect: true }) maxlength?: number;\n @property({ type: String, reflect: true }) pattern?: string;\n @property({ type: Number, reflect: true }) step?: number;\n @property({ type: Number, reflect: true }) min?: number;\n @property({ type: Number, reflect: true }) max?: number;\n @property({ type: String, reflect: true }) inputmode?: InputModeType;\n\n @query('input') private inputElement?: HTMLInputElement;\n\n private debouncedDispatchInput = debounce(\n (value: string, originalEvent: InputEvent) => {\n this.dispatchEvent(\n new CustomEvent('bp-input', {\n detail: { value, originalEvent },\n bubbles: true,\n composed: true,\n })\n );\n },\n 150\n );\n\n static styles = [inputStyles];\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.debouncedDispatchInput.cancel();\n }\n\n private handleInput(e: InputEvent) {\n const target = e.target as HTMLInputElement;\n this.value = target.value;\n this.debouncedDispatchInput(this.value, e);\n }\n\n private handleChange(e: Event) {\n const target = e.target as HTMLInputElement;\n this.value = target.value;\n\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: { value: this.value, originalEvent: e },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private handleFocus(e: FocusEvent) {\n this.dispatchEvent(\n new CustomEvent('bp-focus', {\n detail: { originalEvent: e },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private handleBlur(e: FocusEvent) {\n this.debouncedDispatchInput.flush();\n this.dispatchEvent(\n new CustomEvent('bp-blur', {\n detail: { originalEvent: e },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /**\n * Focuses the input element\n */\n public focus() {\n this.inputElement?.focus();\n }\n\n /**\n * Blurs the input element\n */\n public blur() {\n this.inputElement?.blur();\n }\n\n /**\n * Selects the text in the input\n */\n public select() {\n this.inputElement?.select();\n }\n\n private get messageId(): string {\n const showError = this.variant === 'error' && this.errorMessage;\n const showHelper = this.helperText && !showError;\n if (showError) return 'error-message';\n if (showHelper) return 'helper-text';\n return '';\n }\n\n render() {\n const showError = this.variant === 'error' && this.errorMessage;\n const showHelper = this.helperText && !showError;\n\n return html`\n <div class=\"input-wrapper\">\n ${this.label\n ? html`\n <label class=\"input-label\" for=\"input\">\n ${this.label}\n ${this.required\n ? html`<span class=\"input-required\">*</span>`\n : ''}\n </label>\n `\n : ''}\n\n <input\n part=\"input\"\n id=\"input\"\n class=\"input input--${this.variant} input--${this.size}\"\n type=${this.type}\n .value=${live(this.value)}\n placeholder=${ifDefined(this.placeholder)}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readonly}\n name=${ifDefined(this.name)}\n autocomplete=${ifDefined(this.autocomplete)}\n minlength=${ifDefined(this.minlength)}\n maxlength=${ifDefined(this.maxlength)}\n pattern=${ifDefined(this.pattern)}\n step=${ifDefined(this.step)}\n min=${ifDefined(this.min)}\n max=${ifDefined(this.max)}\n inputmode=${ifDefined(this.inputmode)}\n aria-invalid=${this.variant === 'error' ? 'true' : 'false'}\n aria-describedby=${this.messageId || nothing}\n @input=${this.handleInput}\n @change=${this.handleChange}\n @focus=${this.handleFocus}\n @blur=${this.handleBlur}\n />\n\n ${showError\n ? html`\n <div\n id=\"error-message\"\n class=\"input-message input-message--error\"\n role=\"alert\"\n >\n ${this.errorMessage}\n </div>\n `\n : ''}\n ${showHelper\n ? html`<div id=\"helper-text\" class=\"input-message\">\n ${this.helperText}\n </div>`\n : ''}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-input': BpInput;\n }\n}\n"],"names":["inputStyles","css","BpInput","LitElement","debounce","value","originalEvent","e","target","showError","showHelper","html","live","ifDefined","nothing","__decorateClass","property","query","customElement"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sources":["../../source/components/link/link.style.ts","../../source/components/link/link.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const linkStyles = css`\n /* Base styles */\n :host {\n display: inline;\n }\n\n .link {\n display: inline;\n font-family: var(--bp-font-family);\n font-size: inherit;\n font-weight: inherit;\n color: var(--bp-color-primary);\n text-decoration: none;\n cursor: pointer;\n transition: color var(--bp-transition-fast);\n }\n\n .link:hover {\n color: var(--bp-color-primary-hover);\n }\n\n .link:active {\n color: var(--bp-color-primary-active);\n transform: translateY(var(--bp-spacing-0-5));\n }\n\n .link:visited {\n color: var(--bp-color-primary);\n }\n\n .link:visited:hover {\n color: var(--bp-color-primary-hover);\n }\n\n .link:focus-visible {\n outline: var(--bp-focus-width) solid var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n border-radius: var(--bp-border-radius-sm);\n }\n\n .link[aria-disabled='true'] {\n color: var(--bp-color-text-muted);\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n /* Variants */\n .link--primary {\n font-weight: var(--bp-font-weight-semibold);\n }\n\n .link--muted {\n color: var(--bp-color-text-muted);\n }\n\n .link--muted:hover {\n color: var(--bp-color-text);\n }\n\n .link--muted:active {\n color: var(--bp-color-text);\n }\n\n .link--muted:visited {\n color: var(--bp-color-text-muted);\n }\n\n /* Underline variants */\n .link--underline-always {\n text-decoration: underline;\n }\n\n .link--underline-hover {\n text-decoration: underline;\n text-decoration-color: transparent;\n transition: text-decoration-color var(--bp-transition-fast);\n }\n\n .link--underline-hover:hover {\n text-decoration-color: currentColor;\n }\n\n .link--underline-none {\n text-decoration: none;\n }\n\n .link--underline-none:hover {\n text-decoration: none;\n }\n\n /* Size variants */\n .link--size-sm {\n font-size: var(--bp-font-size-sm);\n }\n\n .link--size-md {\n font-size: inherit;\n }\n\n .link--size-lg {\n font-size: var(--bp-font-size-lg);\n }\n\n /* External link indicator */\n .link[target='_blank']::after {\n content: '↗';\n margin-left: var(--bp-spacing-1);\n vertical-align: super;\n line-height: 0;\n opacity: 0.75;\n transition: opacity var(--bp-transition-fast);\n }\n\n .link[target='_blank']:hover::after {\n opacity: 1;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { linkStyles } from './link.style.js';\n\nexport type LinkVariant = 'default' | 'primary' | 'muted';\nexport type LinkUnderline = 'always' | 'hover' | 'none';\nexport type LinkSize = 'sm' | 'md' | 'lg';\n\n/**\n * A link component that provides styled anchor elements with variants.\n * Supports internal and external links with accessibility features.\n */\n@customElement('bp-link')\nexport class BpLink extends LitElement {\n /**\n * The URL the link points to.\n * @type {string}\n * @default ''\n */\n @property({ type: String, reflect: true }) declare href: string;\n\n /**\n * Where to display the linked URL (same semantics as anchor target).\n * @type {string}\n * @default ''\n */\n @property({ type: String, reflect: true }) declare target: string;\n\n /**\n * Relationship of the linked URL (same semantics as anchor rel).\n * @type {string}\n * @default ''\n */\n @property({ type: String, reflect: true }) declare rel: string;\n\n /**\n * Visual variant of the link.\n * @type {'default' | 'primary' | 'muted'}\n * @default 'default'\n */\n @property({ type: String, reflect: true }) declare variant: LinkVariant;\n\n /**\n * Underline style for the link.\n * @type {'always' | 'hover' | 'none'}\n * @default 'hover'\n */\n @property({ type: String, reflect: true }) declare underline: LinkUnderline;\n\n /**\n * Size of the link text.\n * @type {'sm' | 'md' | 'lg'}\n * @default 'md'\n */\n @property({ type: String, reflect: true }) declare size: LinkSize;\n\n /**\n * Whether the link is disabled.\n * @type {boolean}\n * @default false\n */\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\n\n static styles = [linkStyles];\n\n constructor() {\n super();\n this.href = '';\n this.target = '';\n this.rel = '';\n this.variant = 'default';\n this.underline = 'hover';\n this.size = 'md';\n this.disabled = false;\n }\n\n private handleClick(event: MouseEvent) {\n if (this.disabled) {\n event.preventDefault();\n }\n }\n\n render() {\n const isExternal = this.target === '_blank';\n const computedRel =\n this.rel || (isExternal ? 'noopener noreferrer' : undefined);\n\n return html`\n <a\n class=\"link link--${this.variant} link--underline-${this\n .underline} link--size-${this.size}\"\n href=${ifDefined(this.disabled ? undefined : this.href || undefined)}\n target=${ifDefined(this.target || undefined)}\n rel=${ifDefined(computedRel)}\n aria-disabled=${this.disabled ? 'true' : 'false'}\n @click=${this.handleClick}\n part=\"link\"\n >\n <slot></slot>\n </a>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-link': BpLink;\n }\n}\n"],"names":["linkStyles","css","BpLink","LitElement","event","isExternal","computedRel","html","ifDefined","__decorateClass","property","customElement"],"mappings":";;;AAEO,MAAMA,IAAaC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACYnB,IAAMC,IAAN,cAAqBC,EAAW;AAAA,EAoDrC,cAAc;AACZ,UAAA,GACA,KAAK,OAAO,IACZ,KAAK,SAAS,IACd,KAAK,MAAM,IACX,KAAK,UAAU,WACf,KAAK,YAAY,SACjB,KAAK,OAAO,MACZ,KAAK,WAAW;AAAA,EAClB;AAAA,EAEQ,YAAYC,GAAmB;AACrC,IAAI,KAAK,YACPA,EAAM,eAAA;AAAA,EAEV;AAAA,EAEA,SAAS;AACP,UAAMC,IAAa,KAAK,WAAW,UAC7BC,IACJ,KAAK,QAAQD,IAAa,wBAAwB;AAEpD,WAAOE;AAAA;AAAA,4BAEiB,KAAK,OAAO,oBAAoB,KACjD,SAAS,eAAe,KAAK,IAAI;AAAA,eAC7BC,EAAU,KAAK,WAAW,SAAY,KAAK,QAAQ,MAAS,CAAC;AAAA,iBAC3DA,EAAU,KAAK,UAAU,MAAS,CAAC;AAAA,cACtCA,EAAUF,CAAW,CAAC;AAAA,wBACZ,KAAK,WAAW,SAAS,OAAO;AAAA,iBACvC,KAAK,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/B;AACF;AAzFaJ,EAkDJ,SAAS,CAACF,CAAU;AA5CwBS,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAN9BR,EAMwC,WAAA,QAAA,CAAA;AAOAO,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAb9BR,EAawC,WAAA,UAAA,CAAA;AAOAO,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GApB9BR,EAoBwC,WAAA,OAAA,CAAA;AAOAO,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA3B9BR,EA2BwC,WAAA,WAAA,CAAA;AAOAO,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAlC9BR,EAkCwC,WAAA,aAAA,CAAA;AAOAO,EAAA;AAAA,EAAlDC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAzC9BR,EAyCwC,WAAA,QAAA,CAAA;AAOCO,EAAA;AAAA,EAAnDC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAhD/BR,EAgDyC,WAAA,YAAA,CAAA;AAhDzCA,IAANO,EAAA;AAAA,EADNE,EAAc,SAAS;AAAA,GACXT,CAAA;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sources":["../../source/components/menu/menu.style.ts","../../source/components/menu/menu.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const menuStyles = css`\n /* Base styles - Menu Container */\n :host {\n display: block;\n }\n\n .menu {\n display: flex;\n flex-direction: column;\n min-width: 200px;\n padding: var(--bp-spacing-xs) 0;\n margin: 0;\n background-color: var(--bp-color-surface-elevated);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n box-shadow: var(--bp-shadow-lg);\n font-family: var(--bp-font-sans);\n list-style: none;\n outline: none;\n }\n\n /* Menu Sizes */\n .menu--sm {\n min-width: 160px;\n }\n\n .menu--lg {\n min-width: 280px;\n }\n\n /* Menu Item Base */\n .menu-item {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--bp-spacing-sm);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n margin: 0 var(--bp-spacing-xs);\n min-height: 40px;\n border-radius: var(--bp-border-radius-sm);\n background-color: transparent;\n color: var(--bp-color-text);\n font-family: var(--bp-font-sans);\n font-size: var(--bp-font-size-base);\n font-weight: var(--bp-font-weight-normal);\n line-height: var(--bp-line-height-normal);\n text-decoration: none;\n cursor: pointer;\n transition:\n background-color var(--bp-transition-fast),\n transform var(--bp-transition-fast);\n user-select: none;\n outline: none;\n }\n\n /* Menu Item Sizes */\n .menu-item--sm {\n padding: var(--bp-spacing-sm) var(--bp-spacing-sm);\n min-height: 36px;\n font-size: var(--bp-font-size-sm);\n }\n\n .menu-item--lg {\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\n min-height: 48px;\n font-size: var(--bp-font-size-lg);\n }\n\n /* Menu Item States */\n .menu-item:hover:not(.menu-item--disabled) {\n background-color: var(--bp-color-surface);\n }\n\n .menu-item:focus-visible:not(.menu-item--disabled) {\n background-color: var(--bp-color-surface);\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-primary);\n outline-offset: var(--bp-focus-offset);\n }\n\n .menu-item:active:not(.menu-item--disabled) {\n background-color: var(--bp-color-surface);\n transform: scale(0.98);\n }\n\n .menu-item--selected {\n background-color: var(--bp-color-surface);\n font-weight: var(--bp-font-weight-medium);\n }\n\n .menu-item--selected::before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 3px;\n background-color: var(--bp-color-primary);\n border-radius: 0 var(--bp-border-radius-sm) var(--bp-border-radius-sm) 0;\n }\n\n .menu-item--disabled {\n color: var(--bp-color-text-muted);\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n /* Menu Item Parts */\n .menu-item__prefix {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n }\n\n .menu-item__prefix:empty {\n display: none;\n }\n\n .menu-item__label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .menu-item__suffix {\n display: inline-flex;\n align-items: center;\n gap: var(--bp-spacing-sm);\n flex-shrink: 0;\n margin-left: auto;\n }\n\n .menu-item__suffix:empty {\n display: none;\n }\n\n .menu-item__shortcut {\n color: var(--bp-color-text-muted);\n font-size: var(--bp-font-size-sm);\n font-family: var(--bp-font-mono);\n padding: 2px var(--bp-spacing-xs);\n background-color: var(--bp-color-surface);\n border-radius: var(--bp-border-radius-sm);\n border: var(--bp-border-width) solid var(--bp-color-border);\n }\n\n .menu-item__arrow {\n color: var(--bp-color-text-muted);\n font-size: var(--bp-font-size-lg);\n line-height: 1;\n }\n\n /* Menu Divider */\n .menu-divider {\n height: var(--bp-border-width);\n margin: var(--bp-spacing-sm) var(--bp-spacing-sm);\n background-color: var(--bp-color-border);\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { menuStyles } from './menu.style.js';\n\nexport type MenuSize = 'sm' | 'md' | 'lg';\n\n/**\n * A menu container component for displaying a list of actions or options.\n *\n * @fires bp-menu-select - Dispatched when a menu item is selected\n *\n * @slot - Menu items (bp-menu-item, bp-menu-divider)\n *\n * @csspart container - The menu container element\n */\n@customElement('bp-menu')\nexport class BpMenu extends LitElement {\n /** Size variant for all menu items */\n @property({ type: String }) declare size: MenuSize;\n\n /** Current focused item index for keyboard navigation */\n @state() private focusedIndex = -1;\n\n static styles = [menuStyles];\n\n constructor() {\n super();\n this.size = 'md';\n }\n\n private handleFocusIn = (event: FocusEvent) => {\n const target = event.target as BpMenuItem;\n const items = this.menuItems;\n this.focusedIndex = items.indexOf(target);\n };\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('focusin', this.handleFocusIn);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('focusin', this.handleFocusIn);\n }\n\n /**\n * Gets all non-divider menu items from the default slot.\n * @returns Array of bp-menu-item elements\n */\n private get menuItems(): BpMenuItem[] {\n const slot = this.shadowRoot?.querySelector('slot');\n if (!slot) return [];\n return slot\n .assignedElements()\n .filter((el): el is BpMenuItem => el.tagName === 'BP-MENU-ITEM');\n }\n\n /**\n * Handles keyboard navigation within the menu.\n * Supports ArrowDown, ArrowUp, Home, and End keys.\n */\n private handleKeyDown(event: KeyboardEvent) {\n const items = this.menuItems.filter((item) => !item.disabled);\n if (items.length === 0) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.focusedIndex = Math.min(this.focusedIndex + 1, items.length - 1);\n items[this.focusedIndex]?.focus();\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0);\n items[this.focusedIndex]?.focus();\n break;\n case 'Home':\n event.preventDefault();\n this.focusedIndex = 0;\n items[0]?.focus();\n break;\n case 'End':\n event.preventDefault();\n this.focusedIndex = items.length - 1;\n items[items.length - 1]?.focus();\n break;\n }\n }\n\n private handleSlotChange() {\n // Update size on all menu items\n this.menuItems.forEach((item) => {\n item.size = this.size;\n });\n }\n\n render() {\n return html`\n <div\n class=\"menu menu--${this.size}\"\n part=\"container\"\n role=\"menu\"\n @keydown=${this.handleKeyDown}\n >\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n `;\n }\n}\n\n/**\n * A menu item component for use within bp-menu.\n *\n * @fires bp-select - Dispatched when the item is selected\n *\n * @slot - Item label content\n * @slot prefix - Content before the label (typically an icon)\n * @slot suffix - Content after the label (typically a shortcut or arrow)\n *\n * @csspart base - The menu item container\n * @csspart prefix - The prefix slot container\n * @csspart label - The label container\n * @csspart suffix - The suffix slot container\n */\n@customElement('bp-menu-item')\nexport class BpMenuItem extends LitElement {\n /** The value associated with this menu item */\n @property({ type: String }) declare value: string;\n\n /** Whether the item is disabled */\n @property({ type: Boolean }) declare disabled: boolean;\n\n /** Whether the item is selected/active */\n @property({ type: Boolean }) declare selected: boolean;\n\n /** Whether the item has a submenu */\n @property({ type: Boolean, attribute: 'has-submenu' })\n declare hasSubmenu: boolean;\n\n /** Size variant (inherited from parent menu) */\n @property({ type: String }) declare size: MenuSize;\n\n /** Keyboard shortcut hint to display */\n @property({ type: String }) declare shortcut: string;\n\n static styles = [menuStyles];\n\n constructor() {\n super();\n this.value = '';\n this.disabled = false;\n this.selected = false;\n this.hasSubmenu = false;\n this.size = 'md';\n this.shortcut = '';\n }\n\n focus() {\n const button = this.shadowRoot?.querySelector('.menu-item') as HTMLElement;\n button?.focus();\n }\n\n private handleActivate() {\n if (this.disabled) return;\n\n this.dispatchEvent(\n new CustomEvent('bp-menu-select', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private handleClick(event: MouseEvent) {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n this.handleActivate();\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.handleActivate();\n }\n }\n\n render() {\n return html`\n <div\n class=\"menu-item menu-item--${this.size} ${this.disabled\n ? 'menu-item--disabled'\n : ''} ${this.selected ? 'menu-item--selected' : ''}\"\n part=\"base\"\n role=\"menuitem\"\n tabindex=${this.disabled ? -1 : 0}\n aria-disabled=${this.disabled}\n aria-current=${this.selected ? 'page' : 'false'}\n @click=${this.handleClick}\n @keydown=${this.handleKeyDown}\n >\n <span class=\"menu-item__prefix\" part=\"prefix\">\n <slot name=\"prefix\"></slot>\n </span>\n <span class=\"menu-item__label\" part=\"label\">\n <slot></slot>\n </span>\n <span class=\"menu-item__suffix\" part=\"suffix\">\n ${this.shortcut\n ? html`<span class=\"menu-item__shortcut\">${this.shortcut}</span>`\n : nothing}\n <slot name=\"suffix\"></slot>\n ${this.hasSubmenu\n ? html`<span class=\"menu-item__arrow\">›</span>`\n : nothing}\n </span>\n </div>\n `;\n }\n}\n\n/**\n * A divider for visually separating menu items.\n *\n * @csspart divider - The divider element\n */\n@customElement('bp-menu-divider')\nexport class BpMenuDivider extends LitElement {\n static styles = [menuStyles];\n\n render() {\n return html`<div\n class=\"menu-divider\"\n part=\"divider\"\n role=\"separator\"\n ></div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-menu': BpMenu;\n 'bp-menu-item': BpMenuItem;\n 'bp-menu-divider': BpMenuDivider;\n }\n}\n"],"names":["menuStyles","css","BpMenu","LitElement","event","target","items","slot","el","item","html","__decorateClass","property","state","customElement","BpMenuItem","nothing","BpMenuDivider"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sources":["../../source/components/modal/modal.style.ts","../../source/components/modal/modal.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const modalStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n :host([open]) {\n display: block;\n }\n\n :host(:not([open])) {\n display: none;\n }\n\n /* Backdrop */\n .modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: var(--bp-z-modal);\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--bp-color-backdrop);\n animation: fadeIn var(--bp-duration-fast) var(--bp-ease-out);\n }\n\n @keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n }\n\n @keyframes slideUp {\n from {\n transform: translateY(var(--bp-spacing-8));\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n\n /* Dialog */\n .modal-dialog {\n position: relative;\n background-color: var(--bp-color-surface-elevated);\n border-radius: var(--bp-border-radius-lg);\n box-shadow: var(--bp-shadow-xl);\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: slideUp var(--bp-duration-normal) var(--bp-ease-out);\n outline: none;\n }\n\n /* Header */\n .modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--bp-spacing-md);\n padding: var(--bp-spacing-6);\n border-bottom: var(--bp-border-width) solid var(--bp-color-border);\n font-family: var(--bp-font-family);\n }\n\n ::slotted([slot='header']) {\n flex: 1;\n font-size: var(--bp-font-size-xl);\n font-weight: var(--bp-font-weight-semibold);\n color: var(--bp-color-text-strong);\n line-height: var(--bp-line-height-tight);\n margin: 0;\n }\n\n /* Close button */\n .modal-close {\n appearance: none;\n background: transparent;\n border: none;\n padding: var(--bp-spacing-2);\n cursor: pointer;\n color: var(--bp-color-text-muted);\n border-radius: var(--bp-border-radius-md);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all var(--bp-transition-fast);\n flex-shrink: 0;\n }\n\n .modal-close:hover {\n background-color: var(--bp-color-surface);\n color: var(--bp-color-text);\n }\n\n .modal-close:focus-visible {\n outline: var(--bp-focus-ring);\n outline-offset: var(--bp-focus-offset);\n }\n\n .modal-close svg {\n display: block;\n }\n\n /* Body */\n .modal-body {\n flex: 1;\n padding: var(--bp-spacing-6);\n overflow-y: auto;\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-base);\n line-height: var(--bp-line-height-relaxed);\n color: var(--bp-color-text);\n }\n\n /* Footer */\n .modal-footer {\n padding: var(--bp-spacing-6);\n border-top: var(--bp-border-width) solid var(--bp-color-border);\n display: flex;\n gap: var(--bp-spacing-3);\n justify-content: flex-end;\n align-items: center;\n }\n\n .modal-footer:empty {\n display: none;\n }\n\n /* Sizes */\n .modal-dialog--sm {\n width: 90%;\n max-width: calc(var(--bp-spacing-24) * 4 + var(--bp-spacing-16));\n }\n\n .modal-dialog--md {\n width: 90%;\n max-width: var(--bp-breakpoint-sm);\n }\n\n .modal-dialog--lg {\n width: 90%;\n max-width: var(--bp-breakpoint-md);\n }\n\n /* States */\n .modal-dialog:focus {\n outline: none;\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { modalStyles } from './modal.style.js';\n\nexport type ModalSize = 'sm' | 'md' | 'lg';\n\n@customElement('bp-modal')\nexport class BpModal extends LitElement {\n /** Whether the modal is currently open */\n @property({ type: Boolean, reflect: true }) declare open: boolean;\n\n /** Size variant of the modal */\n @property({ type: String, reflect: true }) declare size: ModalSize;\n\n /** ID for aria-labelledby attribute - should match header content */\n @property({ type: String, attribute: 'aria-labelledby' })\n declare ariaLabelledby: string;\n\n /** Dialog element reference for focus management */\n @query('.modal-dialog') private dialogElement!: HTMLElement;\n\n /** Store the element that had focus before modal opened */\n @state() private previouslyFocusedElement: HTMLElement | null = null;\n\n /** Track if body scroll is prevented */\n @state() private bodyScrollPrevented = false;\n\n static styles = [modalStyles];\n\n constructor() {\n super();\n this.open = false;\n this.size = 'md';\n this.ariaLabelledby = '';\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('keydown', this.handleKeyDown);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('keydown', this.handleKeyDown);\n this.restoreFocus();\n this.restoreBodyScroll();\n }\n\n updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('open')) {\n if (this.open) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n }\n }\n\n private handleOpen() {\n // Store previously focused element\n this.previouslyFocusedElement = document.activeElement as HTMLElement;\n\n // Prevent body scroll\n this.preventBodyScroll();\n\n // Set focus to dialog after it's rendered\n this.updateComplete.then(() => {\n this.setFocusToDialog();\n });\n }\n\n private handleClose() {\n this.restoreFocus();\n this.restoreBodyScroll();\n }\n\n private preventBodyScroll() {\n if (!this.bodyScrollPrevented) {\n document.body.style.overflow = 'hidden';\n this.bodyScrollPrevented = true;\n }\n }\n\n private restoreBodyScroll() {\n if (this.bodyScrollPrevented) {\n document.body.style.overflow = '';\n this.bodyScrollPrevented = false;\n }\n }\n\n private setFocusToDialog() {\n if (this.dialogElement) {\n this.dialogElement.focus();\n }\n }\n\n private restoreFocus() {\n if (this.previouslyFocusedElement) {\n this.previouslyFocusedElement.focus();\n this.previouslyFocusedElement = null;\n }\n }\n\n private handleKeyDown = (event: globalThis.KeyboardEvent) => {\n if (event.key === 'Escape' && this.open) {\n event.preventDefault();\n this.close();\n }\n\n // Trap focus within modal\n if (event.key === 'Tab' && this.open) {\n this.trapFocus(event);\n }\n };\n\n private trapFocus(event: globalThis.KeyboardEvent) {\n const focusableElements = this.getFocusableElements();\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n if (event.shiftKey) {\n // Shift + Tab\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else {\n // Tab\n if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n }\n\n private getFocusableElements(): HTMLElement[] {\n if (!this.shadowRoot) return [];\n\n const focusableSelectors = [\n 'button:not([disabled])',\n 'a[href]',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n ];\n\n const elements = this.shadowRoot.querySelectorAll(\n focusableSelectors.join(',')\n );\n return Array.from(elements) as HTMLElement[];\n }\n\n private handleBackdropClick = (event: MouseEvent) => {\n // Only close if clicking directly on backdrop (not bubbled from dialog)\n if (event.target === event.currentTarget) {\n this.close();\n }\n };\n\n private handleCloseButtonClick = () => {\n this.close();\n };\n\n private close() {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent('bp-close', {\n bubbles: true,\n composed: true,\n })\n );\n }\n\n render() {\n if (!this.open) {\n return html``;\n }\n\n const dialogClasses = {\n 'modal-dialog': true,\n [`modal-dialog--${this.size}`]: true,\n };\n\n return html`\n <div\n class=\"modal-backdrop\"\n part=\"backdrop\"\n @click=${this.handleBackdropClick}\n >\n <div\n class=${classMap(dialogClasses)}\n part=\"dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=${this.ariaLabelledby || 'modal-header'}\n tabindex=\"-1\"\n >\n <div class=\"modal-header\" part=\"header\">\n <slot name=\"header\"></slot>\n <button\n class=\"modal-close\"\n part=\"close-button\"\n type=\"button\"\n aria-label=\"Close\"\n @click=${this.handleCloseButtonClick}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n </div>\n <div class=\"modal-body\" part=\"body\">\n <slot></slot>\n </div>\n <div class=\"modal-footer\" part=\"footer\">\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-modal': BpModal;\n }\n}\n"],"names":["modalStyles","css","BpModal","LitElement","event","changedProperties","focusableElements","firstElement","lastElement","focusableSelectors","elements","html","dialogClasses","classMap","__decorateClass","property","query","state","customElement"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-select.js","sources":["../../source/components/multi-select/multi-select.style.ts","../../source/components/multi-select/multi-select.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const multiSelectStyles = css`\n /* Base styles */\n :host {\n display: block;\n font-family: var(--bp-font-family);\n }\n\n .multi-select {\n position: relative;\n width: 100%;\n }\n\n .multi-select__control {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--bp-spacing-sm);\n min-height: var(--bp-spacing-10);\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\n background-color: var(--bp-color-surface);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n cursor: pointer;\n transition: border-color var(--bp-transition-fast);\n }\n\n .multi-select__control:hover:not(\n .multi-select--disabled .multi-select__control\n ) {\n border-color: var(--bp-color-primary);\n }\n\n .multi-select__control:focus-visible {\n outline: var(--bp-focus-width) solid var(--bp-color-focus);\n outline-offset: var(--bp-focus-width);\n }\n\n .multi-select__value-container {\n display: flex;\n flex-wrap: wrap;\n gap: var(--bp-spacing-xs);\n flex: 1;\n min-width: 0;\n }\n\n .multi-select__placeholder {\n color: var(--bp-color-text-muted);\n user-select: none;\n }\n\n .multi-select__tag {\n display: inline-flex;\n align-items: center;\n gap: var(--bp-spacing-xs);\n padding: var(--bp-spacing-2xs) var(--bp-spacing-xs);\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 8%,\n transparent\n );\n color: var(--bp-color-primary);\n border: none;\n border-radius: var(--bp-border-radius-md);\n font-size: var(--bp-font-size-sm);\n max-width: 100%;\n }\n\n .multi-select__tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .multi-select__tag-remove {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--bp-spacing-4);\n height: var(--bp-spacing-4);\n padding: 0;\n background: transparent;\n border: none;\n border-radius: var(--bp-border-radius-sm);\n color: var(--bp-color-primary);\n cursor: pointer;\n font-size: var(--bp-font-size-lg);\n line-height: 1;\n transition: all var(--bp-transition-fast);\n }\n\n .multi-select__tag-remove:hover {\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 15%,\n transparent\n );\n color: var(--bp-color-primary);\n }\n\n .multi-select__tag-remove:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .multi-select__indicators {\n display: flex;\n align-items: center;\n gap: var(--bp-spacing-xs);\n flex-shrink: 0;\n }\n\n .multi-select__clear {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--bp-spacing-6);\n height: var(--bp-spacing-6);\n padding: 0;\n background: transparent;\n border: none;\n border-radius: var(--bp-border-radius-sm);\n color: var(--bp-color-text-muted);\n cursor: pointer;\n font-size: var(--bp-font-size-xl);\n line-height: 1;\n transition: all var(--bp-transition-fast);\n }\n\n .multi-select__clear:hover {\n background-color: var(--bp-color-surface-subdued);\n color: var(--bp-color-text);\n }\n\n .multi-select__clear:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .multi-select__dropdown-indicator {\n color: var(--bp-color-text-muted);\n font-size: var(--bp-font-size-xs);\n transition: transform var(--bp-transition-fast);\n user-select: none;\n }\n\n .multi-select--open .multi-select__dropdown-indicator {\n transform: rotate(180deg);\n }\n\n .multi-select__dropdown {\n position: absolute;\n top: calc(100% + var(--bp-spacing-xs));\n left: 0;\n right: 0;\n z-index: var(--bp-z-dropdown);\n background-color: var(--bp-color-surface);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n box-shadow: var(--bp-shadow-md);\n max-height: calc(var(--bp-spacing-10) * 6);\n overflow-y: auto;\n opacity: 0;\n visibility: hidden;\n transform: translateY(calc(-1 * var(--bp-spacing-md)));\n transition:\n opacity var(--bp-transition-fast),\n transform var(--bp-transition-fast),\n visibility var(--bp-transition-fast);\n contain: layout style paint;\n }\n\n .multi-select--open .multi-select__dropdown {\n opacity: 1;\n visibility: visible;\n transform: translateY(0);\n }\n\n .multi-select__options {\n list-style: none;\n margin: 0;\n padding: var(--bp-spacing-2xs);\n }\n\n .multi-select__option {\n display: flex;\n align-items: center;\n gap: var(--bp-spacing-sm);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n cursor: pointer;\n border-radius: var(--bp-border-radius-md);\n transition:\n background-color var(--bp-transition-fast),\n color var(--bp-transition-fast);\n }\n\n .multi-select__option:hover {\n background-color: var(--bp-color-surface-elevated);\n }\n\n .multi-select__option--focused {\n background-color: var(--bp-color-surface-subdued);\n outline: var(--bp-focus-width) solid var(--bp-color-primary);\n outline-offset: calc(-1 * var(--bp-focus-width));\n }\n\n .multi-select__option--selected {\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 8%,\n transparent\n );\n color: var(--bp-color-primary);\n }\n\n .multi-select__option--selected:hover {\n background-color: color-mix(\n in srgb,\n var(--bp-color-primary) 12%,\n transparent\n );\n }\n\n .multi-select__option--empty {\n color: var(--bp-color-text-muted);\n cursor: default;\n text-align: center;\n padding: var(--bp-spacing-xl) var(--bp-spacing-lg);\n font-style: italic;\n }\n\n .multi-select__checkbox {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--bp-spacing-4);\n height: var(--bp-spacing-4);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-sm);\n font-size: var(--bp-font-size-xs);\n flex-shrink: 0;\n transition: all var(--bp-transition-fast);\n }\n\n .multi-select__option--selected .multi-select__checkbox {\n border-color: var(--bp-color-primary);\n background-color: var(--bp-color-primary);\n color: var(--bp-color-text-inverse);\n }\n\n .multi-select__option-label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n /* Sizes */\n .multi-select--sm .multi-select__control {\n min-height: var(--bp-spacing-8);\n padding: var(--bp-spacing-2xs) var(--bp-spacing-xs);\n font-size: var(--bp-font-size-sm);\n }\n\n .multi-select--sm .multi-select__tag {\n padding: var(--bp-spacing-0-5) var(--bp-spacing-2xs);\n font-size: var(--bp-font-size-xs);\n }\n\n .multi-select--lg .multi-select__control {\n min-height: var(--bp-spacing-12);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n font-size: var(--bp-font-size-lg);\n }\n\n .multi-select--lg .multi-select__tag {\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\n font-size: var(--bp-font-size-base);\n }\n\n /* Variants */\n .multi-select--default .multi-select__control {\n border-color: var(--bp-color-border);\n }\n\n .multi-select--success .multi-select__control {\n border-color: var(--bp-color-success);\n }\n\n .multi-select--error .multi-select__control {\n border-color: var(--bp-color-error);\n }\n\n .multi-select--warning .multi-select__control {\n border-color: var(--bp-color-warning);\n }\n\n .multi-select--info .multi-select__control {\n border-color: var(--bp-color-info);\n }\n\n .multi-select--success\n .multi-select__control:hover:not(\n .multi-select--disabled .multi-select__control\n ) {\n border-color: var(--bp-color-success);\n }\n\n .multi-select--error\n .multi-select__control:hover:not(\n .multi-select--disabled .multi-select__control\n ) {\n border-color: var(--bp-color-error);\n }\n\n .multi-select--warning\n .multi-select__control:hover:not(\n .multi-select--disabled .multi-select__control\n ) {\n border-color: var(--bp-color-warning);\n }\n\n .multi-select--info\n .multi-select__control:hover:not(\n .multi-select--disabled .multi-select__control\n ) {\n border-color: var(--bp-color-info);\n }\n\n /* States */\n .multi-select--disabled .multi-select__control {\n background-color: var(--bp-color-surface-subdued);\n cursor: not-allowed;\n opacity: 0.6;\n }\n\n .multi-select--disabled .multi-select__placeholder {\n color: var(--bp-color-text-muted);\n }\n\n /* Hide slot */\n slot {\n display: none;\n }\n\n /* Hide hidden inputs */\n input[type='hidden'] {\n display: none;\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { multiSelectStyles } from './multi-select.style.js';\nimport { memoizeOne } from '../../utilities/memoize.js';\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\n\nexport type MultiSelectSize = 'sm' | 'md' | 'lg';\nexport type MultiSelectVariant =\n | 'default'\n | 'success'\n | 'error'\n | 'warning'\n | 'info';\n\nexport interface MultiSelectOption {\n value: string;\n label: string;\n}\n\n@customElement('bp-multi-select')\nexport class BpMultiSelect extends LitElement {\n /** The current selected values as an array */\n @property({ type: Array }) declare value: string[];\n\n /** Name attribute for form submission */\n @property({ type: String }) declare name: string;\n\n /** Placeholder text when no values are selected */\n @property({ type: String }) declare placeholder: string;\n\n /** Whether the multi-select is disabled */\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\n\n /** Whether the multi-select is required */\n @property({ type: Boolean, reflect: true }) declare required: boolean;\n\n /** Size variant of the multi-select */\n @property({ type: String, reflect: true }) declare size: MultiSelectSize;\n\n /** Visual variant for validation states */\n @property({ type: String, reflect: true })\n declare variant: MultiSelectVariant;\n\n /** Maximum number of selections allowed (0 = unlimited) */\n @property({ type: Number, attribute: 'max-selections' })\n declare maxSelections: number;\n\n /** Whether to show a clear all button */\n @property({ converter: booleanConverter }) declare clearable: boolean;\n\n /** Whether the dropdown is currently open */\n @state() private isOpen = false;\n\n /** Index of the focused option for keyboard navigation */\n @state() private focusedIndex = -1;\n\n /** Cached options from slotted elements */\n @state() private cachedOptions: MultiSelectOption[] = [];\n\n /**\n * Memoized label lookup map for efficient tag rendering.\n * Only recomputes when cachedOptions reference changes.\n */\n private computeLabelMap = memoizeOne(\n (options: MultiSelectOption[]): Map<string, string> => {\n const map = new Map<string, string>();\n for (const opt of options) {\n map.set(opt.value, opt.label);\n }\n return map;\n }\n );\n\n static styles = [multiSelectStyles];\n\n constructor() {\n super();\n this.value = [];\n this.name = '';\n this.placeholder = 'Select options';\n this.disabled = false;\n this.required = false;\n this.size = 'md';\n this.variant = 'default';\n this.maxSelections = 0;\n this.clearable = true;\n }\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this.handleDocumentClick, {\n passive: true,\n });\n // Initialize cached options and pre-selected values after first render\n this.updateComplete.then(() => {\n this.cachedOptions = this.getOptions();\n this.initializeSelectedValues();\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this.handleDocumentClick, {\n passive: true,\n } as EventListenerOptions);\n }\n\n private handleDocumentClick = (event: MouseEvent) => {\n if (!this.contains(event.target as globalThis.Node)) {\n this.isOpen = false;\n this.focusedIndex = -1;\n }\n };\n\n private handleToggle = (event?: Event) => {\n event?.stopPropagation();\n if (this.disabled) return;\n this.isOpen = !this.isOpen;\n if (this.isOpen) {\n this.focusedIndex = 0;\n }\n };\n\n private getOptions(): MultiSelectOption[] {\n const slot = this.shadowRoot?.querySelector('slot');\n const assignedElements = slot?.assignedElements() || [];\n const options = assignedElements.filter(\n (el): el is globalThis.HTMLOptionElement => el.tagName === 'OPTION'\n );\n\n return options.map((option) => ({\n value: option.value || option.textContent || '',\n label: option.textContent || '',\n }));\n }\n\n /**\n * Handle slot changes by refreshing the cached options.\n */\n private handleSlotChange = () => {\n this.cachedOptions = this.getOptions();\n this.initializeSelectedValues();\n };\n\n /**\n * Read the `selected` attribute from slotted <option> elements\n * and set the initial value array if no values are already set.\n */\n private initializeSelectedValues() {\n if (this.value.length > 0) return;\n\n const slot = this.shadowRoot?.querySelector('slot');\n const assignedElements = slot?.assignedElements() || [];\n const selectedValues = assignedElements\n .filter(\n (el): el is globalThis.HTMLOptionElement =>\n el.tagName === 'OPTION' && el.hasAttribute('selected')\n )\n .map((el) => el.value || el.textContent || '');\n\n if (selectedValues.length > 0) {\n this.value = selectedValues;\n }\n }\n\n private isSelected(value: string): boolean {\n return this.value.includes(value);\n }\n\n private dispatchChangeEvent(newValue: string[], previousValue: string[]) {\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: {\n value: newValue,\n previousValue,\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private handleOptionClick = (option: MultiSelectOption) => {\n if (this.disabled) return;\n\n const previousValue = [...this.value];\n let newValue: string[];\n\n if (this.isSelected(option.value)) {\n // Deselect — but prevent removing the last item when not clearable\n newValue = this.value.filter((v) => v !== option.value);\n if (!this.clearable && newValue.length === 0) {\n return;\n }\n } else {\n // Select (check max selections)\n if (this.maxSelections > 0 && this.value.length >= this.maxSelections) {\n return;\n }\n newValue = [...this.value, option.value];\n }\n\n this.value = newValue;\n this.dispatchChangeEvent(newValue, previousValue);\n };\n\n private handleRemoveTag = (value: string, event: Event) => {\n event.stopPropagation();\n if (this.disabled) return;\n\n const previousValue = [...this.value];\n const newValue = this.value.filter((v) => v !== value);\n this.value = newValue;\n this.dispatchChangeEvent(newValue, previousValue);\n };\n\n private handleClearAll = (event: Event) => {\n event.stopPropagation();\n if (this.disabled) return;\n\n const previousValue = [...this.value];\n const newValue: string[] = [];\n this.value = newValue;\n this.dispatchChangeEvent(newValue, previousValue);\n };\n\n private handleKeyDown = (event: globalThis.KeyboardEvent) => {\n if (this.disabled) return;\n\n const options = this.cachedOptions;\n\n switch (event.key) {\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (this.isOpen && this.focusedIndex >= 0) {\n const option = options[this.focusedIndex];\n if (option) {\n this.handleOptionClick(option);\n }\n } else {\n this.handleToggle();\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.isOpen = false;\n this.focusedIndex = -1;\n break;\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen) {\n this.isOpen = true;\n this.focusedIndex = 0;\n } else {\n this.focusedIndex = Math.min(\n this.focusedIndex + 1,\n options.length - 1\n );\n }\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen) {\n this.isOpen = true;\n this.focusedIndex = options.length - 1;\n } else {\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0);\n }\n break;\n }\n };\n\n private getLabelForValue(value: string): string {\n const labelMap = this.computeLabelMap(this.cachedOptions);\n return labelMap.get(value) || value;\n }\n\n private renderDropdown() {\n const options = this.cachedOptions;\n\n return html`\n <div class=\"multi-select__dropdown\" part=\"dropdown\">\n <ul\n class=\"multi-select__options\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n >\n ${options.length === 0\n ? html`<li class=\"multi-select__option multi-select__option--empty\">\n No options available\n </li>`\n : repeat(\n options,\n (opt) => opt.value,\n (opt, index) => {\n const selected = this.isSelected(opt.value);\n const focused = index === this.focusedIndex;\n return html`\n <li\n class=${classMap({\n 'multi-select__option': true,\n 'multi-select__option--selected': selected,\n 'multi-select__option--focused': focused,\n })}\n role=\"option\"\n aria-selected=${selected}\n @click=${() => this.handleOptionClick(opt)}\n part=\"option ${selected ? 'option-selected' : ''}\"\n >\n <span class=\"multi-select__checkbox\">\n ${selected ? '\\u2713' : ''}\n </span>\n <span class=\"multi-select__option-label\"\n >${opt.label}</span\n >\n </li>\n `;\n }\n )}\n </ul>\n </div>\n `;\n }\n\n render() {\n const hasSelection = this.value.length > 0;\n\n return html`\n <div\n class=${classMap({\n 'multi-select': true,\n 'multi-select--open': this.isOpen,\n 'multi-select--disabled': this.disabled,\n [`multi-select--${this.size}`]: true,\n [`multi-select--${this.variant}`]: true,\n })}\n >\n <div\n class=\"multi-select__control\"\n @click=${this.handleToggle}\n @keydown=${this.handleKeyDown}\n tabindex=${this.disabled ? '-1' : '0'}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded=${this.isOpen}\n aria-disabled=${this.disabled}\n part=\"control\"\n >\n <div class=\"multi-select__value-container\">\n ${hasSelection\n ? repeat(\n this.value,\n (v) => v,\n (v) => html`\n <span class=\"multi-select__tag\" part=\"tag\">\n <span class=\"multi-select__tag-label\">\n ${this.getLabelForValue(v)}\n </span>\n ${this.clearable\n ? html`<button\n type=\"button\"\n class=\"multi-select__tag-remove\"\n @click=${(e: Event) => this.handleRemoveTag(v, e)}\n aria-label=\"Remove ${this.getLabelForValue(v)}\"\n tabindex=\"-1\"\n ?disabled=${this.disabled}\n >\n ×\n </button>`\n : nothing}\n </span>\n `\n )\n : html`<span class=\"multi-select__placeholder\"\n >${this.placeholder}</span\n >`}\n </div>\n\n <div class=\"multi-select__indicators\">\n ${this.clearable && hasSelection\n ? html`\n <button\n type=\"button\"\n class=\"multi-select__clear\"\n @click=${this.handleClearAll}\n aria-label=\"Clear all selections\"\n tabindex=\"-1\"\n ?disabled=${this.disabled}\n part=\"clear-button\"\n >\n ×\n </button>\n `\n : ''}\n <span class=\"multi-select__dropdown-indicator\" part=\"indicator\">\n ▼\n </span>\n </div>\n </div>\n\n ${this.isOpen ? this.renderDropdown() : nothing}\n\n <!-- Hidden slot for options -->\n <slot @slotchange=${this.handleSlotChange}></slot>\n\n <!-- Hidden inputs for form submission -->\n ${this.value.map(\n (v) => html`\n <input type=\"hidden\" name=\"${this.name}\" value=\"${v}\" />\n `\n )}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-multi-select': BpMultiSelect;\n }\n}\n"],"names":["multiSelectStyles","css","BpMultiSelect","LitElement","memoizeOne","options","map","opt","event","option","previousValue","newValue","v","value","el","selectedValues","html","repeat","index","selected","focused","classMap","hasSelection","e","nothing","__decorateClass","property","booleanConverter","state","customElement"],"mappings":";;;;;;AAEO,MAAMA,IAAoBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"notification.js","sources":["../../source/components/notification/notification.style.ts","../../source/components/notification/notification.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const notificationStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n .notification {\n display: flex;\n align-items: flex-start;\n gap: var(--bp-spacing-3);\n padding: var(--bp-spacing-4);\n background-color: var(--bp-color-surface-elevated);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-lg);\n box-shadow: var(--bp-shadow-lg);\n font-family: var(--bp-font-sans);\n font-size: var(--bp-font-size-sm);\n line-height: var(--bp-line-height-normal);\n color: var(--bp-color-text);\n max-width: 400px;\n min-width: 300px;\n animation: notification-slide-in var(--bp-duration-fast) var(--bp-ease-out);\n }\n\n @keyframes notification-slide-in {\n from {\n opacity: 0;\n transform: translateY(calc(-1 * var(--bp-spacing-2)));\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n @keyframes notification-slide-out {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(calc(-1 * var(--bp-spacing-2)));\n }\n }\n\n .notification--exiting {\n animation: notification-slide-out var(--bp-duration-fast) var(--bp-ease-in)\n forwards;\n }\n\n @media (prefers-reduced-motion: reduce) {\n .notification {\n animation: none;\n }\n\n .notification--exiting {\n animation: none;\n opacity: 0;\n }\n }\n\n /* Icon */\n .notification__icon {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .notification__icon svg {\n width: 100%;\n height: 100%;\n }\n\n /* Content */\n .notification__content {\n flex: 1;\n min-width: 0;\n }\n\n .notification__title {\n font-weight: var(--bp-font-weight-semibold);\n margin-bottom: var(--bp-spacing-1);\n color: var(--bp-color-text-strong);\n }\n\n .notification__message {\n color: var(--bp-color-text-muted);\n }\n\n /* Action */\n .notification__action {\n display: flex;\n align-items: center;\n gap: var(--bp-spacing-1);\n }\n\n .notification__action:empty {\n display: none;\n }\n\n /* Close button */\n .notification__close {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--bp-spacing-11);\n height: var(--bp-spacing-11);\n padding: 0;\n margin: calc(-1 * var(--bp-spacing-2));\n background: none;\n border: none;\n border-radius: var(--bp-border-radius-sm);\n color: var(--bp-color-text-muted);\n cursor: pointer;\n transition:\n color var(--bp-transition-fast),\n background-color var(--bp-transition-fast);\n }\n\n .notification__close:hover {\n color: var(--bp-color-text);\n background-color: var(--bp-color-surface-subdued);\n }\n\n .notification__close:focus-visible {\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n }\n\n .notification__close svg {\n width: var(--bp-spacing-4);\n height: var(--bp-spacing-4);\n }\n\n /* Variants */\n .notification--info {\n border-left: var(--bp-spacing-1) solid var(--bp-color-info);\n }\n\n .notification--info .notification__icon {\n color: var(--bp-color-info);\n }\n\n .notification--success {\n border-left: var(--bp-spacing-1) solid var(--bp-color-success);\n }\n\n .notification--success .notification__icon {\n color: var(--bp-color-success);\n }\n\n .notification--warning {\n border-left: var(--bp-spacing-1) solid var(--bp-color-warning);\n }\n\n .notification--warning .notification__icon {\n color: var(--bp-color-warning);\n }\n\n .notification--error {\n border-left: var(--bp-spacing-1) solid var(--bp-color-error);\n }\n\n .notification--error .notification__icon {\n color: var(--bp-color-error);\n }\n\n /* Position variants */\n .notification--top-left,\n .notification--top-center,\n .notification--top-right,\n .notification--bottom-left,\n .notification--bottom-center,\n .notification--bottom-right {\n position: fixed;\n z-index: 10000;\n margin: var(--bp-spacing-4);\n }\n\n .notification--top-left {\n top: 0;\n left: 0;\n }\n\n .notification--top-center {\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .notification--top-right {\n top: 0;\n right: 0;\n }\n\n .notification--bottom-left {\n bottom: 0;\n left: 0;\n }\n\n .notification--bottom-center {\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n }\n\n .notification--bottom-right {\n bottom: 0;\n right: 0;\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { notificationStyles } from './notification.style.js';\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\nimport { checkSvg } from '../icon/icons/entries/check.js';\nimport { warningCircleSvg } from '../icon/icons/entries/warning-circle.js';\nimport { crossSvg } from '../icon/icons/entries/cross.js';\nimport { infoCircleSvg } from '../icon/icons/entries/info-circle.js';\nimport '../icon/icon.js';\n\n/**\n * A notification/toast component for displaying non-blocking messages.\n * Notifications can be dismissed manually or auto-close after a duration.\n *\n * @fires bp-close - Dispatched when the notification is closed\n * @fires bp-show - Dispatched when the notification becomes visible\n * @fires bp-hide - Dispatched when the notification is hidden\n *\n * @slot - Default slot for notification content\n * @slot icon - Custom icon to display\n * @slot action - Action buttons or links\n *\n * @csspart base - The notification container\n * @csspart icon - The icon container\n * @csspart content - The content area\n * @csspart message - The message text container\n * @csspart action - The action slot container\n * @csspart close-button - The close button\n */\n@customElement('bp-notification')\nexport class BpNotification extends LitElement {\n /** The notification variant */\n @property({\n type: String,\n reflect: true,\n converter: {\n fromAttribute: (value: string | null) => {\n const valid = ['info', 'success', 'warning', 'error'];\n return value && valid.includes(value) ? value : 'info';\n },\n },\n })\n declare variant: 'info' | 'success' | 'warning' | 'error';\n\n /** Whether the notification is visible */\n @property({ type: Boolean, reflect: true }) declare open: boolean;\n\n /** Whether the notification can be dismissed */\n @property({ converter: booleanConverter, reflect: true })\n declare closable: boolean;\n\n /** Duration in milliseconds before auto-close (0 = no auto-close) */\n @property({ type: Number }) declare duration: number;\n\n /** Title of the notification */\n @property({ type: String }) declare title: string;\n\n /** Message content of the notification */\n @property({ type: String }) declare message: string;\n\n /**\n * Position of the notification on screen.\n * Note: For multiple notifications, consider using a container component.\n */\n @property({\n type: String,\n converter: {\n fromAttribute: (value: string | null) => {\n const valid = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n ];\n return value && valid.includes(value) ? value : 'top-right';\n },\n },\n })\n declare position:\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right';\n\n @state() private autoCloseTimer: number | null = null;\n @state() private remainingTime: number = 0;\n @state() private timerPaused: boolean = false;\n @state() private isExiting: boolean = false;\n\n static styles = [notificationStyles];\n\n constructor() {\n super();\n this.variant = 'info';\n this.open = false;\n this.closable = true;\n this.duration = 0;\n this.title = '';\n this.message = '';\n this.position = 'top-right';\n }\n\n updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('open')) {\n if (this.open) {\n this.handleOpen();\n } else {\n this.handleClose();\n }\n }\n\n if (changedProperties.has('duration') && this.open) {\n this.startAutoCloseTimer();\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.clearAutoCloseTimer();\n }\n\n /** Show the notification */\n show() {\n if (this.open) return;\n this.open = true;\n }\n\n /** Hide the notification */\n hide() {\n if (!this.open) return;\n this.open = false;\n }\n\n /**\n * Handles the notification opening.\n * Dispatches bp-show event, starts auto-close timer, and manages focus.\n */\n private handleOpen() {\n this.isExiting = false;\n this.dispatchEvent(\n new CustomEvent('bp-show', { bubbles: true, composed: true })\n );\n this.startAutoCloseTimer();\n\n // Focus close button for accessibility\n this.updateComplete.then(() => {\n if (this.closable) {\n const closeButton = this.shadowRoot?.querySelector(\n '.notification__close'\n ) as HTMLElement;\n closeButton?.focus();\n }\n });\n }\n\n /**\n * Handles the notification closing.\n * Clears auto-close timer and dispatches bp-hide event.\n */\n private handleClose() {\n this.clearAutoCloseTimer();\n this.dispatchEvent(\n new CustomEvent('bp-hide', { bubbles: true, composed: true })\n );\n }\n\n /**\n * Starts the auto-close timer based on the duration property.\n * Timer can be paused/resumed with pauseAutoCloseTimer/resumeAutoCloseTimer.\n */\n private startAutoCloseTimer() {\n this.clearAutoCloseTimer();\n\n if (this.duration > 0 && !this.timerPaused) {\n this.remainingTime = this.duration;\n this.autoCloseTimer = window.setTimeout(() => {\n this.hide();\n }, this.duration);\n }\n }\n\n /**\n * Clears the auto-close timer if it exists.\n */\n private clearAutoCloseTimer() {\n if (this.autoCloseTimer) {\n window.clearTimeout(this.autoCloseTimer);\n this.autoCloseTimer = null;\n }\n }\n\n /**\n * Pauses the auto-close timer when user hovers or focuses.\n * Allows users to read content or interact with actions.\n */\n private pauseAutoCloseTimer() {\n if (this.autoCloseTimer && this.duration > 0) {\n this.timerPaused = true;\n window.clearTimeout(this.autoCloseTimer);\n this.autoCloseTimer = null;\n }\n }\n\n /**\n * Resumes the auto-close timer with remaining time.\n */\n private resumeAutoCloseTimer() {\n if (this.timerPaused && this.duration > 0) {\n this.timerPaused = false;\n this.autoCloseTimer = window.setTimeout(() => {\n this.hide();\n }, this.remainingTime);\n }\n }\n\n /**\n * Handles close button click.\n * Hides notification and dispatches bp-close event.\n */\n private handleCloseClick() {\n this.hide();\n this.dispatchEvent(\n new CustomEvent('bp-close', { bubbles: true, composed: true })\n );\n }\n\n /**\n * Handles keyboard events.\n * Closes notification on Escape key if closable.\n */\n private handleKeydown(event: KeyboardEvent) {\n if (event.key === 'Escape' && this.closable) {\n this.handleCloseClick();\n }\n }\n\n /**\n * Returns the default icon for the notification variant.\n * Uses the bp-icon component for consistency with the design system.\n */\n private getDefaultIcon() {\n const variantIconSvg: Record<string, string> = {\n success: checkSvg,\n warning: warningCircleSvg,\n error: crossSvg,\n info: infoCircleSvg,\n };\n return html`<bp-icon\n .svg=${variantIconSvg[this.variant]}\n size=\"md\"\n ></bp-icon>`;\n }\n\n render() {\n if (!this.open) {\n return nothing;\n }\n\n return html`\n <div\n class=\"notification notification--${this.variant} notification--${this\n .position} ${this.isExiting\n ? 'notification--exiting'\n : 'notification--entering'}\"\n part=\"base\"\n role=\"alert\"\n aria-live=${this.variant === 'error' ? 'assertive' : 'polite'}\n @keydown=${this.handleKeydown}\n @mouseenter=${this.pauseAutoCloseTimer}\n @mouseleave=${this.resumeAutoCloseTimer}\n @focusin=${this.pauseAutoCloseTimer}\n @focusout=${this.resumeAutoCloseTimer}\n >\n <div class=\"notification__icon\" part=\"icon\">\n <slot name=\"icon\">${this.getDefaultIcon()}</slot>\n </div>\n\n <div class=\"notification__content\" part=\"content\">\n ${this.title\n ? html`<div class=\"notification__title\">${this.title}</div>`\n : nothing}\n <div class=\"notification__message\" part=\"message\">\n ${this.message || html`<slot></slot>`}\n </div>\n </div>\n\n <div class=\"notification__action\" part=\"action\">\n <slot name=\"action\"></slot>\n </div>\n\n ${this.closable\n ? html`\n <button\n type=\"button\"\n class=\"notification__close\"\n part=\"close-button\"\n aria-label=\"Close notification\"\n @click=${this.handleCloseClick}\n >\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n >\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n `\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-notification': BpNotification;\n }\n}\n"],"names":["notificationStyles","css","BpNotification","LitElement","changedProperties","event","html","checkSvg","warningCircleSvg","crossSvg","infoCircleSvg","nothing","__decorateClass","property","value","booleanConverter","state","customElement"],"mappings":";;;;;;;AAEO,MAAMA,IAAqBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;AC4B3B,IAAMC,IAAN,cAA6BC,EAAW;AAAA,EAiE7C,cAAc;AACZ,UAAA,GARO,KAAQ,iBAAgC,MACxC,KAAQ,gBAAwB,GAChC,KAAQ,cAAuB,IAC/B,KAAQ,YAAqB,IAMpC,KAAK,UAAU,QACf,KAAK,OAAO,IACZ,KAAK,WAAW,IAChB,KAAK,WAAW,GAChB,KAAK,QAAQ,IACb,KAAK,UAAU,IACf,KAAK,WAAW;AAAA,EAClB;AAAA,EAEA,QAAQC,GAAyC;AAC/C,IAAIA,EAAkB,IAAI,MAAM,MAC1B,KAAK,OACP,KAAK,WAAA,IAEL,KAAK,YAAA,IAILA,EAAkB,IAAI,UAAU,KAAK,KAAK,QAC5C,KAAK,oBAAA;AAAA,EAET;AAAA,EAEA,uBAAuB;AACrB,UAAM,qBAAA,GACN,KAAK,oBAAA;AAAA,EACP;AAAA;AAAA,EAGA,OAAO;AACL,IAAI,KAAK,SACT,KAAK,OAAO;AAAA,EACd;AAAA;AAAA,EAGA,OAAO;AACL,IAAK,KAAK,SACV,KAAK,OAAO;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,aAAa;AACnB,SAAK,YAAY,IACjB,KAAK;AAAA,MACH,IAAI,YAAY,WAAW,EAAE,SAAS,IAAM,UAAU,IAAM;AAAA,IAAA,GAE9D,KAAK,oBAAA,GAGL,KAAK,eAAe,KAAK,MAAM;AAC7B,MAAI,KAAK,YACa,KAAK,YAAY;AAAA,QACnC;AAAA,MAAA,GAEW,MAAA;AAAA,IAEjB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,cAAc;AACpB,SAAK,oBAAA,GACL,KAAK;AAAA,MACH,IAAI,YAAY,WAAW,EAAE,SAAS,IAAM,UAAU,IAAM;AAAA,IAAA;AAAA,EAEhE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,sBAAsB;AAC5B,SAAK,oBAAA,GAED,KAAK,WAAW,KAAK,CAAC,KAAK,gBAC7B,KAAK,gBAAgB,KAAK,UAC1B,KAAK,iBAAiB,OAAO,WAAW,MAAM;AAC5C,WAAK,KAAA;AAAA,IACP,GAAG,KAAK,QAAQ;AAAA,EAEpB;AAAA;AAAA;AAAA;AAAA,EAKQ,sBAAsB;AAC5B,IAAI,KAAK,mBACP,OAAO,aAAa,KAAK,cAAc,GACvC,KAAK,iBAAiB;AAAA,EAE1B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,sBAAsB;AAC5B,IAAI,KAAK,kBAAkB,KAAK,WAAW,MACzC,KAAK,cAAc,IACnB,OAAO,aAAa,KAAK,cAAc,GACvC,KAAK,iBAAiB;AAAA,EAE1B;AAAA;AAAA;AAAA;AAAA,EAKQ,uBAAuB;AAC7B,IAAI,KAAK,eAAe,KAAK,WAAW,MACtC,KAAK,cAAc,IACnB,KAAK,iBAAiB,OAAO,WAAW,MAAM;AAC5C,WAAK,KAAA;AAAA,IACP,GAAG,KAAK,aAAa;AAAA,EAEzB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,mBAAmB;AACzB,SAAK,KAAA,GACL,KAAK;AAAA,MACH,IAAI,YAAY,YAAY,EAAE,SAAS,IAAM,UAAU,IAAM;AAAA,IAAA;AAAA,EAEjE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,cAAcC,GAAsB;AAC1C,IAAIA,EAAM,QAAQ,YAAY,KAAK,YACjC,KAAK,iBAAA;AAAA,EAET;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,iBAAiB;AAOvB,WAAOC;AAAA,aANwC;AAAA,MAC7C,SAASC;AAAA,MACT,SAASC;AAAA,MACT,OAAOC;AAAA,MACP,MAAMC;AAAA,IAAA,EAGgB,KAAK,OAAO,CAAC;AAAA;AAAA;AAAA,EAGvC;AAAA,EAEA,SAAS;AACP,WAAK,KAAK,OAIHJ;AAAA;AAAA,4CAEiC,KAAK,OAAO,kBAAkB,KAC/D,QAAQ,IAAI,KAAK,YAChB,0BACA,wBAAwB;AAAA;AAAA;AAAA,oBAGhB,KAAK,YAAY,UAAU,cAAc,QAAQ;AAAA,mBAClD,KAAK,aAAa;AAAA,sBACf,KAAK,mBAAmB;AAAA,sBACxB,KAAK,oBAAoB;AAAA,mBAC5B,KAAK,mBAAmB;AAAA,oBACvB,KAAK,oBAAoB;AAAA;AAAA;AAAA,8BAGf,KAAK,gBAAgB;AAAA;AAAA;AAAA;AAAA,YAIvC,KAAK,QACHA,qCAAwC,KAAK,KAAK,WAClDK,CAAO;AAAA;AAAA,cAEP,KAAK,WAAWL,gBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQvC,KAAK,WACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAMa,KAAK,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAYlCK,CAAO;AAAA;AAAA,QAtDNA;AAAA,EAyDX;AACF;AA/RaT,EA+DJ,SAAS,CAACF,CAAkB;AAnD3BY,EAAA;AAAA,EAVPC,EAAS;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,MACT,eAAe,CAACC,MAEPA,KADO,CAAC,QAAQ,WAAW,WAAW,OAAO,EAC9B,SAASA,CAAK,IAAIA,IAAQ;AAAA,IAClD;AAAA,EACF,CACD;AAAA,GAXUZ,EAYH,WAAA,WAAA,CAAA;AAG4CU,EAAA;AAAA,EAAnDC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAf/BX,EAeyC,WAAA,QAAA,CAAA;AAI5CU,EAAA;AAAA,EADPC,EAAS,EAAE,WAAWE,GAAkB,SAAS,IAAM;AAAA,GAlB7Cb,EAmBH,WAAA,YAAA,CAAA;AAG4BU,EAAA;AAAA,EAAnCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAtBfX,EAsByB,WAAA,YAAA,CAAA;AAGAU,EAAA;AAAA,EAAnCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAzBfX,EAyByB,WAAA,SAAA,CAAA;AAGAU,EAAA;AAAA,EAAnCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GA5BfX,EA4ByB,WAAA,WAAA,CAAA;AAsB5BU,EAAA;AAAA,EAhBPC,EAAS;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,MACT,eAAe,CAACC,MASPA,KARO;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,EAEoB,SAASA,CAAK,IAAIA,IAAQ;AAAA,IAClD;AAAA,EACF,CACD;AAAA,GAjDUZ,EAkDH,WAAA,YAAA,CAAA;AAQSU,EAAA;AAAA,EAAhBI,EAAA;AAAM,GA1DId,EA0DM,WAAA,kBAAA,CAAA;AACAU,EAAA;AAAA,EAAhBI,EAAA;AAAM,GA3DId,EA2DM,WAAA,iBAAA,CAAA;AACAU,EAAA;AAAA,EAAhBI,EAAA;AAAM,GA5DId,EA4DM,WAAA,eAAA,CAAA;AACAU,EAAA;AAAA,EAAhBI,EAAA;AAAM,GA7DId,EA6DM,WAAA,aAAA,CAAA;AA7DNA,IAANU,EAAA;AAAA,EADNK,EAAc,iBAAiB;AAAA,GACnBf,CAAA;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"number-input.js","sources":["../../source/components/number-input/number-input.style.ts","../../source/components/number-input/number-input.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const numberInputStyles = css`\n /* Base styles */\n :host {\n display: block;\n }\n\n .number-input {\n font-family: var(--bp-font-family);\n display: flex;\n flex-direction: column;\n gap: var(--bp-spacing-xs);\n }\n\n .number-input__label {\n font-size: var(--bp-font-size-sm);\n font-weight: var(--bp-font-weight-medium);\n color: var(--bp-color-text);\n line-height: var(--bp-line-height-normal);\n }\n\n .number-input__required {\n color: var(--bp-color-error);\n margin-left: var(--bp-spacing-xs);\n }\n\n .number-input__container {\n display: flex;\n align-items: stretch;\n }\n\n .number-input__input {\n flex: 1;\n min-width: 0;\n font-family: var(--bp-font-family);\n font-size: var(--bp-font-size-base);\n line-height: var(--bp-line-height-normal);\n color: var(--bp-color-text);\n background-color: var(--bp-color-background);\n border: var(--bp-border-width) solid var(--bp-color-border);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n text-align: center;\n font-variant-numeric: tabular-nums;\n transition:\n border-color var(--bp-transition-fast),\n box-shadow var(--bp-transition-fast);\n }\n\n .number-input__input::placeholder {\n color: var(--bp-color-text-muted);\n opacity: var(--bp-opacity-subtle);\n }\n\n .number-input__input:hover:not(:disabled):not(:readonly) {\n border-color: var(--bp-color-border-strong);\n }\n\n .number-input__input:focus {\n outline: none;\n border-color: var(--bp-color-focus);\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-focus);\n }\n\n .number-input__input:focus-visible {\n outline: none;\n border-color: var(--bp-color-focus);\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-focus);\n }\n\n /* Button styling */\n .number-input__button {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--bp-color-surface);\n border: var(--bp-border-width) solid var(--bp-color-border);\n color: var(--bp-color-text);\n cursor: pointer;\n transition:\n background-color var(--bp-transition-fast),\n border-color var(--bp-transition-fast);\n padding: 0;\n }\n\n .number-input__button:hover:not(:disabled) {\n background-color: var(--bp-color-surface-elevated);\n border-color: var(--bp-color-border-strong);\n }\n\n .number-input__button:active:not(:disabled) {\n background-color: var(--bp-color-surface-subdued);\n }\n\n .number-input__button:focus-visible {\n outline: var(--bp-focus-width) var(--bp-focus-style) var(--bp-color-focus);\n outline-offset: var(--bp-focus-offset);\n z-index: 1;\n }\n\n .number-input__button:disabled {\n opacity: var(--bp-opacity-disabled);\n background-color: var(--bp-color-surface-subdued);\n cursor: not-allowed;\n }\n\n .number-input__button--decrement {\n border-right: none;\n border-radius: var(--bp-border-radius-md) 0 0 var(--bp-border-radius-md);\n }\n\n .number-input__button--increment {\n border-left: none;\n border-radius: 0 var(--bp-border-radius-md) var(--bp-border-radius-md) 0;\n }\n\n .number-input__button-icon {\n font-size: var(--bp-font-size-lg);\n font-weight: var(--bp-font-weight-bold);\n line-height: 1;\n user-select: none;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n /* Input border radius adjustment when buttons visible */\n .number-input:not(.number-input--hide-buttons) .number-input__input {\n border-radius: 0;\n }\n\n .number-input--hide-buttons .number-input__input {\n border-radius: var(--bp-border-radius-md);\n }\n\n /* Size variants */\n .number-input--sm .number-input__input {\n font-size: var(--bp-font-size-sm);\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\n }\n\n .number-input--sm .number-input__button {\n width: var(--bp-spacing-8);\n }\n\n .number-input--sm .number-input__button-icon {\n font-size: var(--bp-font-size-base);\n }\n\n .number-input--md .number-input__input {\n font-size: var(--bp-font-size-base);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n }\n\n .number-input--md .number-input__button {\n width: var(--bp-spacing-10);\n }\n\n .number-input--lg .number-input__input {\n font-size: var(--bp-font-size-lg);\n padding: var(--bp-spacing-md) var(--bp-spacing-lg);\n }\n\n .number-input--lg .number-input__button {\n width: var(--bp-spacing-12);\n }\n\n .number-input--lg .number-input__button-icon {\n font-size: var(--bp-font-size-xl);\n }\n\n /* Variant styles */\n .number-input__input--default {\n border-color: var(--bp-color-border);\n }\n\n .number-input__input--success {\n border-color: var(--bp-color-success);\n }\n\n .number-input__input--success:focus,\n .number-input__input--success:focus-visible {\n border-color: var(--bp-color-success);\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-success);\n }\n\n .number-input__input--error {\n border-color: var(--bp-color-error);\n }\n\n .number-input__input--error:focus,\n .number-input__input--error:focus-visible {\n border-color: var(--bp-color-error);\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-error);\n }\n\n .number-input__input--warning {\n border-color: var(--bp-color-warning);\n }\n\n .number-input__input--warning:focus,\n .number-input__input--warning:focus-visible {\n border-color: var(--bp-color-warning);\n box-shadow: 0 0 0 var(--bp-focus-width) var(--bp-color-warning);\n }\n\n /* Match button border color to input variant */\n .number-input--success .number-input__button {\n border-color: var(--bp-color-success);\n }\n\n .number-input--error .number-input__button {\n border-color: var(--bp-color-error);\n }\n\n .number-input--warning .number-input__button {\n border-color: var(--bp-color-warning);\n }\n\n /* States */\n .number-input--disabled {\n pointer-events: none;\n }\n\n .number-input--disabled .number-input__input {\n opacity: var(--bp-opacity-disabled);\n background-color: var(--bp-color-surface-subdued);\n cursor: not-allowed;\n }\n\n .number-input--disabled .number-input__label {\n opacity: var(--bp-opacity-disabled);\n }\n\n .number-input--readonly .number-input__input {\n background-color: var(--bp-color-surface-subdued);\n cursor: default;\n }\n\n .number-input--readonly .number-input__button {\n background-color: var(--bp-color-surface-subdued);\n pointer-events: none;\n }\n\n /* Message styles */\n .number-input__message {\n font-size: var(--bp-font-size-sm);\n line-height: var(--bp-line-height-normal);\n color: var(--bp-color-text-muted);\n }\n\n .number-input__message--error {\n color: var(--bp-color-error);\n }\n\n .number-input__message--success {\n color: var(--bp-color-success);\n }\n\n .number-input__message--warning {\n color: var(--bp-color-warning);\n }\n\n /* iOS zoom prevention: ensure 16px minimum on touch devices */\n @media (max-width: 768px) {\n .number-input--sm .number-input__input {\n font-size: 16px;\n }\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { numberInputStyles } from './number-input.style.js';\n\n/**\n * Size variants for the number input\n */\nexport type NumberInputSize = 'sm' | 'md' | 'lg';\n\n/**\n * Validation variant for the number input\n */\nexport type NumberInputVariant = 'default' | 'success' | 'error' | 'warning';\n\n/**\n * A number input component with increment/decrement buttons.\n *\n * @element bp-number-input\n *\n * @fires bp-input - Fired when the value changes during input\n * @fires bp-change - Fired when the value changes (on blur or button click)\n *\n * @csspart input - The native input element\n * @csspart decrement - The decrement button\n * @csspart increment - The increment button\n * @csspart label - The label element\n * @csspart message - The help/error message element\n */\n@customElement('bp-number-input')\nexport class BpNumberInput extends LitElement {\n /**\n * Current value of the input\n */\n @property({ type: Number }) declare value: number | null;\n\n /**\n * Minimum allowed value\n */\n @property({ type: Number }) declare min: number | undefined;\n\n /**\n * Maximum allowed value\n */\n @property({ type: Number }) declare max: number | undefined;\n\n /**\n * Step increment for buttons and arrow keys\n */\n @property({ type: Number }) declare step: number;\n\n /**\n * Name attribute for form association\n */\n @property({ type: String }) declare name: string;\n\n /**\n * Label text for the input\n */\n @property({ type: String }) declare label: string;\n\n /**\n * Placeholder text when empty\n */\n @property({ type: String }) declare placeholder: string;\n\n /**\n * Whether the input is disabled\n */\n @property({ type: Boolean, reflect: true }) declare disabled: boolean;\n\n /**\n * Whether the input is required\n */\n @property({ type: Boolean, reflect: true }) declare required: boolean;\n\n /**\n * Whether the input is readonly\n */\n @property({ type: Boolean, reflect: true }) declare readonly: boolean;\n\n /**\n * Size variant\n */\n @property({ type: String }) declare size: NumberInputSize;\n\n /**\n * Validation variant\n */\n @property({ type: String }) declare variant: NumberInputVariant;\n\n /**\n * Help or error message to display\n */\n @property({ type: String }) declare message: string;\n\n /**\n * Number of decimal places to display\n */\n @property({ type: Number }) declare precision: number | undefined;\n\n /**\n * Hide the increment/decrement buttons\n */\n @property({ type: Boolean, attribute: 'hide-buttons' })\n declare hideButtons: boolean;\n\n @query('input') private inputElement!: HTMLInputElement;\n\n static styles = [numberInputStyles];\n\n constructor() {\n super();\n this.value = null;\n this.min = undefined;\n this.max = undefined;\n this.step = 1;\n this.name = '';\n this.label = '';\n this.placeholder = '';\n this.disabled = false;\n this.required = false;\n this.readonly = false;\n this.size = 'md';\n this.variant = 'default';\n this.message = '';\n this.precision = undefined;\n this.hideButtons = false;\n }\n\n /**\n * Check if decrement is allowed\n */\n private get canDecrement(): boolean {\n if (this.disabled || this.readonly) return false;\n if (this.value === null) return true;\n if (this.min !== undefined) return this.value > this.min;\n return true;\n }\n\n /**\n * Check if increment is allowed\n */\n private get canIncrement(): boolean {\n if (this.disabled || this.readonly) return false;\n if (this.value === null) return true;\n if (this.max !== undefined) return this.value < this.max;\n return true;\n }\n\n /**\n * Format value for display\n */\n private formatValue(value: number | null): string {\n if (value === null) return '';\n if (this.precision !== undefined) {\n return value.toFixed(this.precision);\n }\n return String(value);\n }\n\n /**\n * Clamp value to min/max range\n */\n private clampValue(value: number): number {\n let result = value;\n if (this.min !== undefined) result = Math.max(this.min, result);\n if (this.max !== undefined) result = Math.min(this.max, result);\n return result;\n }\n\n /**\n * Round value to step precision\n */\n private roundToStep(value: number): number {\n if (this.precision !== undefined) {\n const factor = Math.pow(10, this.precision);\n return Math.round(value * factor) / factor;\n }\n // Handle floating point precision for step\n const stepDecimals = (String(this.step).split('.')[1] || '').length;\n const factor = Math.pow(10, stepDecimals);\n return Math.round(value * factor) / factor;\n }\n\n /**\n * Update value and emit events\n */\n private updateValue(\n newValue: number | null,\n emitChange: boolean = true\n ): void {\n const oldValue = this.value;\n\n if (newValue !== null) {\n newValue = this.clampValue(newValue);\n newValue = this.roundToStep(newValue);\n }\n\n if (newValue !== oldValue) {\n this.value = newValue;\n\n this.dispatchEvent(\n new CustomEvent('bp-input', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n })\n );\n\n if (emitChange) {\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n }\n\n /**\n * Handle increment button click\n */\n private handleIncrement(): void {\n if (!this.canIncrement) return;\n const currentValue = this.value ?? this.min ?? 0;\n this.updateValue(currentValue + this.step);\n }\n\n /**\n * Handle decrement button click\n */\n private handleDecrement(): void {\n if (!this.canDecrement) return;\n const currentValue = this.value ?? this.max ?? 0;\n this.updateValue(currentValue - this.step);\n }\n\n /**\n * Handle direct input\n */\n private handleInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const inputValue = input.value.trim();\n\n if (inputValue === '') {\n this.updateValue(null, false);\n return;\n }\n\n const numValue = parseFloat(inputValue);\n if (!isNaN(numValue)) {\n // Don't clamp during input, only on blur\n this.value = numValue;\n this.dispatchEvent(\n new CustomEvent('bp-input', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n })\n );\n }\n }\n\n /**\n * Handle blur - validate and clamp\n */\n private handleBlur(): void {\n if (this.value !== null) {\n const clampedValue = this.clampValue(this.value);\n const roundedValue = this.roundToStep(clampedValue);\n\n if (roundedValue !== this.value) {\n this.value = roundedValue;\n }\n\n // Update input display\n if (this.inputElement) {\n this.inputElement.value = this.formatValue(this.value);\n }\n }\n\n this.dispatchEvent(\n new CustomEvent('bp-change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /**\n * Handle keyboard navigation\n */\n private handleKeyDown(event: globalThis.KeyboardEvent): void {\n if (this.disabled || this.readonly) return;\n\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n this.handleIncrement();\n break;\n case 'ArrowDown':\n event.preventDefault();\n this.handleDecrement();\n break;\n case 'PageUp':\n event.preventDefault();\n if (this.canIncrement) {\n const currentValue = this.value ?? this.min ?? 0;\n this.updateValue(currentValue + this.step * 10);\n }\n break;\n case 'PageDown':\n event.preventDefault();\n if (this.canDecrement) {\n const currentValue = this.value ?? this.max ?? 0;\n this.updateValue(currentValue - this.step * 10);\n }\n break;\n case 'Home':\n event.preventDefault();\n if (this.min !== undefined) {\n this.updateValue(this.min);\n }\n break;\n case 'End':\n event.preventDefault();\n if (this.max !== undefined) {\n this.updateValue(this.max);\n }\n break;\n }\n }\n\n render() {\n const wrapperClasses = {\n 'number-input': true,\n [`number-input--${this.size}`]: true,\n [`number-input--${this.variant}`]: true,\n 'number-input--disabled': this.disabled,\n 'number-input--readonly': this.readonly,\n 'number-input--hide-buttons': this.hideButtons,\n };\n\n const inputClasses = {\n 'number-input__input': true,\n [`number-input__input--${this.variant}`]: true,\n };\n\n return html`\n <div class=${classMap(wrapperClasses)}>\n ${this.label\n ? html`\n <label class=\"number-input__label\" part=\"label\">\n ${this.label}\n ${this.required\n ? html`<span class=\"number-input__required\">*</span>`\n : nothing}\n </label>\n `\n : nothing}\n\n <div class=\"number-input__container\">\n ${!this.hideButtons\n ? html`\n <button\n type=\"button\"\n class=\"number-input__button number-input__button--decrement\"\n part=\"decrement\"\n tabindex=\"-1\"\n ?disabled=${!this.canDecrement}\n aria-label=\"Decrease value\"\n @click=${this.handleDecrement}\n >\n <span class=\"number-input__button-icon\">−</span>\n </button>\n `\n : nothing}\n\n <input\n type=\"text\"\n inputmode=\"decimal\"\n class=${classMap(inputClasses)}\n part=\"input\"\n .value=${this.formatValue(this.value)}\n name=${this.name || nothing}\n placeholder=${this.placeholder || nothing}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?required=${this.required}\n aria-valuemin=${this.min ?? nothing}\n aria-valuemax=${this.max ?? nothing}\n aria-valuenow=${this.value ?? nothing}\n aria-invalid=${this.variant === 'error' ? 'true' : nothing}\n @input=${this.handleInput}\n @blur=${this.handleBlur}\n @keydown=${this.handleKeyDown}\n />\n\n ${!this.hideButtons\n ? html`\n <button\n type=\"button\"\n class=\"number-input__button number-input__button--increment\"\n part=\"increment\"\n tabindex=\"-1\"\n ?disabled=${!this.canIncrement}\n aria-label=\"Increase value\"\n @click=${this.handleIncrement}\n >\n <span class=\"number-input__button-icon\">+</span>\n </button>\n `\n : nothing}\n </div>\n\n ${this.message\n ? html`\n <div\n class=\"number-input__message number-input__message--${this\n .variant}\"\n part=\"message\"\n >\n ${this.message}\n </div>\n `\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-number-input': BpNumberInput;\n }\n}\n"],"names":["numberInputStyles","css","BpNumberInput","LitElement","value","result","factor","stepDecimals","newValue","emitChange","oldValue","currentValue","event","inputValue","numValue","clampedValue","roundedValue","wrapperClasses","inputClasses","html","classMap","nothing","__decorateClass","property","query","customElement"],"mappings":";;;AAEO,MAAMA,IAAoBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.js","sources":["../../source/components/pagination/pagination.style.ts","../../source/components/pagination/pagination.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const paginationStyles = css`\n /* Base styles */\n :host {\n display: inline-block;\n }\n\n .pagination {\n display: flex;\n align-items: center;\n gap: var(--bp-spacing-sm);\n font-family: var(--bp-font-sans);\n }\n\n .pagination__button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: var(--bp-spacing-10);\n height: var(--bp-spacing-10);\n padding: var(--bp-spacing-xs) var(--bp-spacing-sm);\n border: var(--bp-border-width) solid var(--bp-color-border);\n border-radius: var(--bp-border-radius-md);\n background-color: var(--bp-color-background);\n color: var(--bp-color-text);\n font-family: var(--bp-font-sans);\n font-size: var(--bp-font-size-base);\n font-weight: var(--bp-font-weight-medium);\n line-height: var(--bp-line-height-tight);\n cursor: pointer;\n transition:\n background-color var(--bp-transition-fast),\n border-color var(--bp-transition-fast),\n color var(--bp-transition-fast),\n transform var(--bp-transition-fast);\n user-select: none;\n }\n\n .pagination__button:hover:not(:disabled) {\n background-color: var(--bp-color-surface);\n border-color: var(--bp-color-border-strong);\n color: var(--bp-color-text);\n }\n\n .pagination__button:active:not(:disabled) {\n background-color: var(--bp-color-surface);\n border-color: var(--bp-color-border-strong);\n transform: translateY(1px) scale(0.98);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n }\n\n .pagination__button:focus-visible {\n outline: var(--bp-border-width) solid var(--bp-color-primary);\n outline-offset: var(--bp-spacing-0-5);\n }\n\n .pagination__button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .pagination__button--active {\n background-color: var(--bp-color-primary);\n border-color: var(--bp-color-primary);\n color: var(--bp-color-text-inverse);\n font-weight: var(--bp-font-weight-semibold);\n }\n\n .pagination__button--active:hover:not(:disabled) {\n background-color: var(--bp-color-primary-hover);\n border-color: var(--bp-color-primary-hover);\n }\n\n .pagination__button--active:focus-visible {\n outline: 2px solid var(--bp-color-text-inverse);\n outline-offset: 2px;\n }\n\n /* Navigation buttons (first, last, prev, next) - ghost style for visual hierarchy */\n .pagination__button--first,\n .pagination__button--last,\n .pagination__button--prev,\n .pagination__button--next {\n color: var(--bp-color-text-muted);\n background-color: transparent;\n }\n\n .pagination__button--first:hover:not(:disabled),\n .pagination__button--last:hover:not(:disabled),\n .pagination__button--prev:hover:not(:disabled),\n .pagination__button--next:hover:not(:disabled) {\n color: var(--bp-color-text);\n background-color: var(--bp-color-surface);\n }\n\n .pagination__ellipsis {\n display: inline-flex;\n align-items: end;\n justify-content: center;\n min-width: var(--bp-spacing-2xl);\n height: var(--bp-spacing-2xl);\n color: var(--bp-color-text-muted);\n font-size: var(--bp-font-size-base);\n user-select: none;\n }\n\n .pagination__info {\n margin-left: var(--bp-spacing-lg);\n color: var(--bp-color-text-muted);\n font-size: var(--bp-font-size-sm);\n white-space: nowrap;\n }\n\n /* Sizes */\n .pagination--sm .pagination__button {\n min-width: var(--bp-spacing-xl);\n height: var(--bp-spacing-xl);\n padding: var(--bp-spacing-2xs) var(--bp-spacing-xs);\n font-size: var(--bp-font-size-sm);\n }\n\n .pagination--sm .pagination__ellipsis {\n min-width: var(--bp-spacing-xl);\n height: var(--bp-spacing-xl);\n font-size: var(--bp-font-size-sm);\n }\n\n .pagination--sm .pagination__info {\n font-size: var(--bp-font-size-xs);\n }\n\n .pagination--lg .pagination__button {\n min-width: var(--bp-spacing-2xl);\n height: var(--bp-spacing-2xl);\n padding: var(--bp-spacing-sm) var(--bp-spacing-md);\n font-size: var(--bp-font-size-lg);\n }\n\n .pagination--lg .pagination__ellipsis {\n min-width: var(--bp-spacing-2xl);\n height: var(--bp-spacing-2xl);\n font-size: var(--bp-font-size-lg);\n }\n\n .pagination--lg .pagination__info {\n font-size: var(--bp-font-size-base);\n }\n\n .pagination--lg {\n gap: var(--bp-spacing-md);\n }\n\n /* Touch target size: ensure 44x44px minimum on touch devices */\n @media (pointer: coarse) {\n .pagination__button {\n min-width: 44px;\n min-height: 44px;\n }\n }\n`;\n","import { LitElement, html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { paginationStyles } from './pagination.style.js';\nimport { booleanConverter } from '../../utilities/boolean-converter.js';\n\n/**\n * A pagination component for navigating through multiple pages of content.\n *\n * @fires bp-page-change - Dispatched when the page changes\n *\n * @slot - Default slot for custom content (not typically used)\n *\n * @csspart container - The main pagination container\n * @csspart button - All pagination buttons\n * @csspart button-first - The first page button\n * @csspart button-prev - The previous page button\n * @csspart button-next - The next page button\n * @csspart button-last - The last page button\n * @csspart button-page - Individual page number buttons\n * @csspart button-ellipsis - Ellipsis indicators\n * @csspart info - The page info text\n */\n@customElement('bp-pagination')\nexport class BpPagination extends LitElement {\n /** Current page number (1-indexed) */\n @property({ type: Number, attribute: 'current-page' })\n declare currentPage: number;\n\n /** Total number of pages */\n @property({ type: Number, attribute: 'total-pages' })\n declare totalPages: number;\n\n /** Number of page buttons to show around the current page */\n @property({ type: Number, attribute: 'sibling-count' })\n declare siblingCount: number;\n\n /** Number of page buttons to show at the start and end */\n @property({ type: Number, attribute: 'boundary-count' })\n declare boundaryCount: number;\n\n /** Show first/last page buttons */\n @property({\n converter: booleanConverter,\n reflect: true,\n attribute: 'show-first-last',\n })\n declare showFirstLast: boolean;\n\n /** Show previous/next page buttons */\n @property({\n converter: booleanConverter,\n reflect: true,\n attribute: 'show-prev-next',\n })\n declare showPrevNext: boolean;\n\n /** Show page info text (e.g., \"Page 1 of 10\") */\n @property({ type: Boolean, attribute: 'show-info' })\n declare showInfo: boolean;\n\n /** Disable all pagination controls */\n @property({ type: Boolean }) declare disabled: boolean;\n\n /** Size variant */\n @property({ type: String }) declare size: 'sm' | 'md' | 'lg';\n\n static styles = [paginationStyles];\n\n constructor() {\n super();\n this.currentPage = 1;\n this.totalPages = 1;\n this.siblingCount = 1;\n this.boundaryCount = 1;\n this.showFirstLast = true;\n this.showPrevNext = true;\n this.showInfo = false;\n this.disabled = false;\n this.size = 'md';\n }\n\n private handlePageChange(newPage: number) {\n if (\n this.disabled ||\n newPage < 1 ||\n newPage > this.totalPages ||\n newPage === this.currentPage\n ) {\n return;\n }\n\n this.currentPage = newPage;\n this.dispatchEvent(\n new CustomEvent('bp-page-change', {\n detail: { page: newPage },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n private getPageNumbers(): (number | 'ellipsis')[] {\n const pages: (number | 'ellipsis')[] = [];\n const totalCount = this.totalPages;\n const currentPageNum = this.currentPage;\n const siblingCountNum = this.siblingCount;\n const boundaryCountNum = this.boundaryCount;\n\n // Calculate range around current page\n const startPage = Math.max(1, currentPageNum - siblingCountNum);\n const endPage = Math.min(totalCount, currentPageNum + siblingCountNum);\n\n // Add boundary pages at start\n for (let i = 1; i <= Math.min(boundaryCountNum, totalCount); i++) {\n pages.push(i);\n }\n\n // Add ellipsis after boundary if needed\n if (startPage > boundaryCountNum + 1) {\n pages.push('ellipsis');\n }\n\n // Add pages around current page\n for (let i = startPage; i <= endPage; i++) {\n if (i > boundaryCountNum && i <= totalCount - boundaryCountNum) {\n pages.push(i);\n }\n }\n\n // Add ellipsis before end boundary if needed\n if (endPage < totalCount - boundaryCountNum) {\n pages.push('ellipsis');\n }\n\n // Add boundary pages at end\n for (\n let i = Math.max(totalCount - boundaryCountNum + 1, boundaryCountNum + 1);\n i <= totalCount;\n i++\n ) {\n if (!pages.includes(i)) {\n pages.push(i);\n }\n }\n\n // Remove duplicates while preserving order\n return pages.filter((page, index, self) => self.indexOf(page) === index);\n }\n\n render() {\n const pageNumbers = this.getPageNumbers();\n const isFirstPage = this.currentPage === 1;\n const isLastPage = this.currentPage === this.totalPages;\n\n return html`\n <nav\n class=\"pagination pagination--${this.size}\"\n part=\"container\"\n aria-label=\"Pagination\"\n >\n ${this.showFirstLast\n ? html`\n <button\n class=\"pagination__button pagination__button--first\"\n part=\"button button-first\"\n ?disabled=${this.disabled || isFirstPage}\n @click=${() => this.handlePageChange(1)}\n aria-label=\"First page\"\n >\n «\n </button>\n `\n : ''}\n ${this.showPrevNext\n ? html`\n <button\n class=\"pagination__button pagination__button--prev\"\n part=\"button button-prev\"\n ?disabled=${this.disabled || isFirstPage}\n @click=${() => this.handlePageChange(this.currentPage - 1)}\n aria-label=\"Previous page\"\n >\n ‹\n </button>\n `\n : ''}\n ${repeat(\n pageNumbers,\n (page, index) => (page === 'ellipsis' ? `ellipsis-${index}` : page),\n (page) =>\n page === 'ellipsis'\n ? html`\n <span\n class=\"pagination__ellipsis\"\n part=\"button-ellipsis\"\n aria-hidden=\"true\"\n >…</span\n >\n `\n : html`\n <button\n class=\"pagination__button pagination__button--page ${page ===\n this.currentPage\n ? 'pagination__button--active'\n : ''}\"\n part=\"button button-page\"\n ?disabled=${this.disabled}\n @click=${() => this.handlePageChange(page)}\n aria-label=\"Page ${page}\"\n aria-current=${page === this.currentPage ? 'page' : 'false'}\n >\n ${page}\n </button>\n `\n )}\n ${this.showPrevNext\n ? html`\n <button\n class=\"pagination__button pagination__button--next\"\n part=\"button button-next\"\n ?disabled=${this.disabled || isLastPage}\n @click=${() => this.handlePageChange(this.currentPage + 1)}\n aria-label=\"Next page\"\n >\n ›\n </button>\n `\n : ''}\n ${this.showFirstLast\n ? html`\n <button\n class=\"pagination__button pagination__button--last\"\n part=\"button button-last\"\n ?disabled=${this.disabled || isLastPage}\n @click=${() => this.handlePageChange(this.totalPages)}\n aria-label=\"Last page\"\n >\n »\n </button>\n `\n : ''}\n ${this.showInfo\n ? html`\n <span class=\"pagination__info\" part=\"info\" aria-live=\"polite\">\n Page ${this.currentPage} of ${this.totalPages}\n </span>\n `\n : ''}\n </nav>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'bp-pagination': BpPagination;\n }\n}\n"],"names":["paginationStyles","css","BpPagination","LitElement","newPage","pages","totalCount","currentPageNum","siblingCountNum","boundaryCountNum","startPage","endPage","i","page","index","self","pageNumbers","isFirstPage","isLastPage","html","repeat","__decorateClass","property","booleanConverter","customElement"],"mappings":"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"}
|