igniteui-webcomponents 7.3.1 → 7.4.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/CHANGELOG.md +72 -1
- package/animations/easings.d.ts +21 -31
- package/animations/easings.js +21 -34
- package/animations/easings.js.map +1 -1
- package/animations/player.d.ts +8 -16
- package/animations/player.js +5 -8
- package/animations/player.js.map +1 -1
- package/animations/view-transition.d.ts +10 -10
- package/animations/view-transition.js +26 -37
- package/animations/view-transition.js.map +1 -1
- package/components/avatar/themes/avatar.base.css.js +1 -1
- package/components/avatar/themes/avatar.base.css.js.map +1 -1
- package/components/badge/themes/badge.base.css.js +1 -1
- package/components/badge/themes/badge.base.css.js.map +1 -1
- package/components/banner/themes/banner.base.css.js +1 -1
- package/components/banner/themes/banner.base.css.js.map +1 -1
- package/components/banner/themes/shared/banner.indigo.css.js +1 -1
- package/components/banner/themes/shared/banner.indigo.css.js.map +1 -1
- package/components/breadcrumb/breadcrumb.d.ts +74 -0
- package/components/breadcrumb/breadcrumb.js +107 -0
- package/components/breadcrumb/breadcrumb.js.map +1 -0
- package/components/breadcrumb/breadcrumbs.d.ts +60 -0
- package/components/breadcrumb/breadcrumbs.js +50 -0
- package/components/breadcrumb/breadcrumbs.js.map +1 -0
- package/components/breadcrumb/themes/breadcrumb.base.css.d.ts +1 -0
- package/components/breadcrumb/themes/breadcrumb.base.css.js +3 -0
- package/components/breadcrumb/themes/breadcrumb.base.css.js.map +1 -0
- package/components/breadcrumb/themes/breadcrumbs.base.css.d.ts +1 -0
- package/components/breadcrumb/themes/breadcrumbs.base.css.js +3 -0
- package/components/breadcrumb/themes/breadcrumbs.base.css.js.map +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.d.ts +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js +3 -0
- package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js.map +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.d.ts +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js +3 -0
- package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js.map +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.d.ts +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js +3 -0
- package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js.map +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.material.css.d.ts +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.material.css.js +3 -0
- package/components/breadcrumb/themes/dark/breadcrumb.material.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.fluent.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.indigo.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.material.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.material.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.material.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.shared.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.shared.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.shared.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.common.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.common.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.common.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.material.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.material.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.material.css.js.map +1 -0
- package/components/breadcrumb/themes/themes.d.ts +2 -0
- package/components/breadcrumb/themes/themes.js +50 -0
- package/components/breadcrumb/themes/themes.js.map +1 -0
- package/components/button/button.d.ts +0 -2
- package/components/button/button.js.map +1 -1
- package/components/button-group/button-group.d.ts +42 -12
- package/components/button-group/button-group.js +82 -34
- package/components/button-group/button-group.js.map +1 -1
- package/components/button-group/toggle-button.d.ts +6 -1
- package/components/button-group/toggle-button.js +28 -2
- package/components/button-group/toggle-button.js.map +1 -1
- package/components/calendar/base.d.ts +7 -2
- package/components/calendar/base.js +10 -4
- package/components/calendar/base.js.map +1 -1
- package/components/calendar/calendar.d.ts +6 -3
- package/components/calendar/calendar.js +41 -14
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.d.ts +5 -8
- package/components/calendar/days-view/days-view.js +7 -16
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/calendar/helpers.d.ts +13 -0
- package/components/calendar/helpers.js +15 -0
- package/components/calendar/helpers.js.map +1 -1
- package/components/calendar/themes/calendar.base.css.js +1 -1
- package/components/calendar/themes/calendar.base.css.js.map +1 -1
- package/components/calendar/themes/days-view.base.css.js +1 -1
- package/components/calendar/themes/days-view.base.css.js.map +1 -1
- package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
- package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
- package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
- package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
- package/components/calendar/themes/shared/fluent/days-view.fluent.css.js +1 -1
- package/components/calendar/themes/shared/fluent/days-view.fluent.css.js.map +1 -1
- package/components/calendar/themes/shared/indigo/calendar.indigo.css.js +1 -1
- package/components/calendar/themes/shared/indigo/calendar.indigo.css.js.map +1 -1
- package/components/calendar/themes/shared/indigo/days-view.indigo.css.js +1 -1
- package/components/calendar/themes/shared/indigo/days-view.indigo.css.js.map +1 -1
- package/components/calendar/themes/shared/material/days-view.material.css.js +1 -1
- package/components/calendar/themes/shared/material/days-view.material.css.js.map +1 -1
- package/components/calendar/themes/year-month-view.base.css.js +1 -1
- package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
- package/components/card/themes/container.base.css.js +1 -1
- package/components/card/themes/container.base.css.js.map +1 -1
- package/components/carousel/carousel-indicator.js +1 -0
- package/components/carousel/carousel-indicator.js.map +1 -1
- package/components/carousel/carousel-slide.d.ts +1 -1
- package/components/carousel/carousel-slide.js.map +1 -1
- package/components/carousel/carousel.d.ts +3 -3
- package/components/carousel/carousel.js.map +1 -1
- package/components/carousel/themes/carousel.base.css.js +1 -1
- package/components/carousel/themes/carousel.base.css.js.map +1 -1
- package/components/carousel/themes/shared/carousel.indigo.css.js +1 -1
- package/components/carousel/themes/shared/carousel.indigo.css.js.map +1 -1
- package/components/chat/chat-input.d.ts +1 -2
- package/components/chat/chat-input.js +1 -1
- package/components/chat/chat-input.js.map +1 -1
- package/components/chat/chat-state.d.ts +8 -9
- package/components/chat/chat-state.js.map +1 -1
- package/components/chat/chat.d.ts +1 -3
- package/components/chat/chat.js +2 -2
- package/components/chat/chat.js.map +1 -1
- package/components/chat/message-attachments.d.ts +6 -15
- package/components/chat/message-attachments.js.map +1 -1
- package/components/chat/themes/chat.base.css.js +1 -1
- package/components/chat/themes/chat.base.css.js.map +1 -1
- package/components/chat/themes/message.base.css.js +1 -1
- package/components/chat/themes/message.base.css.js.map +1 -1
- package/components/chat/utils.d.ts +0 -1
- package/components/chat/utils.js +1 -1
- package/components/chat/utils.js.map +1 -1
- package/components/checkbox/checkbox-base.d.ts +1 -1
- package/components/checkbox/checkbox.js +1 -1
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/checkbox/themes/checkbox.base.css.js +1 -1
- package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.fluent.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.fluent.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.indigo.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.indigo.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.material.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.material.css.js.map +1 -1
- package/components/checkbox/themes/switch.base.css.js +1 -1
- package/components/checkbox/themes/switch.base.css.js.map +1 -1
- package/components/chip/chip.d.ts +2 -2
- package/components/chip/chip.js.map +1 -1
- package/components/color-picker/color-picker.d.ts +35 -34
- package/components/color-picker/color-picker.js +9 -4
- package/components/color-picker/color-picker.js.map +1 -1
- package/components/color-picker/common.d.ts +0 -2
- package/components/color-picker/common.js +2 -2
- package/components/color-picker/common.js.map +1 -1
- package/components/color-picker/converters.js.map +1 -1
- package/components/color-picker/picker-canvas.js.map +1 -1
- package/components/color-picker/themes/color-picker.base.css.js +1 -1
- package/components/color-picker/themes/color-picker.base.css.js.map +1 -1
- package/components/combo/combo.d.ts +18 -20
- package/components/combo/combo.js +8 -2
- package/components/combo/combo.js.map +1 -1
- package/components/combo/controllers/data.d.ts +7 -10
- package/components/combo/controllers/data.js.map +1 -1
- package/components/combo/themes/combo-item.base.css.js +1 -1
- package/components/combo/themes/combo-item.base.css.js.map +1 -1
- package/components/combo/themes/combo.base.css.js +1 -1
- package/components/combo/themes/combo.base.css.js.map +1 -1
- package/components/combo/themes/shared/combo.bootstrap.css.js +1 -1
- package/components/combo/themes/shared/combo.bootstrap.css.js.map +1 -1
- package/components/date-picker/date-picker.base.d.ts +33 -29
- package/components/date-picker/date-picker.base.js +15 -4
- package/components/date-picker/date-picker.base.js.map +1 -1
- package/components/date-picker/date-picker.d.ts +1 -1
- package/components/date-picker/date-picker.js +5 -3
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/date-picker/themes/date-picker.base.css.js +1 -1
- package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
- package/components/date-range-picker/date-range-input.d.ts +0 -2
- package/components/date-range-picker/date-range-input.js +0 -6
- package/components/date-range-picker/date-range-input.js.map +1 -1
- package/components/date-range-picker/date-range-picker.base.css.js +1 -1
- package/components/date-range-picker/date-range-picker.base.css.js.map +1 -1
- package/components/date-range-picker/date-range-picker.d.ts +22 -31
- package/components/date-range-picker/date-range-picker.js +7 -7
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-range-picker/i18n.d.ts +21 -0
- package/components/date-range-picker/i18n.js +10 -0
- package/components/date-range-picker/i18n.js.map +1 -0
- package/components/date-range-picker/predefined-ranges-area.base.css.js +1 -1
- package/components/date-range-picker/predefined-ranges-area.base.css.js.map +1 -1
- package/components/date-range-picker/predefined-ranges-area.d.ts +3 -3
- package/components/date-range-picker/predefined-ranges-area.js +2 -5
- package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
- package/components/date-range-picker/validators.d.ts +0 -4
- package/components/date-range-picker/validators.js +4 -4
- package/components/date-range-picker/validators.js.map +1 -1
- package/components/date-time-input/date-time-input.base.d.ts +39 -37
- package/components/date-time-input/date-time-input.base.js +6 -0
- package/components/date-time-input/date-time-input.base.js.map +1 -1
- package/components/date-time-input/date-time-input.d.ts +1 -11
- package/components/date-time-input/date-time-input.js +0 -6
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/datetime-mask-parser.d.ts +0 -10
- package/components/date-time-input/datetime-mask-parser.js +1 -1
- package/components/date-time-input/datetime-mask-parser.js.map +1 -1
- package/components/dialog/dialog.js.map +1 -1
- package/components/divider/themes/divider.base.css.js +1 -1
- package/components/divider/themes/divider.base.css.js.map +1 -1
- package/components/dropdown/dropdown-group.d.ts +2 -10
- package/components/dropdown/dropdown-group.js +2 -27
- package/components/dropdown/dropdown-group.js.map +1 -1
- package/components/dropdown/dropdown.d.ts +17 -23
- package/components/dropdown/dropdown.js +5 -17
- package/components/dropdown/dropdown.js.map +1 -1
- package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
- package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
- package/components/dropdown/themes/dropdown.base.css.js +1 -1
- package/components/dropdown/themes/dropdown.base.css.js.map +1 -1
- package/components/file-input/file-input.d.ts +2 -2
- package/components/file-input/file-input.js.map +1 -1
- package/components/file-input/themes/file-input.base.css.js +1 -1
- package/components/file-input/themes/file-input.base.css.js.map +1 -1
- package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
- package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
- package/components/icon/icon.d.ts +1 -1
- package/components/icon/icon.registry.d.ts +6 -6
- package/components/icon/icon.registry.js.map +1 -1
- package/components/input/input.d.ts +3 -3
- package/components/input/input.js.map +1 -1
- package/components/input/themes/shared/input.indigo.css.js +1 -1
- package/components/input/themes/shared/input.indigo.css.js.map +1 -1
- package/components/input/themes/shared/input.material.css.js +1 -1
- package/components/input/themes/shared/input.material.css.js.map +1 -1
- package/components/list/themes/item.base.css.js +1 -1
- package/components/list/themes/item.base.css.js.map +1 -1
- package/components/mask-input/mask-history.d.ts +22 -18
- package/components/mask-input/mask-history.js.map +1 -1
- package/components/mask-input/mask-input.d.ts +1 -1
- package/components/mask-input/mask-parser.d.ts +11 -13
- package/components/mask-input/mask-parser.js.map +1 -1
- package/components/nav-drawer/themes/item.base.css.js +1 -1
- package/components/nav-drawer/themes/item.base.css.js.map +1 -1
- package/components/popover/popover.d.ts +45 -34
- package/components/popover/popover.js +54 -122
- package/components/popover/popover.js.map +1 -1
- package/components/popover/position/arrow.d.ts +19 -0
- package/components/popover/position/arrow.js +33 -0
- package/components/popover/position/arrow.js.map +1 -0
- package/components/popover/position/floating.d.ts +40 -0
- package/components/popover/position/floating.js +146 -0
- package/components/popover/position/floating.js.map +1 -0
- package/components/popover/position/native.d.ts +45 -0
- package/components/popover/position/native.js +158 -0
- package/components/popover/position/native.js.map +1 -0
- package/components/popover/position/strategy.d.ts +37 -0
- package/components/popover/position/strategy.js +21 -0
- package/components/popover/position/strategy.js.map +1 -0
- package/components/popover/position/types.d.ts +26 -0
- package/components/popover/position/types.js +15 -0
- package/components/popover/position/types.js.map +1 -0
- package/components/popover/themes/light/popover.base.css.js +1 -1
- package/components/popover/themes/light/popover.base.css.js.map +1 -1
- package/components/progress/circular-progress.d.ts +0 -5
- package/components/progress/circular-progress.js.map +1 -1
- package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
- package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
- package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.d.ts +1 -0
- package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js +3 -0
- package/components/progress/themes/linear/shared/linear.progress.bootstrap.css.js.map +1 -0
- package/components/progress/themes/linear/themes.js +3 -2
- package/components/progress/themes/linear/themes.js.map +1 -1
- package/components/qr-code/qr-code.d.ts +29 -2
- package/components/qr-code/qr-code.js +56 -13
- package/components/qr-code/qr-code.js.map +1 -1
- package/components/qr-code/renderer/export.d.ts +28 -0
- package/components/qr-code/renderer/export.js +120 -0
- package/components/qr-code/renderer/export.js.map +1 -0
- package/components/qr-code/types.d.ts +26 -0
- package/components/qr-code/types.js.map +1 -1
- package/components/radio/radio.d.ts +4 -4
- package/components/radio/radio.js +17 -14
- package/components/radio/radio.js.map +1 -1
- package/components/radio/themes/radio.base.css.js +1 -1
- package/components/radio/themes/radio.base.css.js.map +1 -1
- package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
- package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
- package/components/radio/themes/shared/radio.indigo.css.js +1 -1
- package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/rating/rating.d.ts +6 -6
- package/components/rating/rating.js.map +1 -1
- package/components/select/select-group.d.ts +5 -10
- package/components/select/select-group.js +10 -34
- package/components/select/select-group.js.map +1 -1
- package/components/select/select.d.ts +12 -20
- package/components/select/select.js +4 -14
- package/components/select/select.js.map +1 -1
- package/components/select/themes/select.base.css.js +1 -1
- package/components/select/themes/select.base.css.js.map +1 -1
- package/components/select/themes/shared/select.bootstrap.css.js +1 -1
- package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
- package/components/slider/themes/shared/slider.material.css.js +1 -1
- package/components/slider/themes/shared/slider.material.css.js.map +1 -1
- package/components/slider/themes/slider.base.css.js +1 -1
- package/components/slider/themes/slider.base.css.js.map +1 -1
- package/components/snackbar/themes/snackbar.base.css.js +1 -1
- package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
- package/components/splitter/splitter.d.ts +6 -6
- package/components/splitter/splitter.js.map +1 -1
- package/components/splitter/themes/splitter.base.css.js +1 -1
- package/components/splitter/themes/splitter.base.css.js.map +1 -1
- package/components/stepper/themes/step/step.base.css.js +1 -1
- package/components/stepper/themes/step/step.base.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.fluent.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.fluent.css.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.material.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.material.css.js.map +1 -1
- package/components/tabs/themes/tab.base.css.js +1 -1
- package/components/tabs/themes/tab.base.css.js.map +1 -1
- package/components/textarea/textarea.d.ts +1 -1
- package/components/textarea/textarea.js.map +1 -1
- package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
- package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.common.css.js +1 -1
- package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
- package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
- package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.material.css.js +1 -1
- package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
- package/components/tile-manager/themes/tile.base.css.js +1 -1
- package/components/tile-manager/themes/tile.base.css.js.map +1 -1
- package/components/tile-manager/tile-manager.d.ts +6 -7
- package/components/tile-manager/tile-manager.js.map +1 -1
- package/components/tile-manager/tile.d.ts +3 -3
- package/components/tile-manager/tile.js.map +1 -1
- package/components/toast/themes/toast.base.css.js +1 -1
- package/components/toast/themes/toast.base.css.js.map +1 -1
- package/components/toast/toast.d.ts +0 -2
- package/components/toast/toast.js.map +1 -1
- package/components/tooltip/controller.js.map +1 -1
- package/components/tooltip/service.js +4 -5
- package/components/tooltip/service.js.map +1 -1
- package/components/tooltip/themes/tooltip.base.css.js +1 -1
- package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
- package/components/tooltip/tooltip.d.ts +34 -13
- package/components/tooltip/tooltip.js +8 -4
- package/components/tooltip/tooltip.js.map +1 -1
- package/components/tree/themes/item.base.css.js +1 -1
- package/components/tree/themes/item.base.css.js.map +1 -1
- package/components/tree/tree-item.d.ts +6 -6
- package/components/tree/tree-item.js.map +1 -1
- package/components/tree/tree.navigation.d.ts +5 -6
- package/components/tree/tree.navigation.js.map +1 -1
- package/components/tree/tree.selection.js.map +1 -1
- package/components/types.d.ts +1 -1
- package/components/types.js.map +1 -1
- package/components/validation-container/themes/validator.base.css.js +1 -1
- package/components/validation-container/themes/validator.base.css.js.map +1 -1
- package/components/validation-container/validation-container.d.ts +10 -12
- package/components/validation-container/validation-container.js +14 -17
- package/components/validation-container/validation-container.js.map +1 -1
- package/components/virtualization/engine.d.ts +5 -5
- package/components/virtualization/engine.js.map +1 -1
- package/components/virtualization/virtualization.d.ts +61 -63
- package/components/virtualization/virtualization.js +6 -5
- package/components/virtualization/virtualization.js.map +1 -1
- package/custom-elements.json +16769 -19698
- package/igniteui-webcomponents.css-data.json +2 -2
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +3 -1
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/internals/abort-handler.d.ts +13 -25
- package/internals/abort-handler.js +4 -6
- package/internals/abort-handler.js.map +1 -1
- package/internals/context.d.ts +13 -7
- package/internals/context.js +2 -1
- package/internals/context.js.map +1 -1
- package/internals/controllers/adopt-styles.d.ts +19 -20
- package/internals/controllers/adopt-styles.js +3 -8
- package/internals/controllers/adopt-styles.js.map +1 -1
- package/internals/controllers/aria-projection.d.ts +56 -55
- package/internals/controllers/aria-projection.js +14 -15
- package/internals/controllers/aria-projection.js.map +1 -1
- package/internals/controllers/async-consumer.js.map +1 -1
- package/internals/controllers/command.d.ts +15 -30
- package/internals/controllers/command.js +2 -7
- package/internals/controllers/command.js.map +1 -1
- package/internals/controllers/context-provider.d.ts +7 -13
- package/internals/controllers/context-provider.js.map +1 -1
- package/internals/controllers/focus-ring.d.ts +10 -30
- package/internals/controllers/focus-ring.js +6 -12
- package/internals/controllers/focus-ring.js.map +1 -1
- package/internals/controllers/fullscreen.d.ts +7 -23
- package/internals/controllers/fullscreen.js +3 -9
- package/internals/controllers/fullscreen.js.map +1 -1
- package/internals/controllers/gestures.d.ts +10 -29
- package/internals/controllers/gestures.js +1 -3
- package/internals/controllers/gestures.js.map +1 -1
- package/internals/controllers/group.d.ts +13 -30
- package/internals/controllers/group.js.map +1 -1
- package/internals/controllers/host-listeners.d.ts +28 -0
- package/internals/controllers/host-listeners.js +27 -0
- package/internals/controllers/host-listeners.js.map +1 -0
- package/internals/controllers/id-resolver.d.ts +8 -9
- package/internals/controllers/id-resolver.js +6 -14
- package/internals/controllers/id-resolver.js.map +1 -1
- package/internals/controllers/internals.d.ts +53 -104
- package/internals/controllers/internals.js +40 -13
- package/internals/controllers/internals.js.map +1 -1
- package/internals/controllers/key-bindings.d.ts +61 -158
- package/internals/controllers/key-bindings.js +68 -67
- package/internals/controllers/key-bindings.js.map +1 -1
- package/internals/controllers/keys.d.ts +32 -0
- package/internals/controllers/keys.js +20 -0
- package/internals/controllers/keys.js.map +1 -0
- package/internals/controllers/mutation-observer.d.ts +14 -37
- package/internals/controllers/mutation-observer.js +1 -1
- package/internals/controllers/mutation-observer.js.map +1 -1
- package/internals/controllers/resize-observer.d.ts +9 -19
- package/internals/controllers/resize-observer.js.map +1 -1
- package/internals/controllers/root-click.d.ts +11 -42
- package/internals/controllers/root-click.js +4 -6
- package/internals/controllers/root-click.js.map +1 -1
- package/internals/controllers/roving-focus.d.ts +16 -35
- package/internals/controllers/roving-focus.js.map +1 -1
- package/internals/controllers/slot.d.ts +25 -54
- package/internals/controllers/slot.js +6 -6
- package/internals/controllers/slot.js.map +1 -1
- package/internals/controllers/toggle.d.ts +44 -48
- package/internals/controllers/toggle.js.map +1 -1
- package/internals/date/compare.js.map +1 -1
- package/internals/date/converters.d.ts +10 -7
- package/internals/date/converters.js.map +1 -1
- package/internals/date/model.d.ts +9 -16
- package/internals/date/model.js +22 -25
- package/internals/date/model.js.map +1 -1
- package/internals/decorators/blazorAdditionalDependencies.d.ts +4 -2
- package/internals/decorators/blazorAdditionalDependencies.js.map +1 -1
- package/internals/decorators/blazorDeepImport.d.ts +1 -3
- package/internals/decorators/blazorDeepImport.js.map +1 -1
- package/internals/decorators/blazorInclude.d.ts +3 -2
- package/internals/decorators/blazorInclude.js.map +1 -1
- package/internals/decorators/blazorIndirectRender.d.ts +1 -3
- package/internals/decorators/blazorIndirectRender.js.map +1 -1
- package/internals/decorators/blazorSuppressComponent.d.ts +1 -3
- package/internals/decorators/blazorSuppressComponent.js.map +1 -1
- package/internals/decorators/coerced-property.d.ts +14 -20
- package/internals/decorators/coerced-property.js.map +1 -1
- package/internals/decorators/shadow-options.d.ts +2 -5
- package/internals/decorators/shadow-options.js.map +1 -1
- package/internals/definitions/defineAllComponents.js +6 -0
- package/internals/definitions/defineAllComponents.js.map +1 -1
- package/internals/directives/drag.d.ts +51 -81
- package/internals/directives/drag.js +27 -89
- package/internals/directives/drag.js.map +1 -1
- package/internals/directives/pointer-operation.d.ts +75 -0
- package/internals/directives/pointer-operation.js +92 -0
- package/internals/directives/pointer-operation.js.map +1 -0
- package/internals/directives/resize.d.ts +36 -64
- package/internals/directives/resize.js +18 -85
- package/internals/directives/resize.js.map +1 -1
- package/internals/i18n/EN/calendar.resources.d.ts +8 -2
- package/internals/i18n/EN/calendar.resources.js +2 -2
- package/internals/i18n/EN/calendar.resources.js.map +1 -1
- package/internals/i18n/EN/chat.resources.d.ts +8 -2
- package/internals/i18n/EN/chat.resources.js +3 -10
- package/internals/i18n/EN/chat.resources.js.map +1 -1
- package/internals/i18n/EN/date-picker.resources.d.ts +6 -4
- package/internals/i18n/EN/date-picker.resources.js +1 -7
- package/internals/i18n/EN/date-picker.resources.js.map +1 -1
- package/internals/i18n/EN/date-range-picker.resources.d.ts +9 -2
- package/internals/i18n/EN/date-range-picker.resources.js +2 -2
- package/internals/i18n/EN/date-range-picker.resources.js.map +1 -1
- package/internals/i18n/i18n-controller.d.ts +44 -46
- package/internals/i18n/i18n-controller.js +46 -33
- package/internals/i18n/i18n-controller.js.map +1 -1
- package/internals/i18n/utils.d.ts +9 -4
- package/internals/i18n/utils.js +4 -27
- package/internals/i18n/utils.js.map +1 -1
- package/internals/mixins/alert.d.ts +10 -25
- package/internals/mixins/alert.js.map +1 -1
- package/internals/mixins/combo-box.d.ts +21 -11
- package/internals/mixins/combo-box.js +16 -22
- package/internals/mixins/combo-box.js.map +1 -1
- package/internals/mixins/event-emitter.js +9 -11
- package/internals/mixins/event-emitter.js.map +1 -1
- package/internals/mixins/forms/associated-required.d.ts +4 -4
- package/internals/mixins/forms/associated-required.js.map +1 -1
- package/internals/mixins/forms/associated.d.ts +4 -2
- package/internals/mixins/forms/associated.js +8 -19
- package/internals/mixins/forms/associated.js.map +1 -1
- package/internals/mixins/forms/form-transformers.js.map +1 -1
- package/internals/mixins/forms/types.d.ts +24 -80
- package/internals/mixins/forms/types.js.map +1 -1
- package/internals/mixins/group.d.ts +18 -0
- package/internals/mixins/group.js +37 -0
- package/internals/mixins/group.js.map +1 -0
- package/internals/mixins/i18n.d.ts +10 -16
- package/internals/mixins/i18n.js.map +1 -1
- package/internals/mixins/mask-behavior.d.ts +8 -22
- package/internals/mixins/mask-behavior.js +1 -2
- package/internals/mixins/mask-behavior.js.map +1 -1
- package/internals/mixins/option.d.ts +1 -2
- package/internals/mixins/option.js +2 -1
- package/internals/mixins/option.js.map +1 -1
- package/internals/part-map.d.ts +4 -2
- package/internals/part-map.js +1 -1
- package/internals/part-map.js.map +1 -1
- package/internals/templates/input-shell.d.ts +8 -17
- package/internals/templates/input-shell.js +4 -1
- package/internals/templates/input-shell.js.map +1 -1
- package/internals/templates/masked-input.d.ts +7 -8
- package/internals/templates/masked-input.js.map +1 -1
- package/internals/templates/slotted-icon.d.ts +7 -12
- package/internals/templates/slotted-icon.js.map +1 -1
- package/internals/templates/toggle-shell.d.ts +6 -7
- package/internals/templates/toggle-shell.js.map +1 -1
- package/internals/timing.d.ts +5 -14
- package/internals/timing.js.map +1 -1
- package/internals/utils/arrays.d.ts +21 -21
- package/internals/utils/arrays.js +14 -0
- package/internals/utils/arrays.js.map +1 -1
- package/internals/utils/dom.d.ts +51 -39
- package/internals/utils/dom.js +1 -2
- package/internals/utils/dom.js.map +1 -1
- package/internals/utils/events.d.ts +29 -16
- package/internals/utils/events.js +9 -1
- package/internals/utils/events.js.map +1 -1
- package/internals/utils/lit.d.ts +5 -2
- package/internals/utils/lit.js.map +1 -1
- package/internals/utils/math.d.ts +8 -6
- package/internals/utils/math.js.map +1 -1
- package/internals/utils/objects.d.ts +3 -20
- package/internals/utils/objects.js +1 -39
- package/internals/utils/objects.js.map +1 -1
- package/internals/utils/strings.d.ts +9 -11
- package/internals/utils/strings.js.map +1 -1
- package/internals/utils/types.d.ts +16 -3
- package/internals/utils/types.js +3 -0
- package/internals/utils/types.js.map +1 -1
- package/internals/validators.d.ts +9 -8
- package/internals/validators.js +12 -6
- package/internals/validators.js.map +1 -1
- package/package.json +1 -1
- package/skills/README.md +3 -0
- package/skills/igniteui-wc-figma-to-app/SKILL.md +907 -0
- package/skills/igniteui-wc-figma-to-app/references/asset-extraction.md +363 -0
- package/skills/igniteui-wc-figma-to-app/references/design-token-bridge.md +407 -0
- package/skills/igniteui-wc-figma-to-app/references/figma-component-map.md +325 -0
- package/skills/igniteui-wc-figma-to-app/references/mcp-setup.md +409 -0
- package/skills/igniteui-wc-figma-to-app/references/validation-patterns.md +376 -0
- package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +21 -0
- package/skills/igniteui-wc-integrate-with-framework/SKILL.md +4 -3
- package/skills/igniteui-wc-integrate-with-framework/references/vanilla-js.md +14 -0
- package/skills/igniteui-wc-migrate-grid-lite-to-premium/SKILL.md +12 -2
- package/theming/config.d.ts +14 -5
- package/theming/config.js +38 -18
- package/theming/config.js.map +1 -1
- package/theming/context.d.ts +1 -23
- package/theming/context.js.map +1 -1
- package/theming/theming-controller.d.ts +2 -32
- package/theming/theming-controller.js +15 -21
- package/theming/theming-controller.js.map +1 -1
- package/theming/theming-event.d.ts +0 -7
- package/theming/theming-event.js +0 -13
- package/theming/theming-event.js.map +1 -1
- package/theming/types.d.ts +1 -8
- package/theming/types.js.map +1 -1
- package/web-types.json +3 -3
- package/animations/presets/slide/index.d.ts +0 -3
- package/animations/presets/slide/index.js +0 -16
- package/animations/presets/slide/index.js.map +0 -1
- package/internals/controllers/root-scroll.d.ts +0 -31
- package/internals/controllers/root-scroll.js +0 -71
- package/internals/controllers/root-scroll.js.map +0 -1
- package/theming/utils.d.ts +0 -11
- package/theming/utils.js +0 -20
- package/theming/utils.js.map +0 -1
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
# Asset Extraction from Figma
|
|
2
|
+
|
|
3
|
+
> **Part of the [`igniteui-wc-figma-to-app`](../SKILL.md) skill.**
|
|
4
|
+
>
|
|
5
|
+
> Use this file in Phase 1h to identify and extract image assets from Figma artboards
|
|
6
|
+
> before implementation. Read it in full before calling any extraction tool.
|
|
7
|
+
>
|
|
8
|
+
> **Zero-placeholder policy:** every image asset visible in the Figma design must be
|
|
9
|
+
> extracted and committed before Phase 4 begins. Gradient placeholders and empty `<div>`
|
|
10
|
+
> boxes are not acceptable. If the highest-fidelity method is unavailable, use the next
|
|
11
|
+
> tier — but always extract something real.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Step 0 — Decide Where Assets Live
|
|
16
|
+
|
|
17
|
+
Match the project you are in before downloading anything:
|
|
18
|
+
|
|
19
|
+
| Project shape | Asset directory | Referenced as |
|
|
20
|
+
| --- | --- | --- |
|
|
21
|
+
| CLI-scaffolded (`igniteui-cli new --framework=webcomponents`) | `src/assets/images/`, `src/assets/icons/` | `/assets/images/hero.jpg` — copied to the build output by `vite-plugin-static-copy` |
|
|
22
|
+
| Stock Vite / plain bundler | `public/images/`, `public/icons/` | `/images/hero.jpg` |
|
|
23
|
+
| Bundler-processed (hashed) assets | anywhere under `src/` | `import heroUrl from '../assets/hero.jpg'` then bind the URL |
|
|
24
|
+
|
|
25
|
+
Create the directories before the first `curl`:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
mkdir -p src/assets/images src/assets/icons # or public/images public/icons
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Step 1 — Acquire the Figma File Key (Required for the REST API)
|
|
34
|
+
|
|
35
|
+
The Figma REST API needs a **file key** — the identifier in every Figma file URL. If the
|
|
36
|
+
connected Figma MCP is the addressable variant, you already have it from Phase 0c. If not,
|
|
37
|
+
ask:
|
|
38
|
+
|
|
39
|
+
> "To extract image assets at the highest quality, I need the Figma file key.
|
|
40
|
+
> In the Figma desktop app: right-click the file tab → **Copy link**.
|
|
41
|
+
> The URL looks like `https://www.figma.com/design/ABCDEF1234567890/My-File-Name` — the
|
|
42
|
+
> file key is the segment after `/design/`: **`ABCDEF1234567890`**.
|
|
43
|
+
> If you cannot access it right now, I will use the fallback methods and note which assets
|
|
44
|
+
> need re-exporting at higher quality."
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
echo "https://www.figma.com/design/ABCDEF1234567890/My-App" \
|
|
48
|
+
| sed -E 's|.*/design/([^/]+)/.*|\1|'
|
|
49
|
+
# → ABCDEF1234567890
|
|
50
|
+
export FILE_KEY="ABCDEF1234567890"
|
|
51
|
+
export FIGMA_TOKEN="your-personal-access-token" # same token the MCP server uses
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Two Fundamentally Different Types of Image Assets
|
|
57
|
+
|
|
58
|
+
| Type | What it is | Figma signal | Best extraction method |
|
|
59
|
+
| ---------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------- | ---------------------------------------- |
|
|
60
|
+
| **Image fill** | A photo, texture, or raster image dragged/pasted into Figma, stored as an IMAGE fill | Layer has a fill of type `IMAGE`; `imageRef` in node data | REST API Method A → original source file |
|
|
61
|
+
| **Vector asset** | A logo, icon, or illustration drawn in Figma with vector tools | Node type `VECTOR`, `BOOLEAN_OPERATION`, or `GROUP` | REST API Method B → clean SVG |
|
|
62
|
+
|
|
63
|
+
Do **not** confuse either with Indigo.Design UI Kit component instances — those become
|
|
64
|
+
Ignite UI components, not extracted assets.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Step 2 — Identify Image Nodes
|
|
69
|
+
|
|
70
|
+
### Naming patterns to look for in `figma_get_metadata`
|
|
71
|
+
|
|
72
|
+
| Naming pattern | Likely asset type | Action |
|
|
73
|
+
| ------------------------------------------------ | ----------------- | ----------------------------------------- |
|
|
74
|
+
| `_Image`, `_Photo`, `_Picture`, `image`, `photo` | Raster image fill | Extract as PNG |
|
|
75
|
+
| `_Hero`, `_Banner`, `_Cover` | Large raster fill | Extract as PNG (2× scale) |
|
|
76
|
+
| `_Thumbnail`, `_Avatar`, `_Illustration` | Raster image fill | Extract as PNG |
|
|
77
|
+
| `_Logo`, `_Brand` | Vector or raster | If vector: SVG; if raster: PNG |
|
|
78
|
+
| `_Icon/` prefix (custom icons) | Custom SVG icon | Extract as SVG, then **register** it |
|
|
79
|
+
| `_Background`, `_Bg` | Large raster fill | Extract as PNG |
|
|
80
|
+
| `_Art`, `_Pattern` | Vector or raster | Classify before extracting |
|
|
81
|
+
|
|
82
|
+
> **Ignore these** — do NOT extract them as image assets:
|
|
83
|
+
>
|
|
84
|
+
> - Any layer named `_Button`, `_Input`, `_Grid`, `_Card`, etc. (kit component instances)
|
|
85
|
+
> - Icon glyphs available from a registerable collection (Material, Material Icons Extended)
|
|
86
|
+
> — register them with `registerIconFromText` and render `<igc-icon>` instead
|
|
87
|
+
> - Artboard/frame boundaries themselves
|
|
88
|
+
|
|
89
|
+
### Size heuristic
|
|
90
|
+
|
|
91
|
+
Large rectangles (width or height > 200px) at key layout positions (hero area, sidebar
|
|
92
|
+
background, card thumbnail slot) are almost always image fills. Small nodes (< 48×48px)
|
|
93
|
+
with icon-like names are usually SVG icons.
|
|
94
|
+
|
|
95
|
+
### Confirm with design context
|
|
96
|
+
|
|
97
|
+
`figma_get_design_context` returns the reference code **plus a JSON block of download URLs
|
|
98
|
+
for the assets it references**. Each entry confirms the node is a real asset and gives you a
|
|
99
|
+
directly downloadable URL. Note them — Tier 2 depends on them, and they are short-lived.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Step 3 — Extract at the Highest Available Fidelity
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
Do you have the FILE_KEY?
|
|
107
|
+
├─ YES → Tier 1 (REST API). Always the best.
|
|
108
|
+
└─ NO → Did figma_get_design_context return an asset URL for this node?
|
|
109
|
+
├─ YES → Tier 2 (download that URL now).
|
|
110
|
+
└─ NO → Can you render the node on its own?
|
|
111
|
+
├─ YES → Tier 3 (figma_get_screenshot per node).
|
|
112
|
+
└─ NO → Tier 4 (CSS placeholder + TODO — last resort only).
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**After Phase 4, if you used Tier 2 or Tier 3 for any asset:**
|
|
116
|
+
|
|
117
|
+
> Tell the user: "The following assets were extracted at reduced quality because the Figma
|
|
118
|
+
> file key was not available: [list]. To replace them with the original source files, run
|
|
119
|
+
> the Tier 1 REST API commands once you have the file key."
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### Tier 1 — REST API (Highest Fidelity)
|
|
124
|
+
|
|
125
|
+
**Requires:** `FILE_KEY` and `FIGMA_TOKEN`.
|
|
126
|
+
|
|
127
|
+
#### Method A — Original Image Fills
|
|
128
|
+
|
|
129
|
+
Downloads the **original uploaded file** at native resolution — never a re-render.
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
# A.1 — all image fill URLs in the file
|
|
133
|
+
curl -s -H "X-Figma-Token: $FIGMA_TOKEN" \
|
|
134
|
+
"https://api.figma.com/v1/files/$FILE_KEY/images" \
|
|
135
|
+
-o /tmp/figma_image_fills.json
|
|
136
|
+
# Response: { "images": { "<imageRef>": "<cdn-url>", ... } }
|
|
137
|
+
|
|
138
|
+
# A.2 — node fill data, to match imageRef → node
|
|
139
|
+
curl -s -H "X-Figma-Token: $FIGMA_TOKEN" \
|
|
140
|
+
"https://api.figma.com/v1/files/$FILE_KEY/nodes?ids=$NODE_IDS" \
|
|
141
|
+
-o /tmp/figma_nodes.json
|
|
142
|
+
# Look for: "fills": [{ "type": "IMAGE", "imageRef": "abc123" }]
|
|
143
|
+
|
|
144
|
+
# A.3 — download
|
|
145
|
+
IMAGE_URL=$(jq -r '.images["<imageRef>"]' /tmp/figma_image_fills.json)
|
|
146
|
+
curl -sL "$IMAGE_URL" -o src/assets/images/hero-background.jpg
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
> **URL expiry:** image fill URLs expire in **14 days**. Download during the session.
|
|
150
|
+
|
|
151
|
+
#### Method B — Node Export (SVG, PNG, JPG)
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# SVG export (logos, icons, illustrations)
|
|
155
|
+
curl -s -H "X-Figma-Token: $FIGMA_TOKEN" \
|
|
156
|
+
"https://api.figma.com/v1/images/$FILE_KEY?ids=$NODE_IDS&format=svg&svg_outline_text=false&contents_only=true" \
|
|
157
|
+
-o /tmp/figma_svg_export.json
|
|
158
|
+
|
|
159
|
+
jq -r '.images | to_entries[] | "\(.key)\t\(.value)"' /tmp/figma_svg_export.json | \
|
|
160
|
+
while IFS=$'\t' read -r nodeId url; do
|
|
161
|
+
filename="$(echo "$nodeId" | tr ':' '-').svg"
|
|
162
|
+
curl -sL "$url" -o "src/assets/icons/$filename"
|
|
163
|
+
done
|
|
164
|
+
|
|
165
|
+
# PNG export at 2× (hero banners, raster compositions)
|
|
166
|
+
curl -s -H "X-Figma-Token: $FIGMA_TOKEN" \
|
|
167
|
+
"https://api.figma.com/v1/images/$FILE_KEY?ids=$NODE_IDS&format=png&scale=2&contents_only=true" \
|
|
168
|
+
-o /tmp/figma_png_export.json
|
|
169
|
+
|
|
170
|
+
jq -r '.images | to_entries[] | "\(.key)\t\(.value)"' /tmp/figma_png_export.json | \
|
|
171
|
+
while IFS=$'\t' read -r nodeId url; do
|
|
172
|
+
filename="$(echo "$nodeId" | tr ':' '-').png"
|
|
173
|
+
curl -sL "$url" -o "src/assets/images/$filename"
|
|
174
|
+
done
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
| Parameter | Value | When to use |
|
|
178
|
+
| ------------------ | ------- | ---------------------------------------------------- |
|
|
179
|
+
| `format` | `svg` | Logos, icons, vector illustrations |
|
|
180
|
+
| `format` | `png` | Hero backgrounds, thumbnails — always pair `scale=2` |
|
|
181
|
+
| `format` | `jpg` | Photos without transparency — use `scale=2` |
|
|
182
|
+
| `scale` | `2` | **Always for PNG/JPG** — retina-quality output |
|
|
183
|
+
| `svg_outline_text` | `false` | Keep text as `<text>` elements (smaller, accessible) |
|
|
184
|
+
| `contents_only` | `true` | Render the node in isolation |
|
|
185
|
+
|
|
186
|
+
> **Export URL expiry:** export URLs expire in **30 days**. Download immediately, then
|
|
187
|
+
> rename each file by purpose.
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
### Tier 2 — Download the Design Context Asset URLs
|
|
192
|
+
|
|
193
|
+
**Use when:** no file key, but `figma_get_design_context` returned asset URLs for the node.
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
curl -sL "<asset-url-from-design-context>" -o src/assets/images/hero-background.png
|
|
197
|
+
curl -sL "<asset-url-from-design-context>" -o src/assets/icons/logo.svg
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Where the URLs appear in the response:
|
|
201
|
+
|
|
202
|
+
- the JSON block of download URLs accompanying the reference code, and
|
|
203
|
+
- `const imgXxx = "…";` declarations at the top of the generated code, referenced by
|
|
204
|
+
`<img src={imgXxx} />` or `background-image`
|
|
205
|
+
|
|
206
|
+
**Limitations:** these are renderer outputs, not originals — vectors may come back
|
|
207
|
+
rasterized, and the URLs expire (a desktop-session URL dies when Figma closes). Download
|
|
208
|
+
before doing anything else, rename descriptively, and flag them in the manifest:
|
|
209
|
+
|
|
210
|
+
```typescript
|
|
211
|
+
// TODO: re-export via Tier 1 REST API once FILE_KEY is available
|
|
212
|
+
heroBg: '/assets/images/hero-background.png',
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
### Tier 3 — `figma_get_screenshot` per Node
|
|
218
|
+
|
|
219
|
+
figma_get_screenshot({ nodeId: "<nodeId>", maxDimension: 2048 }) // session-bound variant; use fileKey only with addressable Figma MCP
|
|
220
|
+
|
|
221
|
+
The response returns a short-lived URL plus a `curl` command — download it straight into the
|
|
222
|
+
assets directory. Raise `maxDimension` for detail; the metadata reports the node's natural
|
|
223
|
+
size so you can tell whether the render was clamped. On the session-bound Figma MCP variant,
|
|
224
|
+
ask the user to select the node first.
|
|
225
|
+
|
|
226
|
+
**Limitations:** a render, not a source file; vectors are rasterized; may include
|
|
227
|
+
surrounding canvas. Label them:
|
|
228
|
+
|
|
229
|
+
```typescript
|
|
230
|
+
// TODO: re-export at higher fidelity via Tier 1 — current version is a node render
|
|
231
|
+
heroBg: '/assets/images/hero-background.png',
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
### Tier 4 — CSS Fallback (Last Resort Only)
|
|
237
|
+
|
|
238
|
+
**Use only when** the layer is confirmed to be a pure color fill or gradient — never because
|
|
239
|
+
extraction felt difficult.
|
|
240
|
+
|
|
241
|
+
```css
|
|
242
|
+
.hero-banner {
|
|
243
|
+
/* TODO: replace with real asset — extraction blocked (no file key, no session URL) */
|
|
244
|
+
background: linear-gradient(135deg, #0d1b3e 0%, #1a0533 100%);
|
|
245
|
+
}
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Include every Tier 4 use in the post-session handoff notes.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Step 4 — Build an Asset Manifest
|
|
253
|
+
|
|
254
|
+
```typescript
|
|
255
|
+
// src/app/<page>/_assets.ts — generated during Phase 1h
|
|
256
|
+
|
|
257
|
+
export const PAGE_ASSETS = {
|
|
258
|
+
// Figma node 123:456 — "Hero/Background" · Tier 1 REST API PNG @2×
|
|
259
|
+
heroBg: '/assets/images/hero-background.jpg',
|
|
260
|
+
|
|
261
|
+
// Figma node 789:012 — "_Logo/Main" · Tier 1 REST API SVG
|
|
262
|
+
logo: '/assets/icons/logo.svg',
|
|
263
|
+
|
|
264
|
+
// Figma node 345:678 — "Card/Thumbnail" · Tier 2 (TODO: re-export)
|
|
265
|
+
cardThumbnail: '/assets/images/card-thumbnail.png',
|
|
266
|
+
} as const;
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Name files by layer purpose, never by node ID.
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Step 5 — Using Assets in Web Components Views
|
|
274
|
+
|
|
275
|
+
### Static images in a Lit template
|
|
276
|
+
|
|
277
|
+
```typescript
|
|
278
|
+
import { PAGE_ASSETS } from './_assets.js';
|
|
279
|
+
|
|
280
|
+
render() {
|
|
281
|
+
return html`
|
|
282
|
+
<img
|
|
283
|
+
src=${PAGE_ASSETS.heroBg}
|
|
284
|
+
alt="Dashboard hero background"
|
|
285
|
+
width="1440" height="600"
|
|
286
|
+
fetchpriority="high"
|
|
287
|
+
/>
|
|
288
|
+
`;
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Always set `width`/`height` (or a CSS aspect ratio) to avoid layout shift, and `alt` for the
|
|
293
|
+
Phase 5g accessibility check. Use `loading="lazy"` for below-the-fold images and
|
|
294
|
+
`fetchpriority="high"` for the LCP image.
|
|
295
|
+
|
|
296
|
+
### Background images in component styles
|
|
297
|
+
|
|
298
|
+
```typescript
|
|
299
|
+
static styles = css`
|
|
300
|
+
.dashboard-hero {
|
|
301
|
+
background-image: url('/assets/images/hero-background.jpg');
|
|
302
|
+
background-size: cover;
|
|
303
|
+
background-position: center;
|
|
304
|
+
}
|
|
305
|
+
`;
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
> **Use root-absolute paths inside `css`.** A Lit `css` template is not a stylesheet file on
|
|
309
|
+
> disk — relative URLs resolve against the *document*, not the component, so `url('../x.png')`
|
|
310
|
+
> breaks on nested routes. Either use `/assets/...`, or let the bundler hash the asset:
|
|
311
|
+
>
|
|
312
|
+
> ```typescript
|
|
313
|
+
> import heroUrl from '../../assets/images/hero-background.jpg';
|
|
314
|
+
> // then: style=${`background-image:url(${heroUrl})`} or a CSS custom property
|
|
315
|
+
> ```
|
|
316
|
+
|
|
317
|
+
### Images inside Ignite UI components
|
|
318
|
+
|
|
319
|
+
Use the component's slot rather than absolute positioning:
|
|
320
|
+
|
|
321
|
+
```html
|
|
322
|
+
<igc-card>
|
|
323
|
+
<igc-card-media><img src="/assets/images/card-thumbnail.png" alt="" /></igc-card-media>
|
|
324
|
+
</igc-card>
|
|
325
|
+
|
|
326
|
+
<igc-avatar src="/assets/images/person.jpg" alt="Jane Doe"></igc-avatar>
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Icons are registered, not extracted
|
|
330
|
+
|
|
331
|
+
```typescript
|
|
332
|
+
import { registerIconFromText } from 'igniteui-webcomponents';
|
|
333
|
+
import logoSvg from '../../assets/icons/logo.svg?raw'; // Vite: ?raw gives the SVG text
|
|
334
|
+
|
|
335
|
+
registerIconFromText('brand-logo', logoSvg, 'app');
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
```html
|
|
339
|
+
<igc-icon name="brand-logo" collection="app"></igc-icon>
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
Registering an extracted SVG lets it inherit `color` and the theme, which a plain `<img>`
|
|
343
|
+
cannot. See `figma-component-map.md § Icons` for the Material Icons Extended setup.
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## Pitfalls
|
|
348
|
+
|
|
349
|
+
| Pitfall | Consequence | Fix |
|
|
350
|
+
| ------------------------------------------------------------ | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
|
|
351
|
+
| Skipping asset extraction (gradient placeholders) | Implementation looks nothing like the design; Phase 5 fails | Always use at least Tier 2 or Tier 3 — never skip |
|
|
352
|
+
| Not asking for the file key before starting | Falls back to Tier 2/3 when Tier 1 was possible | Resolve the file key in Phase 0c / Step 1 |
|
|
353
|
+
| Leaving design-context or CDN URLs in source code | URLs expire in hours to 30 days; production breaks | Download during the session; reference only local paths |
|
|
354
|
+
| Naming assets by node ID (`node-123-456.png`) | Unmaintainable | Name by purpose: `hero-background.jpg`, `company-logo.svg` |
|
|
355
|
+
| Relative `url()` inside a Lit `css` template | 404s on nested routes — the URL resolves against the document | Use `/assets/...` or a bundler import |
|
|
356
|
+
| Putting assets in `src/` in a stock Vite app | Not served or copied; 404 at runtime | Use `public/`, or import the asset so the bundler emits it |
|
|
357
|
+
| Using a node screenshot for an SVG logo | Rasterized logo, no scaling, no theming | Tier 1 Method B with `format=svg` |
|
|
358
|
+
| Exporting PNG at `scale=1` | Blurry on HiDPI screens | Always `scale=2` |
|
|
359
|
+
| `svg_outline_text=true` (the default) | Text converted to paths; larger file; no accessibility | Set `svg_outline_text=false` |
|
|
360
|
+
| Extracting kit component instances as images | A static picture instead of a working component | Check `figma-component-map.md` — those are components |
|
|
361
|
+
| Extracting registerable icons as PNGs | Icons cannot inherit theme color | Register the SVG and use `<igc-icon>` |
|
|
362
|
+
| Extracting background colors or gradients as images | Bundle bloat, breaks theming | Colors → palette variables and component tokens |
|
|
363
|
+
| Not creating asset directories before `curl` | Silent failures or files in the wrong place | `mkdir -p` first |
|