Repository: getflip/swirl
Pull request #1032: Add leading icon to text input
Author: login: AshleyBekemeier
Created: 2025-04-15T12:45:45Z | Merged: 2025-04-16T08:01:39Z

## Summary

- [Ticket](#)
- [Design](#)
- [Storybook](#)

## Review Checklist

### General

- [ ] [Changeset added](https://github.com/changesets/changesets/blob/main/docs/intro-to-using-changesets.md)
- [ ] The submitted code is organized and formatted according to our [💅 Style Guide](https://swirl-storybook.flip-app.dev/?path=/docs/requirements-style-guide--docs).
  - [ ] The code is formatted with Prettier.
  - [ ] There are no linting errors.

### For new or updated components

https://swirl-storybook.flip-app.dev/?path=/docs/contributions-merge-publish--page

- [ ] The changes do not contain any breaking changes.
- [ ] The changes do not introduce new components that don't belong in the library (e.g. non-reusable components, highly specialized components, components including business logic)
- [ ] The component documentation is updated.
- [ ] The changes meet the [🤖 testing requirements](https://swirl-storybook.flip-app.dev/?path=/docs/requirements-testing--docs).
  - [ ] New features are tested.
  - [ ] In case of bug fixes, regression tests have been added.
  - [ ] All tests are 🟢.
- [ ] The changes meet the [🧏‍♀️ accessibility requirements](https://swirl-storybook.flip-app.dev/?path=/docs/requirements-accessibility--docs).
  - [ ] WCAG 2.1 Level A and Level AA requirements are met.
  - [ ] The Storybook a11y addon shows no errors.
  - [ ] The changes have been tested with a screen reader.
  - [ ] Keyboard controls have been tested, if applicable.
  - [ ] Components implementing form controls (inputs, buttons, selects, etc.) do not use Shadow DOM, and instead use Stencil's scoping mechanism
- [ ] The changes use our [🌈 theming concept](https://swirl-storybook.flip-app.dev/?path=/docs/requirements-theming--docs).
  - [ ] Design tokens have been used where appropriate.
  - [ ] The component has been visually checked in combination with the "Light" and "Dark" theme.
- [ ] The changes meet our [🌍 internationalization requirements](https://swirl-storybook.flip-app.dev/?path=/docs/requirements-internationalization--docs).
  - [ ] No static text is used.
  - [ ] The component doesn't break with longer texts or different text wrappings.
  - [ ] Number, currency and date values can be formatted appropriately.
- [ ] The changes work in all supported browsers and viewports. See [📱 Responsive Design](https://swirl-storybook.flip-app.dev/?path=/docs/requirements-responsive-design--docs)



Diff:
diff --git a/.changeset/short-kings-trade.md b/.changeset/short-kings-trade.md
new file mode 100644
index 000000000..d5cd50d40
--- /dev/null
+++ b/.changeset/short-kings-trade.md
@@ -0,0 +1,8 @@
+---
+"@getflip/swirl-components": minor
+"@getflip/swirl-icons": minor
+"@getflip/swirl-components-angular": minor
+"@getflip/swirl-components-react": minor
+---
+
+Add location icon and new icon slot to form control
diff --git a/packages/swirl-components/icons.json b/packages/swirl-components/icons.json
index 0acd42137..c9e79a73a 100644
--- a/packages/swirl-components/icons.json
+++ b/packages/swirl-components/icons.json
@@ -1 +1 @@
-{"Add":{"id":"Add","name":"add"},"AddModerator":{"id":"AddModerator","name":"add-moderator"},"AddPhoto":{"id":"AddPhoto","name":"add-photo"},"AddReaction":{"id":"AddReaction","name":"add-reaction"},"AdminPanelSettings":{"id":"AdminPanelSettings","name":"admin-panel-settings"},"Ai":{"id":"Ai","name":"ai"},"AiFilled":{"id":"AiFilled","name":"ai-filled"},"Apps":{"id":"Apps","name":"apps"},"ArrowBack":{"id":"ArrowBack","name":"arrow-back"},"ArrowDownward":{"id":"ArrowDownward","name":"arrow-downward"},"ArrowForward":{"id":"ArrowForward","name":"arrow-forward"},"ArrowLeft":{"id":"ArrowLeft","name":"arrow-left"},"ArrowRight":{"id":"ArrowRight","name":"arrow-right"},"ArrowRightSmall":{"id":"ArrowRightSmall","name":"arrow-right-small"},"ArrowUpward":{"id":"ArrowUpward","name":"arrow-upward"},"AspectRatio":{"id":"AspectRatio","name":"aspect-ratio"},"Attachment":{"id":"Attachment","name":"attachment"},"BarChart":{"id":"BarChart","name":"bar-chart"},"Block":{"id":"Block","name":"block"},"Bookmark":{"id":"Bookmark","name":"bookmark"},"BookmarkFilled":{"id":"BookmarkFilled","name":"bookmark-filled"},"Call":{"id":"Call","name":"call"},"CallEnd":{"id":"CallEnd","name":"call-end"},"Cancel":{"id":"Cancel","name":"cancel"},"ChatBubble":{"id":"ChatBubble","name":"chat-bubble"},"Chats":{"id":"Chats","name":"chats"},"ChatsFilled":{"id":"ChatsFilled","name":"chats-filled"},"Check":{"id":"Check","name":"check"},"CheckCircle":{"id":"CheckCircle","name":"check-circle"},"CheckSmall":{"id":"CheckSmall","name":"check-small"},"CheckStrong":{"id":"CheckStrong","name":"check-strong"},"ChevronLeft":{"id":"ChevronLeft","name":"chevron-left"},"ChevronRight":{"id":"ChevronRight","name":"chevron-right"},"Close":{"id":"Close","name":"close"},"CloseSmall":{"id":"CloseSmall","name":"close-small"},"CloudUpload":{"id":"CloudUpload","name":"cloud-upload"},"Column":{"id":"Column","name":"column"},"Comment":{"id":"Comment","name":"comment"},"Contrast":{"id":"Contrast","name":"contrast"},"Copy":{"id":"Copy","name":"copy"},"Crop":{"id":"Crop","name":"crop"},"DarkMode":{"id":"DarkMode","name":"dark-mode"},"DateRange":{"id":"DateRange","name":"date-range"},"Delete":{"id":"Delete","name":"delete"},"DeployedCode":{"id":"DeployedCode","name":"deployed-code"},"Description":{"id":"Description","name":"description"},"Desktop":{"id":"Desktop","name":"desktop"},"Directory":{"id":"Directory","name":"directory"},"DirectoryFilled":{"id":"DirectoryFilled","name":"directory-filled"},"Discover":{"id":"Discover","name":"discover"},"DockLeft":{"id":"DockLeft","name":"dock-left"},"DockLeftCollapse":{"id":"DockLeftCollapse","name":"dock-left-collapse"},"DockLeftExpand":{"id":"DockLeftExpand","name":"dock-left-expand"},"DoorOpen":{"id":"DoorOpen","name":"door-open"},"Dot":{"id":"Dot","name":"dot"},"DoubleArrowLeft":{"id":"DoubleArrowLeft","name":"double-arrow-left"},"DoubleArrowRight":{"id":"DoubleArrowRight","name":"double-arrow-right"},"Download":{"id":"Download","name":"download"},"DragHandle":{"id":"DragHandle","name":"drag-handle"},"Edit":{"id":"Edit","name":"edit"},"EmojiMood":{"id":"EmojiMood","name":"emoji-mood"},"EmojiSatisfied":{"id":"EmojiSatisfied","name":"emoji-satisfied"},"Error":{"id":"Error","name":"error"},"ExpandLess":{"id":"ExpandLess","name":"expand-less"},"ExpandMore":{"id":"ExpandMore","name":"expand-more"},"Experiment":{"id":"Experiment","name":"experiment"},"File":{"id":"File","name":"file"},"FileCopy":{"id":"FileCopy","name":"file-copy"},"Filter":{"id":"Filter","name":"filter"},"Folder":{"id":"Folder","name":"folder"},"FolderShared":{"id":"FolderShared","name":"folder-shared"},"FormatHOne":{"id":"FormatHOne","name":"format-h-one"},"Fullscreen":{"id":"Fullscreen","name":"fullscreen"},"FullscreenExit":{"id":"FullscreenExit","name":"fullscreen-exit"},"Gif":{"id":"Gif","name":"gif"},"GroupAdd":{"id":"GroupAdd","name":"group-add"},"GroupAssign":{"id":"GroupAssign","name":"group-assign"},"Groups":{"id":"Groups","name":"groups"},"GroupsFilled":{"id":"GroupsFilled","name":"groups-filled"},"HamburgerMenu":{"id":"HamburgerMenu","name":"hamburger-menu"},"Help":{"id":"Help","name":"help"},"Highlight":{"id":"Highlight","name":"highlight"},"History":{"id":"History","name":"history"},"Home":{"id":"Home","name":"home"},"Image":{"id":"Image","name":"image"},"ImproveText":{"id":"ImproveText","name":"improve-text"},"Info":{"id":"Info","name":"info"},"InsertBelow":{"id":"InsertBelow","name":"insert-below"},"InsertOnTop":{"id":"InsertOnTop","name":"insert-on-top"},"Inventory":{"id":"Inventory","name":"inventory"},"InventoryOff":{"id":"InventoryOff","name":"inventory-off"},"Key":{"id":"Key","name":"key"},"Keyboard":{"id":"Keyboard","name":"keyboard"},"KeyboardHide":{"id":"KeyboardHide","name":"keyboard-hide"},"LightMode":{"id":"LightMode","name":"light-mode"},"Like":{"id":"Like","name":"like"},"Link":{"id":"Link","name":"link"},"Live":{"id":"Live","name":"live"},"Load":{"id":"Load","name":"load"},"Lock":{"id":"Lock","name":"lock"},"LockOpen":{"id":"LockOpen","name":"lock-open"},"LockPerson":{"id":"LockPerson","name":"lock-person"},"Login":{"id":"Login","name":"login"},"Logout":{"id":"Logout","name":"logout"},"LongText":{"id":"LongText","name":"long-text"},"Mail":{"id":"Mail","name":"mail"},"ManageAccounts":{"id":"ManageAccounts","name":"manage-accounts"},"MarkChatRead":{"id":"MarkChatRead","name":"mark-chat-read"},"MarkChatUnread":{"id":"MarkChatUnread","name":"mark-chat-unread"},"Mention":{"id":"Mention","name":"mention"},"Menu":{"id":"Menu","name":"menu"},"MenuBook":{"id":"MenuBook","name":"menu-book"},"MenuBookFilled":{"id":"MenuBookFilled","name":"menu-book-filled"},"MenuFilled":{"id":"MenuFilled","name":"menu-filled"},"Message":{"id":"Message","name":"message"},"Mic":{"id":"Mic","name":"mic"},"MicOff":{"id":"MicOff","name":"mic-off"},"MoreHorizontal":{"id":"MoreHorizontal","name":"more-horizontal"},"MoreVertikal":{"id":"MoreVertikal","name":"more-vertikal"},"News":{"id":"News","name":"news"},"NewsFilled":{"id":"NewsFilled","name":"news-filled"},"NewsOff":{"id":"NewsOff","name":"news-off"},"Notifications":{"id":"Notifications","name":"notifications"},"NotificationsActive":{"id":"NotificationsActive","name":"notifications-active"},"NotificationsOff":{"id":"NotificationsOff","name":"notifications-off"},"OpenInFull":{"id":"OpenInFull","name":"open-in-full"},"OpenInNew":{"id":"OpenInNew","name":"open-in-new"},"Pause":{"id":"Pause","name":"pause"},"PauseCircle":{"id":"PauseCircle","name":"pause-circle"},"PeopleAlt":{"id":"PeopleAlt","name":"people-alt"},"Person":{"id":"Person","name":"person"},"PersonOff":{"id":"PersonOff","name":"person-off"},"Phone":{"id":"Phone","name":"phone"},"PhotoCamera":{"id":"PhotoCamera","name":"photo-camera"},"PictureInPicture":{"id":"PictureInPicture","name":"picture-in-picture"},"Pin":{"id":"Pin","name":"pin"},"PinOff":{"id":"PinOff","name":"pin-off"},"Place":{"id":"Place","name":"place"},"PlayArrow":{"id":"PlayArrow","name":"play-arrow"},"Poll":{"id":"Poll","name":"poll"},"PostApproval":{"id":"PostApproval","name":"post-approval"},"Present":{"id":"Present","name":"present"},"Print":{"id":"Print","name":"print"},"Public":{"id":"Public","name":"public"},"PublicOff":{"id":"PublicOff","name":"public-off"},"RatioFourToThree":{"id":"RatioFourToThree","name":"ratio-four-to-three"},"RatioFreeform":{"id":"RatioFreeform","name":"ratio-freeform"},"RatioSixteenToNine":{"id":"RatioSixteenToNine","name":"ratio-sixteen-to-nine"},"RatioSquare":{"id":"RatioSquare","name":"ratio-square"},"RatioThreeToFour":{"id":"RatioThreeToFour","name":"ratio-three-to-four"},"RatioThreeToTwo":{"id":"RatioThreeToTwo","name":"ratio-three-to-two"},"Recieved":{"id":"Recieved","name":"recieved"},"Remove":{"id":"Remove","name":"remove"},"RemoveCircle":{"id":"RemoveCircle","name":"remove-circle"},"RemoveModerator":{"id":"RemoveModerator","name":"remove-moderator"},"Reply":{"id":"Reply","name":"reply"},"Report":{"id":"Report","name":"report"},"Roadmap":{"id":"Roadmap","name":"roadmap"},"RotateLeft":{"id":"RotateLeft","name":"rotate-left"},"RotateRight":{"id":"RotateRight","name":"rotate-right"},"Screenshare":{"id":"Screenshare","name":"screenshare"},"ScreenshareOff":{"id":"ScreenshareOff","name":"screenshare-off"},"Search":{"id":"Search","name":"search"},"SearchStrong":{"id":"SearchStrong","name":"search-strong"},"Secure":{"id":"Secure","name":"secure"},"Send":{"id":"Send","name":"send"},"Settings":{"id":"Settings","name":"settings"},"ShortText":{"id":"ShortText","name":"short-text"},"Simplify":{"id":"Simplify","name":"simplify"},"Spellcheck":{"id":"Spellcheck","name":"spellcheck"},"Stars":{"id":"Stars","name":"stars"},"Stop":{"id":"Stop","name":"stop"},"StopCircle":{"id":"StopCircle","name":"stop-circle"},"Sync":{"id":"Sync","name":"sync"},"Tasks":{"id":"Tasks","name":"tasks"},"TasksFilled":{"id":"TasksFilled","name":"tasks-filled"},"Terminal":{"id":"Terminal","name":"terminal"},"Time":{"id":"Time","name":"time"},"TimeFilled":{"id":"TimeFilled","name":"time-filled"},"Today":{"id":"Today","name":"today"},"TodayFilled":{"id":"TodayFilled","name":"today-filled"},"Translate":{"id":"Translate","name":"translate"},"TreeStructure":{"id":"TreeStructure","name":"tree-structure"},"Undo":{"id":"Undo","name":"undo"},"UnlockPerson":{"id":"UnlockPerson","name":"unlock-person"},"UserAdd":{"id":"UserAdd","name":"user-add"},"UserAssign":{"id":"UserAssign","name":"user-assign"},"VideoCamera":{"id":"VideoCamera","name":"video-camera"},"VideoCameraOff":{"id":"VideoCameraOff","name":"video-camera-off"},"VideoLibrary":{"id":"VideoLibrary","name":"video-library"},"VideoPlayer":{"id":"VideoPlayer","name":"video-player"},"ViewAgenda":{"id":"ViewAgenda","name":"view-agenda"},"Visibility":{"id":"Visibility","name":"visibility"},"VisibilityOff":{"id":"VisibilityOff","name":"visibility-off"},"Voice":{"id":"Voice","name":"voice"},"VolumeUp":{"id":"VolumeUp","name":"volume-up"},"Warning":{"id":"Warning","name":"warning"},"WebAsset":{"id":"WebAsset","name":"web-asset"},"WebAssetOff":{"id":"WebAssetOff","name":"web-asset-off"},"Work":{"id":"Work","name":"work"}}
\ No newline at end of file
+{"Add":{"id":"Add","name":"add"},"AddModerator":{"id":"AddModerator","name":"add-moderator"},"AddPhoto":{"id":"AddPhoto","name":"add-photo"},"AddReaction":{"id":"AddReaction","name":"add-reaction"},"AdminPanelSettings":{"id":"AdminPanelSettings","name":"admin-panel-settings"},"Ai":{"id":"Ai","name":"ai"},"AiFilled":{"id":"AiFilled","name":"ai-filled"},"Apps":{"id":"Apps","name":"apps"},"ArrowBack":{"id":"ArrowBack","name":"arrow-back"},"ArrowDownward":{"id":"ArrowDownward","name":"arrow-downward"},"ArrowForward":{"id":"ArrowForward","name":"arrow-forward"},"ArrowLeft":{"id":"ArrowLeft","name":"arrow-left"},"ArrowRight":{"id":"ArrowRight","name":"arrow-right"},"ArrowRightSmall":{"id":"ArrowRightSmall","name":"arrow-right-small"},"ArrowUpward":{"id":"ArrowUpward","name":"arrow-upward"},"AspectRatio":{"id":"AspectRatio","name":"aspect-ratio"},"Attachment":{"id":"Attachment","name":"attachment"},"BarChart":{"id":"BarChart","name":"bar-chart"},"Block":{"id":"Block","name":"block"},"Bookmark":{"id":"Bookmark","name":"bookmark"},"BookmarkFilled":{"id":"BookmarkFilled","name":"bookmark-filled"},"Call":{"id":"Call","name":"call"},"CallEnd":{"id":"CallEnd","name":"call-end"},"Cancel":{"id":"Cancel","name":"cancel"},"ChatBubble":{"id":"ChatBubble","name":"chat-bubble"},"Chats":{"id":"Chats","name":"chats"},"ChatsFilled":{"id":"ChatsFilled","name":"chats-filled"},"Check":{"id":"Check","name":"check"},"CheckCircle":{"id":"CheckCircle","name":"check-circle"},"CheckSmall":{"id":"CheckSmall","name":"check-small"},"CheckStrong":{"id":"CheckStrong","name":"check-strong"},"ChevronLeft":{"id":"ChevronLeft","name":"chevron-left"},"ChevronRight":{"id":"ChevronRight","name":"chevron-right"},"Close":{"id":"Close","name":"close"},"CloseSmall":{"id":"CloseSmall","name":"close-small"},"CloudUpload":{"id":"CloudUpload","name":"cloud-upload"},"Column":{"id":"Column","name":"column"},"Comment":{"id":"Comment","name":"comment"},"Contrast":{"id":"Contrast","name":"contrast"},"Copy":{"id":"Copy","name":"copy"},"Crop":{"id":"Crop","name":"crop"},"DarkMode":{"id":"DarkMode","name":"dark-mode"},"DateRange":{"id":"DateRange","name":"date-range"},"Delete":{"id":"Delete","name":"delete"},"DeployedCode":{"id":"DeployedCode","name":"deployed-code"},"Description":{"id":"Description","name":"description"},"Desktop":{"id":"Desktop","name":"desktop"},"Directory":{"id":"Directory","name":"directory"},"DirectoryFilled":{"id":"DirectoryFilled","name":"directory-filled"},"Discover":{"id":"Discover","name":"discover"},"DockLeft":{"id":"DockLeft","name":"dock-left"},"DockLeftCollapse":{"id":"DockLeftCollapse","name":"dock-left-collapse"},"DockLeftExpand":{"id":"DockLeftExpand","name":"dock-left-expand"},"DoorOpen":{"id":"DoorOpen","name":"door-open"},"Dot":{"id":"Dot","name":"dot"},"DoubleArrowLeft":{"id":"DoubleArrowLeft","name":"double-arrow-left"},"DoubleArrowRight":{"id":"DoubleArrowRight","name":"double-arrow-right"},"Download":{"id":"Download","name":"download"},"DragHandle":{"id":"DragHandle","name":"drag-handle"},"Edit":{"id":"Edit","name":"edit"},"EmojiMood":{"id":"EmojiMood","name":"emoji-mood"},"EmojiSatisfied":{"id":"EmojiSatisfied","name":"emoji-satisfied"},"Error":{"id":"Error","name":"error"},"ExpandLess":{"id":"ExpandLess","name":"expand-less"},"ExpandMore":{"id":"ExpandMore","name":"expand-more"},"Experiment":{"id":"Experiment","name":"experiment"},"File":{"id":"File","name":"file"},"FileCopy":{"id":"FileCopy","name":"file-copy"},"Filter":{"id":"Filter","name":"filter"},"Folder":{"id":"Folder","name":"folder"},"FolderShared":{"id":"FolderShared","name":"folder-shared"},"FormatHOne":{"id":"FormatHOne","name":"format-h-one"},"Fullscreen":{"id":"Fullscreen","name":"fullscreen"},"FullscreenExit":{"id":"FullscreenExit","name":"fullscreen-exit"},"Gif":{"id":"Gif","name":"gif"},"GroupAdd":{"id":"GroupAdd","name":"group-add"},"GroupAssign":{"id":"GroupAssign","name":"group-assign"},"Groups":{"id":"Groups","name":"groups"},"GroupsFilled":{"id":"GroupsFilled","name":"groups-filled"},"HamburgerMenu":{"id":"HamburgerMenu","name":"hamburger-menu"},"Help":{"id":"Help","name":"help"},"Highlight":{"id":"Highlight","name":"highlight"},"History":{"id":"History","name":"history"},"Home":{"id":"Home","name":"home"},"Image":{"id":"Image","name":"image"},"ImproveText":{"id":"ImproveText","name":"improve-text"},"Info":{"id":"Info","name":"info"},"InsertBelow":{"id":"InsertBelow","name":"insert-below"},"InsertOnTop":{"id":"InsertOnTop","name":"insert-on-top"},"Inventory":{"id":"Inventory","name":"inventory"},"InventoryOff":{"id":"InventoryOff","name":"inventory-off"},"Key":{"id":"Key","name":"key"},"Keyboard":{"id":"Keyboard","name":"keyboard"},"KeyboardHide":{"id":"KeyboardHide","name":"keyboard-hide"},"LightMode":{"id":"LightMode","name":"light-mode"},"Like":{"id":"Like","name":"like"},"Link":{"id":"Link","name":"link"},"Live":{"id":"Live","name":"live"},"Load":{"id":"Load","name":"load"},"LocationOn":{"id":"LocationOn","name":"location-on"},"Lock":{"id":"Lock","name":"lock"},"LockOpen":{"id":"LockOpen","name":"lock-open"},"LockPerson":{"id":"LockPerson","name":"lock-person"},"Login":{"id":"Login","name":"login"},"Logout":{"id":"Logout","name":"logout"},"LongText":{"id":"LongText","name":"long-text"},"Mail":{"id":"Mail","name":"mail"},"ManageAccounts":{"id":"ManageAccounts","name":"manage-accounts"},"MarkChatRead":{"id":"MarkChatRead","name":"mark-chat-read"},"MarkChatUnread":{"id":"MarkChatUnread","name":"mark-chat-unread"},"Mention":{"id":"Mention","name":"mention"},"Menu":{"id":"Menu","name":"menu"},"MenuBook":{"id":"MenuBook","name":"menu-book"},"MenuBookFilled":{"id":"MenuBookFilled","name":"menu-book-filled"},"MenuFilled":{"id":"MenuFilled","name":"menu-filled"},"Message":{"id":"Message","name":"message"},"Mic":{"id":"Mic","name":"mic"},"MicOff":{"id":"MicOff","name":"mic-off"},"MoreHorizontal":{"id":"MoreHorizontal","name":"more-horizontal"},"MoreVertikal":{"id":"MoreVertikal","name":"more-vertikal"},"News":{"id":"News","name":"news"},"NewsFilled":{"id":"NewsFilled","name":"news-filled"},"NewsOff":{"id":"NewsOff","name":"news-off"},"Notifications":{"id":"Notifications","name":"notifications"},"NotificationsActive":{"id":"NotificationsActive","name":"notifications-active"},"NotificationsOff":{"id":"NotificationsOff","name":"notifications-off"},"OpenInFull":{"id":"OpenInFull","name":"open-in-full"},"OpenInNew":{"id":"OpenInNew","name":"open-in-new"},"Pause":{"id":"Pause","name":"pause"},"PauseCircle":{"id":"PauseCircle","name":"pause-circle"},"PeopleAlt":{"id":"PeopleAlt","name":"people-alt"},"Person":{"id":"Person","name":"person"},"PersonOff":{"id":"PersonOff","name":"person-off"},"Phone":{"id":"Phone","name":"phone"},"PhotoCamera":{"id":"PhotoCamera","name":"photo-camera"},"PictureInPicture":{"id":"PictureInPicture","name":"picture-in-picture"},"Pin":{"id":"Pin","name":"pin"},"PinOff":{"id":"PinOff","name":"pin-off"},"Place":{"id":"Place","name":"place"},"PlayArrow":{"id":"PlayArrow","name":"play-arrow"},"Poll":{"id":"Poll","name":"poll"},"PostApproval":{"id":"PostApproval","name":"post-approval"},"Present":{"id":"Present","name":"present"},"Print":{"id":"Print","name":"print"},"Public":{"id":"Public","name":"public"},"PublicOff":{"id":"PublicOff","name":"public-off"},"RatioFourToThree":{"id":"RatioFourToThree","name":"ratio-four-to-three"},"RatioFreeform":{"id":"RatioFreeform","name":"ratio-freeform"},"RatioSixteenToNine":{"id":"RatioSixteenToNine","name":"ratio-sixteen-to-nine"},"RatioSquare":{"id":"RatioSquare","name":"ratio-square"},"RatioThreeToFour":{"id":"RatioThreeToFour","name":"ratio-three-to-four"},"RatioThreeToTwo":{"id":"RatioThreeToTwo","name":"ratio-three-to-two"},"Recieved":{"id":"Recieved","name":"recieved"},"Remove":{"id":"Remove","name":"remove"},"RemoveCircle":{"id":"RemoveCircle","name":"remove-circle"},"RemoveModerator":{"id":"RemoveModerator","name":"remove-moderator"},"Reply":{"id":"Reply","name":"reply"},"Report":{"id":"Report","name":"report"},"Roadmap":{"id":"Roadmap","name":"roadmap"},"RotateLeft":{"id":"RotateLeft","name":"rotate-left"},"RotateRight":{"id":"RotateRight","name":"rotate-right"},"Screenshare":{"id":"Screenshare","name":"screenshare"},"ScreenshareOff":{"id":"ScreenshareOff","name":"screenshare-off"},"Search":{"id":"Search","name":"search"},"SearchStrong":{"id":"SearchStrong","name":"search-strong"},"Secure":{"id":"Secure","name":"secure"},"Send":{"id":"Send","name":"send"},"Settings":{"id":"Settings","name":"settings"},"ShortText":{"id":"ShortText","name":"short-text"},"Simplify":{"id":"Simplify","name":"simplify"},"Spellcheck":{"id":"Spellcheck","name":"spellcheck"},"Stars":{"id":"Stars","name":"stars"},"Stop":{"id":"Stop","name":"stop"},"StopCircle":{"id":"StopCircle","name":"stop-circle"},"Sync":{"id":"Sync","name":"sync"},"Tasks":{"id":"Tasks","name":"tasks"},"TasksFilled":{"id":"TasksFilled","name":"tasks-filled"},"Terminal":{"id":"Terminal","name":"terminal"},"Time":{"id":"Time","name":"time"},"TimeFilled":{"id":"TimeFilled","name":"time-filled"},"Today":{"id":"Today","name":"today"},"TodayFilled":{"id":"TodayFilled","name":"today-filled"},"Translate":{"id":"Translate","name":"translate"},"TreeStructure":{"id":"TreeStructure","name":"tree-structure"},"Undo":{"id":"Undo","name":"undo"},"UnlockPerson":{"id":"UnlockPerson","name":"unlock-person"},"UserAdd":{"id":"UserAdd","name":"user-add"},"UserAssign":{"id":"UserAssign","name":"user-assign"},"VideoCamera":{"id":"VideoCamera","name":"video-camera"},"VideoCameraOff":{"id":"VideoCameraOff","name":"video-camera-off"},"VideoLibrary":{"id":"VideoLibrary","name":"video-library"},"VideoPlayer":{"id":"VideoPlayer","name":"video-player"},"ViewAgenda":{"id":"ViewAgenda","name":"view-agenda"},"Visibility":{"id":"Visibility","name":"visibility"},"VisibilityOff":{"id":"VisibilityOff","name":"visibility-off"},"Voice":{"id":"Voice","name":"voice"},"VolumeUp":{"id":"VolumeUp","name":"volume-up"},"Warning":{"id":"Warning","name":"warning"},"WebAsset":{"id":"WebAsset","name":"web-asset"},"WebAssetOff":{"id":"WebAssetOff","name":"web-asset-off"},"Work":{"id":"Work","name":"work"}}
\ No newline at end of file
diff --git a/packages/swirl-components/src/components.d.ts b/packages/swirl-components/src/components.d.ts
index 14183029e..0ab36b21e 100644
--- a/packages/swirl-components/src/components.d.ts
+++ b/packages/swirl-components/src/components.d.ts
@@ -730,6 +730,7 @@ export namespace Components {
         "errorMessage"?: string;
         "fontSize"?: SwirlFormControlFontSize;
         "hideLabel"?: boolean;
+        "icon"?: string;
         "inline"?: boolean;
         "invalid"?: boolean;
         "label": string;
@@ -1151,6 +1152,10 @@ export namespace Components {
         "color"?: SwirlIconColor1;
         "size": SwirlIconSize;
     }
+    interface SwirlIconLocationOn {
+        "color"?: SwirlIconColor1;
+        "size": SwirlIconSize;
+    }
     interface SwirlIconLock {
         "color"?: SwirlIconColor1;
         "size": SwirlIconSize;
@@ -2343,6 +2348,7 @@ export namespace Components {
         "focusInput": () => Promise<void>;
         "fontSize"?: SwirlTextInputFontSize;
         "inline"?: boolean;
+        "inputName"?: string;
         "invalid"?: boolean;
         "max"?: number;
         "maxLength"?: number;
@@ -3958,6 +3964,12 @@ declare global {
         prototype: HTMLSwirlIconLoadElement;
         new (): HTMLSwirlIconLoadElement;
     };
+    interface HTMLSwirlIconLocationOnElement extends Components.SwirlIconLocationOn, HTMLStencilElement {
+    }
+    var HTMLSwirlIconLocationOnElement: {
+        prototype: HTMLSwirlIconLocationOnElement;
+        new (): HTMLSwirlIconLocationOnElement;
+    };
     interface HTMLSwirlIconLockElement extends Components.SwirlIconLock, HTMLStencilElement {
     }
     var HTMLSwirlIconLockElement: {
@@ -5832,6 +5844,7 @@ declare global {
         "swirl-icon-link": HTMLSwirlIconLinkElement;
         "swirl-icon-live": HTMLSwirlIconLiveElement;
         "swirl-icon-load": HTMLSwirlIconLoadElement;
+        "swirl-icon-location-on": HTMLSwirlIconLocationOnElement;
         "swirl-icon-lock": HTMLSwirlIconLockElement;
         "swirl-icon-lock-open": HTMLSwirlIconLockOpenElement;
         "swirl-icon-lock-person": HTMLSwirlIconLockPersonElement;
@@ -6562,6 +6575,7 @@ declare namespace LocalJSX {
         "errorMessage"?: string;
         "fontSize"?: SwirlFormControlFontSize;
         "hideLabel"?: boolean;
+        "icon"?: string;
         "inline"?: boolean;
         "invalid"?: boolean;
         "label": string;
@@ -6983,6 +6997,10 @@ declare namespace LocalJSX {
         "color"?: SwirlIconColor1;
         "size"?: SwirlIconSize;
     }
+    interface SwirlIconLocationOn {
+        "color"?: SwirlIconColor1;
+        "size"?: SwirlIconSize;
+    }
     interface SwirlIconLock {
         "color"?: SwirlIconColor1;
         "size"?: SwirlIconSize;
@@ -8101,6 +8119,7 @@ declare namespace LocalJSX {
         "disabled"?: boolean;
         "fontSize"?: SwirlTextInputFontSize;
         "inline"?: boolean;
+        "inputName"?: string;
         "invalid"?: boolean;
         "max"?: number;
         "maxLength"?: number;
@@ -8406,6 +8425,7 @@ declare namespace LocalJSX {
         "swirl-icon-link": SwirlIconLink;
         "swirl-icon-live": SwirlIconLive;
         "swirl-icon-load": SwirlIconLoad;
+        "swirl-icon-location-on": SwirlIconLocationOn;
         "swirl-icon-lock": SwirlIconLock;
         "swirl-icon-lock-open": SwirlIconLockOpen;
         "swirl-icon-lock-person": SwirlIconLockPerson;
@@ -8791,6 +8811,7 @@ declare module "@stencil/core" {
             "swirl-icon-link": LocalJSX.SwirlIconLink & JSXBase.HTMLAttributes<HTMLSwirlIconLinkElement>;
             "swirl-icon-live": LocalJSX.SwirlIconLive & JSXBase.HTMLAttributes<HTMLSwirlIconLiveElement>;
             "swirl-icon-load": LocalJSX.SwirlIconLoad & JSXBase.HTMLAttributes<HTMLSwirlIconLoadElement>;
+            "swirl-icon-location-on": LocalJSX.SwirlIconLocationOn & JSXBase.HTMLAttributes<HTMLSwirlIconLocationOnElement>;
             "swirl-icon-lock": LocalJSX.SwirlIconLock & JSXBase.HTMLAttributes<HTMLSwirlIconLockElement>;
             "swirl-icon-lock-open": LocalJSX.SwirlIconLockOpen & JSXBase.HTMLAttributes<HTMLSwirlIconLockOpenElement>;
             "swirl-icon-lock-person": LocalJSX.SwirlIconLockPerson & JSXBase.HTMLAttributes<HTMLSwirlIconLockPersonElement>;
diff --git a/packages/swirl-components/src/components/swirl-form-control/swirl-form-control.css b/packages/swirl-components/src/components/swirl-form-control/swirl-form-control.css
index e1a229513..5b2bb405d 100644
--- a/packages/swirl-components/src/components/swirl-form-control/swirl-form-control.css
+++ b/packages/swirl-components/src/components/swirl-form-control/swirl-form-control.css
@@ -401,6 +401,26 @@
   }
 }
 
+.form-control__icon {
+  position: absolute;
+  top: 0px;
+  bottom: 0px;
+  margin: auto;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: var(--s-space-20);
+}
+
+.form-control--has-icon {
+  .form-control__label-text {
+    margin-left: calc(var(--s-space-20) + var(--s-space-12));
+  }
+  .form-control__input {
+    margin-left: calc(var(--s-space-20) + var(--s-space-12));
+  }
+}
+
 .form-control__description {
   display: block;
   margin-top: var(--s-space-4);
diff --git a/packages/swirl-components/src/components/swirl-form-control/swirl-form-control.stories.ts b/packages/swirl-components/src/components/swirl-form-control/swirl-form-control.stories.ts
index fd97623ec..19325870d 100644
--- a/packages/swirl-components/src/components/swirl-form-control/swirl-form-control.stories.ts
+++ b/packages/swirl-components/src/components/swirl-form-control/swirl-form-control.stories.ts
@@ -152,6 +152,16 @@ const Template = (args) => {
     <div contenteditable="plaintext-only" role="textbox"></div>
   `;
 
+  const iconPrefix = generateStoryElement("swirl-form-control", {
+    ...args,
+    label: "With leading Icon",
+    icon: "location-on",
+  });
+
+  iconPrefix.innerHTML = `
+    <swirl-text-input type="text"></swirl-text-input>
+  `;
+
   container.append(
     "\n  ",
     textInput,
@@ -171,6 +181,8 @@ const Template = (args) => {
     multilineInput,
     "\n  ",
     contenteditable,
+    "\n",
+    iconPrefix,
     "\n"
   );
 
diff --git a/packages/swirl-components/src/components/swirl-form-control/swirl-form-control.tsx b/packages/swirl-components/src/components/swirl-form-control/swirl-form-control.tsx
index aa8401629..ad4765cef 100644
--- a/packages/swirl-components/src/components/swirl-form-control/swirl-form-control.tsx
+++ b/packages/swirl-components/src/components/swirl-form-control/swirl-form-control.tsx
@@ -16,8 +16,8 @@ export type SwirlFormControlFontSize = "default" | "sm" | "base";
 export type SwirlFormControlLabelPosition = "inside" | "outside";
 
 /**
+ * @slot prefix - The prefix element, e.g. `<select slot="prefix">…</select>`
  * @slot slot - The input element, e.g. `<swirl-text-input></swirl-text-input>`
- * @slot prefix - The prefix element, e.g. `<select slot="prefix">…</select>` or `<swirl-icon-poll></swirl-icon-poll>`
  */
 @Component({
   /**
@@ -39,6 +39,7 @@ export class SwirlFormControl {
   @Prop() errorMessage?: string;
   @Prop() fontSize?: SwirlFormControlFontSize = "default";
   @Prop() hideLabel?: boolean;
+  @Prop() icon?: string;
   @Prop() inline?: boolean;
   @Prop() invalid?: boolean;
   @Prop() label!: string;
@@ -207,6 +208,7 @@ export class SwirlFormControl {
     );
 
     const hasPrefix = Boolean(this.el.querySelector('[slot="prefix"]'));
+    const hasIcon = Boolean(this.icon);
 
     const hasValue = Array.isArray(this.inputValue)
       ? this.inputValue.length > 0
@@ -231,6 +233,7 @@ export class SwirlFormControl {
         "form-control--has-focus": this.hasFocus,
         "form-control--has-placeholder": hasPlaceholder,
         "form-control--has-prefix": hasPrefix,
+        "form-control--has-icon": hasIcon,
         "form-control--has-value": hasValue,
         "form-control--hide-label": this.hideLabel,
         "form-control--inline": this.inline,
@@ -253,6 +256,11 @@ export class SwirlFormControl {
               <slot name="prefix"></slot>
             </span>
             <LabelTag class="form-control__label" onClick={this.onLabelClick}>
+              {hasIcon && (
+                <span class="form-control__icon">
+                  <swirl-icon glyph={this.icon} size={20}></swirl-icon>
+                </span>
+              )}
               <span class="form-control__label-text" id={this.labelId}>
                 {this.label}
                 {this.secondaryLabel && this.labelPosition === "outside" && (
diff --git a/packages/swirl-components/src/components/swirl-icon/icons/swirl-icon-location-on.tsx b/packages/swirl-components/src/components/swirl-icon/icons/swirl-icon-location-on.tsx
new file mode 100644
index 000000000..d93c4bfca
--- /dev/null
+++ b/packages/swirl-components/src/components/swirl-icon/icons/swirl-icon-location-on.tsx
@@ -0,0 +1,65 @@
+// DO NOT EDIT. THIS FILE GETS GENERATED VIA "yarn generate".
+
+import { Component, Fragment, h, Prop } from "@stencil/core";
+import { SwirlIconSize } from "../swirl-icon.types";
+import { SwirlIconColor } from "../swirl-icon";
+import classnames from "classnames";
+
+@Component({
+  shadow: true,
+  styleUrl: "../swirl-icon.css",
+  tag: "swirl-icon-location-on",
+})
+export class SwirlIconLocationOn {
+  @Prop() color?: SwirlIconColor;
+  @Prop() size: SwirlIconSize = 24;
+
+  render() {
+    const viewBoxSize = this.size === 20 ? 24 : this.size;
+
+    const styles = {
+      color: Boolean(this.color) ? `var(--s-icon-${this.color})` : undefined,
+    };
+
+    const className = classnames("swirl-icon", `swirl-icon--size-${this.size}`);
+
+    return (
+      <svg
+        aria-hidden="true"
+        class={className}
+        fill="none"
+        height={this.size}
+        part="icon"
+        style={styles}
+        viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`}
+        width={this.size}
+        xmlns="http://www.w3.org/2000/svg"
+      >
+        {this.size === 16 && (
+          <Fragment>
+            <path
+              d="M7.99984 12.9002C9.35539 11.6557 10.3609 10.5252 11.0165 9.5085C11.6721 8.49183 11.9998 7.58905 11.9998 6.80016C11.9998 5.58905 11.6137 4.59739 10.8415 3.82516C10.0693 3.05294 9.12206 2.66683 7.99984 2.66683C6.87761 2.66683 5.93039 3.05294 5.15817 3.82516C4.38595 4.59739 3.99984 5.58905 3.99984 6.80016C3.99984 7.58905 4.32761 8.49183 4.98317 9.5085C5.63873 10.5252 6.64428 11.6557 7.99984 12.9002ZM7.99984 14.2168C7.84428 14.2168 7.68873 14.1891 7.53317 14.1335C7.37761 14.0779 7.23873 13.9946 7.1165 13.8835C6.39428 13.2168 5.75539 12.5668 5.19984 11.9335C4.64428 11.3002 4.18039 10.6863 3.80817 10.0918C3.43595 9.49739 3.15261 8.92516 2.95817 8.37516C2.76373 7.82516 2.6665 7.30016 2.6665 6.80016C2.6665 5.1335 3.20261 3.80572 4.27484 2.81683C5.34706 1.82794 6.58873 1.3335 7.99984 1.3335C9.41095 1.3335 10.6526 1.82794 11.7248 2.81683C12.7971 3.80572 13.3332 5.1335 13.3332 6.80016C13.3332 7.30016 13.2359 7.82516 13.0415 8.37516C12.8471 8.92516 12.5637 9.49739 12.1915 10.0918C11.8193 10.6863 11.3554 11.3002 10.7998 11.9335C10.2443 12.5668 9.60539 13.2168 8.88317 13.8835C8.76095 13.9946 8.62206 14.0779 8.4665 14.1335C8.31095 14.1891 8.15539 14.2168 7.99984 14.2168ZM7.99984 8.00016C8.3665 8.00016 8.68039 7.86961 8.9415 7.6085C9.20261 7.34739 9.33317 7.0335 9.33317 6.66683C9.33317 6.30016 9.20261 5.98627 8.9415 5.72516C8.68039 5.46405 8.3665 5.3335 7.99984 5.3335C7.63317 5.3335 7.31928 5.46405 7.05817 5.72516C6.79706 5.98627 6.6665 6.30016 6.6665 6.66683C6.6665 7.0335 6.79706 7.34739 7.05817 7.6085C7.31928 7.86961 7.63317 8.00016 7.99984 8.00016Z"
+              fill="currentColor"
+            />
+          </Fragment>
+        )}
+        {(this.size === 20 || this.size === 24) && (
+          <Fragment>
+            <path
+              d="M12 19.35C14.0333 17.4833 15.5417 15.7875 16.525 14.2625C17.5083 12.7375 18 11.3833 18 10.2C18 8.38333 17.4208 6.89583 16.2625 5.7375C15.1042 4.57917 13.6833 4 12 4C10.3167 4 8.89583 4.57917 7.7375 5.7375C6.57917 6.89583 6 8.38333 6 10.2C6 11.3833 6.49167 12.7375 7.475 14.2625C8.45833 15.7875 9.96667 17.4833 12 19.35ZM12 21.325C11.7667 21.325 11.5333 21.2833 11.3 21.2C11.0667 21.1167 10.8583 20.9917 10.675 20.825C9.59167 19.825 8.63333 18.85 7.8 17.9C6.96667 16.95 6.27083 16.0292 5.7125 15.1375C5.15417 14.2458 4.72917 13.3875 4.4375 12.5625C4.14583 11.7375 4 10.95 4 10.2C4 7.7 4.80417 5.70833 6.4125 4.225C8.02083 2.74167 9.88333 2 12 2C14.1167 2 15.9792 2.74167 17.5875 4.225C19.1958 5.70833 20 7.7 20 10.2C20 10.95 19.8542 11.7375 19.5625 12.5625C19.2708 13.3875 18.8458 14.2458 18.2875 15.1375C17.7292 16.0292 17.0333 16.95 16.2 17.9C15.3667 18.85 14.4083 19.825 13.325 20.825C13.1417 20.9917 12.9333 21.1167 12.7 21.2C12.4667 21.2833 12.2333 21.325 12 21.325ZM12 12C12.55 12 13.0208 11.8042 13.4125 11.4125C13.8042 11.0208 14 10.55 14 10C14 9.45 13.8042 8.97917 13.4125 8.5875C13.0208 8.19583 12.55 8 12 8C11.45 8 10.9792 8.19583 10.5875 8.5875C10.1958 8.97917 10 9.45 10 10C10 10.55 10.1958 11.0208 10.5875 11.4125C10.9792 11.8042 11.45 12 12 12Z"
+              fill="currentColor"
+            />
+          </Fragment>
+        )}
+        {this.size === 28 && (
+          <Fragment>
+            <path
+              d="M13.9998 22.5752C16.3721 20.3974 18.1318 18.4189 19.279 16.6397C20.4262 14.8606 20.9998 13.2807 20.9998 11.9002C20.9998 9.78072 20.3241 8.0453 18.9728 6.69391C17.6214 5.34252 15.9637 4.66683 13.9998 4.66683C12.0359 4.66683 10.3783 5.34252 9.02692 6.69391C7.67553 8.0453 6.99984 9.78072 6.99984 11.9002C6.99984 13.2807 7.57345 14.8606 8.72067 16.6397C9.86789 18.4189 11.6276 20.3974 13.9998 22.5752ZM13.9998 24.8793C13.7276 24.8793 13.4554 24.8307 13.1832 24.7335C12.9109 24.6363 12.6679 24.4904 12.454 24.296C11.1901 23.1293 10.0721 21.9918 9.09984 20.8835C8.12762 19.7752 7.31581 18.7009 6.66442 17.6606C6.01303 16.6203 5.5172 15.6189 5.17692 14.6564C4.83664 13.6939 4.6665 12.7752 4.6665 11.9002C4.6665 8.9835 5.6047 6.65988 7.48109 4.92933C9.35748 3.19877 11.5304 2.3335 13.9998 2.3335C16.4693 2.3335 18.6422 3.19877 20.5186 4.92933C22.395 6.65988 23.3332 8.9835 23.3332 11.9002C23.3332 12.7752 23.163 13.6939 22.8228 14.6564C22.4825 15.6189 21.9866 16.6203 21.3353 17.6606C20.6839 18.7009 19.8721 19.7752 18.8998 20.8835C17.9276 21.9918 16.8096 23.1293 15.5457 24.296C15.3318 24.4904 15.0887 24.6363 14.8165 24.7335C14.5443 24.8307 14.2721 24.8793 13.9998 24.8793ZM13.9998 14.0002C14.6415 14.0002 15.1908 13.7717 15.6478 13.3147C16.1047 12.8578 16.3332 12.3085 16.3332 11.6668C16.3332 11.0252 16.1047 10.4759 15.6478 10.0189C15.1908 9.56197 14.6415 9.3335 13.9998 9.3335C13.3582 9.3335 12.8089 9.56197 12.3519 10.0189C11.895 10.4759 11.6665 11.0252 11.6665 11.6668C11.6665 12.3085 11.895 12.8578 12.3519 13.3147C12.8089 13.7717 13.3582 14.0002 13.9998 14.0002Z"
+              fill="currentColor"
+            />
+          </Fragment>
+        )}
+      </svg>
+    );
+  }
+}
diff --git a/packages/swirl-components/src/components/swirl-text-input/swirl-text-input.tsx b/packages/swirl-components/src/components/swirl-text-input/swirl-text-input.tsx
index 60cc62ad2..7c0b0e1e9 100644
--- a/packages/swirl-components/src/components/swirl-text-input/swirl-text-input.tsx
+++ b/packages/swirl-components/src/components/swirl-text-input/swirl-text-input.tsx
@@ -62,6 +62,7 @@ export class SwirlTextInput implements SwirlFormInput {
   @Prop() max?: number;
   @Prop() min?: number;
   @Prop() mode?: SwirlTextInputMode;
+  @Prop() inputName?: string;
   @Prop() passwordToggleLabel?: string = "Toggle password display";
   @Prop() placeholder?: string;
   @Prop() prefixLabel?: string;
@@ -320,6 +321,7 @@ export class SwirlTextInput implements SwirlFormInput {
             ref={(el) => (this.inputEl = el)}
             required={this.required}
             role={this.swirlRole}
+            name={this.inputName}
             rows={this.rows > 1 ? this.rows : this.autoGrow ? 1 : undefined}
             spellcheck={this.spellCheck}
             step={this.type === "number" ? this.step : undefined}
diff --git a/packages/swirl-components/vscode-data.json b/packages/swirl-components/vscode-data.json
index f0e2c698d..2c9794a1a 100644
--- a/packages/swirl-components/vscode-data.json
+++ b/packages/swirl-components/vscode-data.json
@@ -3030,6 +3030,10 @@
           "name": "hide-label",
           "description": ""
         },
+        {
+          "name": "icon",
+          "description": ""
+        },
         {
           "name": "inline",
           "description": ""
@@ -8970,6 +8974,64 @@
         }
       ]
     },
+    {
+      "name": "swirl-icon-location-on",
+      "description": {
+        "kind": "markdown",
+        "value": ""
+      },
+      "attributes": [
+        {
+          "name": "color",
+          "description": "",
+          "values": [
+            {
+              "name": "critical"
+            },
+            {
+              "name": "default"
+            },
+            {
+              "name": "disabled"
+            },
+            {
+              "name": "highlight"
+            },
+            {
+              "name": "info"
+            },
+            {
+              "name": "on-action-primary"
+            },
+            {
+              "name": "on-image"
+            },
+            {
+              "name": "on-status"
+            },
+            {
+              "name": "on-surface-highlight"
+            },
+            {
+              "name": "on-surface-highlight-subdued"
+            },
+            {
+              "name": "strong"
+            },
+            {
+              "name": "success"
+            },
+            {
+              "name": "warning"
+            }
+          ]
+        },
+        {
+          "name": "size",
+          "description": ""
+        }
+      ]
+    },
     {
       "name": "swirl-icon-lock",
       "description": {
@@ -18984,6 +19046,10 @@
           "name": "inline",
           "description": ""
         },
+        {
+          "name": "input-name",
+          "description": ""
+        },
         {
           "name": "invalid",
           "description": ""
diff --git a/packages/swirl-icons/dart/lib/fonts/flip-legacy-icons.ttf b/packages/swirl-icons/dart/lib/fonts/flip-legacy-icons.ttf
index 1da78e183..3b54d6b3a 100644
Binary files a/packages/swirl-icons/dart/lib/fonts/flip-legacy-icons.ttf and b/packages/swirl-icons/dart/lib/fonts/flip-legacy-icons.ttf differ
diff --git a/packages/swirl-icons/dart/lib/fonts/swirl-icons.ttf b/packages/swirl-icons/dart/lib/fonts/swirl-icons.ttf
index cc4d5387d..d302bf797 100644
Binary files a/packages/swirl-icons/dart/lib/fonts/swirl-icons.ttf and b/packages/swirl-icons/dart/lib/fonts/swirl-icons.ttf differ
diff --git a/packages/swirl-icons/dart/lib/swirl_icons.dart b/packages/swirl-icons/dart/lib/swirl_icons.dart
index 63230a756..95b12f81b 100644
--- a/packages/swirl-icons/dart/lib/swirl_icons.dart
+++ b/packages/swirl-icons/dart/lib/swirl_icons.dart
@@ -105,105 +105,106 @@ class SwirlIcons {
   static const IconData link = IconData(0xeb21, fontFamily: _kFontFam, fontPackage: _kFontPkg);
   static const IconData live = IconData(0xeb24, fontFamily: _kFontFam, fontPackage: _kFontPkg);
   static const IconData load = IconData(0xeb27, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData lock = IconData(0xeb2a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData lock_open = IconData(0xeb2d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData lock_person = IconData(0xeb30, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData login = IconData(0xeb33, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData logout = IconData(0xeb36, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData long_text = IconData(0xeb39, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData mail = IconData(0xeb3c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData manage_accounts = IconData(0xeb3f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData mark_chat_read = IconData(0xeb42, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData mark_chat_unread = IconData(0xeb45, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData mention = IconData(0xeb48, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData menu = IconData(0xeb4b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData menu_book = IconData(0xeb4e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData menu_book_filled = IconData(0xeb51, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData menu_filled = IconData(0xeb54, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData message = IconData(0xeb57, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData mic = IconData(0xeb5a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData mic_off = IconData(0xeb5d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData more_horizontal = IconData(0xeb60, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData more_vertikal = IconData(0xeb63, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData news = IconData(0xeb66, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData news_filled = IconData(0xeb69, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData news_off = IconData(0xeb6c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData notifications = IconData(0xeb6f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData notifications_active = IconData(0xeb72, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData notifications_off = IconData(0xeb75, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData open_in_full = IconData(0xeb78, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData open_in_new = IconData(0xeb7b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData pause = IconData(0xeb7e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData pause_circle = IconData(0xeb81, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData people_alt = IconData(0xeb84, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData person = IconData(0xeb87, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData person_off = IconData(0xeb8a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData phone = IconData(0xeb8d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData photo_camera = IconData(0xeb90, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData picture_in_picture = IconData(0xeb93, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData pin = IconData(0xeb96, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData pin_off = IconData(0xeb99, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData place = IconData(0xeb9c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData play_arrow = IconData(0xeb9f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData poll = IconData(0xeba2, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData post_approval = IconData(0xeba5, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData present = IconData(0xeba8, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData print = IconData(0xebab, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData public = IconData(0xebae, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData public_off = IconData(0xebb1, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData ratio_four_to_three = IconData(0xebb4, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData ratio_freeform = IconData(0xebb7, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData ratio_sixteen_to_nine = IconData(0xebba, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData ratio_square = IconData(0xebbd, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData ratio_three_to_four = IconData(0xebc0, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData ratio_three_to_two = IconData(0xebc3, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData recieved = IconData(0xebc6, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData remove = IconData(0xebc9, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData remove_circle = IconData(0xebcc, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData remove_moderator = IconData(0xebcf, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData reply = IconData(0xebd2, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData report = IconData(0xebd5, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData roadmap = IconData(0xebd8, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData rotate_left = IconData(0xebdb, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData rotate_right = IconData(0xebde, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData screenshare = IconData(0xebe1, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData screenshare_off = IconData(0xebe4, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData search = IconData(0xebe7, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData search_strong = IconData(0xebea, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData secure = IconData(0xebed, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData send = IconData(0xebf0, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData settings = IconData(0xebf3, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData short_text = IconData(0xebf6, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData simplify = IconData(0xebf9, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData spellcheck = IconData(0xebfc, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData stars = IconData(0xebff, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData stop = IconData(0xec02, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData stop_circle = IconData(0xec05, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData sync = IconData(0xec08, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData tasks = IconData(0xec0b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData tasks_filled = IconData(0xec0e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData terminal = IconData(0xec11, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData time = IconData(0xec14, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData time_filled = IconData(0xec17, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData today = IconData(0xec1a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData today_filled = IconData(0xec1d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData translate = IconData(0xec20, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData tree_structure = IconData(0xec23, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData undo = IconData(0xec26, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData unlock_person = IconData(0xec29, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData user_add = IconData(0xec2c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData user_assign = IconData(0xec2f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData video_camera = IconData(0xec32, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData video_camera_off = IconData(0xec35, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData video_library = IconData(0xec38, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData video_player = IconData(0xec3b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData view_agenda = IconData(0xec3e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData visibility = IconData(0xec41, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData visibility_off = IconData(0xec44, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData voice = IconData(0xec47, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData volume_up = IconData(0xec4a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData warning = IconData(0xec4d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData web_asset = IconData(0xec50, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData web_asset_off = IconData(0xec53, fontFamily: _kFontFam, fontPackage: _kFontPkg);
-  static const IconData work = IconData(0xec56, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData location_on = IconData(0xeb2a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData lock = IconData(0xeb2d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData lock_open = IconData(0xeb30, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData lock_person = IconData(0xeb33, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData login = IconData(0xeb36, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData logout = IconData(0xeb39, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData long_text = IconData(0xeb3c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData mail = IconData(0xeb3f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData manage_accounts = IconData(0xeb42, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData mark_chat_read = IconData(0xeb45, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData mark_chat_unread = IconData(0xeb48, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData mention = IconData(0xeb4b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData menu = IconData(0xeb4e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData menu_book = IconData(0xeb51, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData menu_book_filled = IconData(0xeb54, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData menu_filled = IconData(0xeb57, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData message = IconData(0xeb5a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData mic = IconData(0xeb5d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData mic_off = IconData(0xeb60, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData more_horizontal = IconData(0xeb63, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData more_vertikal = IconData(0xeb66, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData news = IconData(0xeb69, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData news_filled = IconData(0xeb6c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData news_off = IconData(0xeb6f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData notifications = IconData(0xeb72, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData notifications_active = IconData(0xeb75, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData notifications_off = IconData(0xeb78, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData open_in_full = IconData(0xeb7b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData open_in_new = IconData(0xeb7e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData pause = IconData(0xeb81, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData pause_circle = IconData(0xeb84, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData people_alt = IconData(0xeb87, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData person = IconData(0xeb8a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData person_off = IconData(0xeb8d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData phone = IconData(0xeb90, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData photo_camera = IconData(0xeb93, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData picture_in_picture = IconData(0xeb96, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData pin = IconData(0xeb99, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData pin_off = IconData(0xeb9c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData place = IconData(0xeb9f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData play_arrow = IconData(0xeba2, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData poll = IconData(0xeba5, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData post_approval = IconData(0xeba8, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData present = IconData(0xebab, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData print = IconData(0xebae, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData public = IconData(0xebb1, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData public_off = IconData(0xebb4, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData ratio_four_to_three = IconData(0xebb7, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData ratio_freeform = IconData(0xebba, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData ratio_sixteen_to_nine = IconData(0xebbd, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData ratio_square = IconData(0xebc0, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData ratio_three_to_four = IconData(0xebc3, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData ratio_three_to_two = IconData(0xebc6, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData recieved = IconData(0xebc9, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData remove = IconData(0xebcc, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData remove_circle = IconData(0xebcf, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData remove_moderator = IconData(0xebd2, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData reply = IconData(0xebd5, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData report = IconData(0xebd8, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData roadmap = IconData(0xebdb, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData rotate_left = IconData(0xebde, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData rotate_right = IconData(0xebe1, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData screenshare = IconData(0xebe4, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData screenshare_off = IconData(0xebe7, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData search = IconData(0xebea, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData search_strong = IconData(0xebed, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData secure = IconData(0xebf0, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData send = IconData(0xebf3, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData settings = IconData(0xebf6, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData short_text = IconData(0xebf9, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData simplify = IconData(0xebfc, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData spellcheck = IconData(0xebff, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData stars = IconData(0xec02, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData stop = IconData(0xec05, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData stop_circle = IconData(0xec08, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData sync = IconData(0xec0b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData tasks = IconData(0xec0e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData tasks_filled = IconData(0xec11, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData terminal = IconData(0xec14, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData time = IconData(0xec17, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData time_filled = IconData(0xec1a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData today = IconData(0xec1d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData today_filled = IconData(0xec20, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData translate = IconData(0xec23, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData tree_structure = IconData(0xec26, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData undo = IconData(0xec29, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData unlock_person = IconData(0xec2c, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData user_add = IconData(0xec2f, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData user_assign = IconData(0xec32, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData video_camera = IconData(0xec35, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData video_camera_off = IconData(0xec38, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData video_library = IconData(0xec3b, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData video_player = IconData(0xec3e, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData view_agenda = IconData(0xec41, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData visibility = IconData(0xec44, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData visibility_off = IconData(0xec47, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData voice = IconData(0xec4a, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData volume_up = IconData(0xec4d, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData warning = IconData(0xec50, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData web_asset = IconData(0xec53, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData web_asset_off = IconData(0xec56, fontFamily: _kFontFam, fontPackage: _kFontPkg);
+  static const IconData work = IconData(0xec59, fontFamily: _kFontFam, fontPackage: _kFontPkg);
 }
diff --git a/packages/swirl-icons/icons/LocationOn16.svg b/packages/swirl-icons/icons/LocationOn16.svg
new file mode 100644
index 000000000..7f582b39e
--- /dev/null
+++ b/packages/swirl-icons/icons/LocationOn16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M7.99984 12.9002C9.35539 11.6557 10.3609 10.5252 11.0165 9.5085C11.6721 8.49183 11.9998 7.58905 11.9998 6.80016C11.9998 5.58905 11.6137 4.59739 10.8415 3.82516C10.0693 3.05294 9.12206 2.66683 7.99984 2.66683C6.87761 2.66683 5.93039 3.05294 5.15817 3.82516C4.38595 4.59739 3.99984 5.58905 3.99984 6.80016C3.99984 7.58905 4.32761 8.49183 4.98317 9.5085C5.63873 10.5252 6.64428 11.6557 7.99984 12.9002ZM7.99984 14.2168C7.84428 14.2168 7.68873 14.1891 7.53317 14.1335C7.37761 14.0779 7.23873 13.9946 7.1165 13.8835C6.39428 13.2168 5.75539 12.5668 5.19984 11.9335C4.64428 11.3002 4.18039 10.6863 3.80817 10.0918C3.43595 9.49739 3.15261 8.92516 2.95817 8.37516C2.76373 7.82516 2.6665 7.30016 2.6665 6.80016C2.6665 5.1335 3.20261 3.80572 4.27484 2.81683C5.34706 1.82794 6.58873 1.3335 7.99984 1.3335C9.41095 1.3335 10.6526 1.82794 11.7248 2.81683C12.7971 3.80572 13.3332 5.1335 13.3332 6.80016C13.3332 7.30016 13.2359 7.82516 13.0415 8.37516C12.8471 8.92516 12.5637 9.49739 12.1915 10.0918C11.8193 10.6863 11.3554 11.3002 10.7998 11.9335C10.2443 12.5668 9.60539 13.2168 8.88317 13.8835C8.76095 13.9946 8.62206 14.0779 8.4665 14.1335C8.31095 14.1891 8.15539 14.2168 7.99984 14.2168ZM7.99984 8.00016C8.3665 8.00016 8.68039 7.86961 8.9415 7.6085C9.20261 7.34739 9.33317 7.0335 9.33317 6.66683C9.33317 6.30016 9.20261 5.98627 8.9415 5.72516C8.68039 5.46405 8.3665 5.3335 7.99984 5.3335C7.63317 5.3335 7.31928 5.46405 7.05817 5.72516C6.79706 5.98627 6.6665 6.30016 6.6665 6.66683C6.6665 7.0335 6.79706 7.34739 7.05817 7.6085C7.31928 7.86961 7.63317 8.00016 7.99984 8.00016Z" fill="#191919"/>
+</svg>
diff --git a/packages/swirl-icons/icons/LocationOn24.svg b/packages/swirl-icons/icons/LocationOn24.svg
new file mode 100644
index 000000000..efc76e755
--- /dev/null
+++ b/packages/swirl-icons/icons/LocationOn24.svg
@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M12 19.35C14.0333 17.4833 15.5417 15.7875 16.525 14.2625C17.5083 12.7375 18 11.3833 18 10.2C18 8.38333 17.4208 6.89583 16.2625 5.7375C15.1042 4.57917 13.6833 4 12 4C10.3167 4 8.89583 4.57917 7.7375 5.7375C6.57917 6.89583 6 8.38333 6 10.2C6 11.3833 6.49167 12.7375 7.475 14.2625C8.45833 15.7875 9.96667 17.4833 12 19.35ZM12 21.325C11.7667 21.325 11.5333 21.2833 11.3 21.2C11.0667 21.1167 10.8583 20.9917 10.675 20.825C9.59167 19.825 8.63333 18.85 7.8 17.9C6.96667 16.95 6.27083 16.0292 5.7125 15.1375C5.15417 14.2458 4.72917 13.3875 4.4375 12.5625C4.14583 11.7375 4 10.95 4 10.2C4 7.7 4.80417 5.70833 6.4125 4.225C8.02083 2.74167 9.88333 2 12 2C14.1167 2 15.9792 2.74167 17.5875 4.225C19.1958 5.70833 20 7.7 20 10.2C20 10.95 19.8542 11.7375 19.5625 12.5625C19.2708 13.3875 18.8458 14.2458 18.2875 15.1375C17.7292 16.0292 17.0333 16.95 16.2 17.9C15.3667 18.85 14.4083 19.825 13.325 20.825C13.1417 20.9917 12.9333 21.1167 12.7 21.2C12.4667 21.2833 12.2333 21.325 12 21.325ZM12 12C12.55 12 13.0208 11.8042 13.4125 11.4125C13.8042 11.0208 14 10.55 14 10C14 9.45 13.8042 8.97917 13.4125 8.5875C13.0208 8.19583 12.55 8 12 8C11.45 8 10.9792 8.19583 10.5875 8.5875C10.1958 8.97917 10 9.45 10 10C10 10.55 10.1958 11.0208 10.5875 11.4125C10.9792 11.8042 11.45 12 12 12Z" fill="#191919"/>
+</svg>
diff --git a/packages/swirl-icons/icons/LocationOn28.svg b/packages/swirl-icons/icons/LocationOn28.svg
new file mode 100644
index 000000000..b51f4f092
--- /dev/null
+++ b/packages/swirl-icons/icons/LocationOn28.svg
@@ -0,0 +1,3 @@
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M13.9998 22.5752C16.3721 20.3974 18.1318 18.4189 19.279 16.6397C20.4262 14.8606 20.9998 13.2807 20.9998 11.9002C20.9998 9.78072 20.3241 8.0453 18.9728 6.69391C17.6214 5.34252 15.9637 4.66683 13.9998 4.66683C12.0359 4.66683 10.3783 5.34252 9.02692 6.69391C7.67553 8.0453 6.99984 9.78072 6.99984 11.9002C6.99984 13.2807 7.57345 14.8606 8.72067 16.6397C9.86789 18.4189 11.6276 20.3974 13.9998 22.5752ZM13.9998 24.8793C13.7276 24.8793 13.4554 24.8307 13.1832 24.7335C12.9109 24.6363 12.6679 24.4904 12.454 24.296C11.1901 23.1293 10.0721 21.9918 9.09984 20.8835C8.12762 19.7752 7.31581 18.7009 6.66442 17.6606C6.01303 16.6203 5.5172 15.6189 5.17692 14.6564C4.83664 13.6939 4.6665 12.7752 4.6665 11.9002C4.6665 8.9835 5.6047 6.65988 7.48109 4.92933C9.35748 3.19877 11.5304 2.3335 13.9998 2.3335C16.4693 2.3335 18.6422 3.19877 20.5186 4.92933C22.395 6.65988 23.3332 8.9835 23.3332 11.9002C23.3332 12.7752 23.163 13.6939 22.8228 14.6564C22.4825 15.6189 21.9866 16.6203 21.3353 17.6606C20.6839 18.7009 19.8721 19.7752 18.8998 20.8835C17.9276 21.9918 16.8096 23.1293 15.5457 24.296C15.3318 24.4904 15.0887 24.6363 14.8165 24.7335C14.5443 24.8307 14.2721 24.8793 13.9998 24.8793ZM13.9998 14.0002C14.6415 14.0002 15.1908 13.7717 15.6478 13.3147C16.1047 12.8578 16.3332 12.3085 16.3332 11.6668C16.3332 11.0252 16.1047 10.4759 15.6478 10.0189C15.1908 9.56197 14.6415 9.3335 13.9998 9.3335C13.3582 9.3335 12.8089 9.56197 12.3519 10.0189C11.895 10.4759 11.6665 11.0252 11.6665 11.6668C11.6665 12.3085 11.895 12.8578 12.3519 13.3147C12.8089 13.7717 13.3582 14.0002 13.9998 14.0002Z" fill="#191919"/>
+</svg>


Reviews:
user: login: matvlaovi-flip
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-15T13:24:58Z
user: login: AshleyBekemeier
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-15T16:23:33Z
user: login: AshleyBekemeier
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-15T16:24:18Z
user: login: matvlaovi-flip
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-04-16T06:29:11Z

Review comments:
diff_hunk: @@ -253,6 +256,11 @@ export class SwirlFormControl {
               <slot name="prefix"></slot>
             </span>
             <LabelTag class="form-control__label" onClick={this.onLabelClick}>
+              {hasIcon && (
path: packages/swirl-components/src/components/swirl-form-control/swirl-form-control.tsx
user: login: matvlaovi-flip
body: I think we should move away for using slots for icons like this, makes it much simpler and we can ditch the `querySelector`

e.g. 
<img width="502" alt="image" src="https://github.com/user-attachments/assets/71d5e4d3-1678-4695-a79c-c4868a5e858c" />

created_at: 2025-04-15T13:22:14Z
author_association: COLLABORATOR
diff_hunk: @@ -62,6 +62,7 @@ export class SwirlTextInput implements SwirlFormInput {
   @Prop() max?: number;
   @Prop() min?: number;
   @Prop() mode?: SwirlTextInputMode;
+  @Prop() name?: string;
path: packages/swirl-components/src/components/swirl-text-input/swirl-text-input.tsx
user: login: matvlaovi-flip
body: I think we shouldn't use `name` as the prop, as we want only one `name` prop to be here, and in the input. So call this one `inputName`?

Not a 100% on this so pls verify
created_at: 2025-04-15T13:24:45Z
author_association: COLLABORATOR
diff_hunk: @@ -62,6 +62,7 @@ export class SwirlTextInput implements SwirlFormInput {
   @Prop() max?: number;
   @Prop() min?: number;
   @Prop() mode?: SwirlTextInputMode;
+  @Prop() name?: string;
path: packages/swirl-components/src/components/swirl-text-input/swirl-text-input.tsx
user: login: AshleyBekemeier
body: i suppose we shouldn't have props that are html keywords in the first place. i changed it
created_at: 2025-04-15T16:23:33Z
author_association: COLLABORATOR
diff_hunk: @@ -253,6 +256,11 @@ export class SwirlFormControl {
               <slot name="prefix"></slot>
             </span>
             <LabelTag class="form-control__label" onClick={this.onLabelClick}>
+              {hasIcon && (
path: packages/swirl-components/src/components/swirl-form-control/swirl-form-control.tsx
user: login: AshleyBekemeier
body: yeah i agree. I think in general it does make sense because you have more control so you can adjust things like color and badge etc
created_at: 2025-04-15T16:24:18Z
author_association: COLLABORATOR

PR comments:
user: login: vercel[bot]
created_at: 2025-04-15T12:45:50Z
body: [vc]: #tBHeRS5z2n/AmaLCPDoHGVeqjJZlA4XbeuFk0I792Ys=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJnZXRmbGlwZGV2Iiwicm9vdERpcmVjdG9yeSI6ImFwcHMvc3dpcmwtZG9jcyIsImxpdmVGZWVkYmFjayI6eyJyZXNvbHZlZCI6MCwidW5yZXNvbHZlZCI6MCwidG90YWwiOjAsImxpbmsiOiIifSwiaW5zcGVjdG9yVXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL2dldGZsaXAvZ2V0ZmxpcGRldi9HcVpKYUVuOFZ6SDIxV1BDaTU1NFVrclZKWVZWIiwibmV4dENvbW1pdFN0YXR1cyI6IklHTk9SRUQiLCJwcmV2aWV3VXJsIjoiZ2V0ZmxpcGRldi1naXQtYWRkLWxlYWRpbmctaWNvbi10by10ZXh0LWlucHV0LWdldGZsaXAudmVyY2VsLmFwcCJ9LHsibmFtZSI6InN0YWdpbmdnZXRmbGlwZGV2Iiwicm9vdERpcmVjdG9yeSI6ImFwcHMvc3dpcmwtZG9jcyIsImxpdmVGZWVkYmFjayI6eyJyZXNvbHZlZCI6MCwidW5yZXNvbHZlZCI6MCwidG90YWwiOjAsImxpbmsiOiIifSwiaW5zcGVjdG9yVXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL2dldGZsaXAvc3RhZ2luZ2dldGZsaXBkZXYvNVdyRWJ1c21ETnNnQmtkOXlFMXN2dGJwamFTRyIsIm5leHRDb21taXRTdGF0dXMiOiJJR05PUkVEIiwicHJldmlld1VybCI6InN0YWdpbmdnZXRmbGlwZGV2LWdpdC1hZGQtbGVhZGluZy1pY29uLXRvLXRleHQtaW5wdXQtZ2V0ZmxpcC52ZXJjZWwuYXBwIn1dfQ==
**The latest updates on your projects**. Learn more about [Vercel for Git ↗︎](https://vercel.link/github-learn-more)


<details><summary>2 Skipped Deployments</summary>

| Name | Status | Preview | Comments | Updated (UTC) |
| :--- | :----- | :------ | :------- | :------ |
| **getflipdev** | ⬜️ Ignored ([Inspect](https://vercel.com/getflip/getflipdev/GqZJaEn8VzH21WPCi554UkrVJYVV)) | [Visit Preview](https://getflipdev-git-add-leading-icon-to-text-input-getflip.vercel.app) |  | Apr 15, 2025 4:15pm |
| **staginggetflipdev** | ⬜️ Ignored ([Inspect](https://vercel.com/getflip/staginggetflipdev/5WrEbusmDNsgBkd9yE1svtbpjaSG)) | [Visit Preview](https://staginggetflipdev-git-add-leading-icon-to-text-input-getflip.vercel.app) |  | Apr 15, 2025 4:15pm |
</details>



author_association: NONE
user: login: github-actions[bot]
created_at: 2025-04-15T12:55:22Z
body: Azure Static Web Apps: Your stage site is ready! Visit it here: https://icy-water-049ec4003-1032.westeurope.3.azurestaticapps.net
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-04-15T13:12:46Z
body: Azure Static Web Apps: Your stage site is ready! Visit it here: https://icy-water-049ec4003-1032.westeurope.3.azurestaticapps.net
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-04-15T16:25:14Z
body: Azure Static Web Apps: Your stage site is ready! Visit it here: https://icy-water-049ec4003-1032.westeurope.3.azurestaticapps.net
author_association: CONTRIBUTOR