A modern signal based and zoneless compatable UI library for Angular visit our website shipui.com for more info.
Docs can be found at docs.shipui.com
To start using ShipUI make sure you're using angular 19 or newer.
npm i -S @ship-ui/core
@use '@ship-ui/core/styles';
you need to add the ship assets to your assets array this is to add the ship default font
"assets": [
"src/assets",
{
"glob": "**/*",
"input": "./node_modules/@ship-ui/core/assets",
"output": "./ship-ui-assets/"
}
]
Ship comes with a custom CLI for subsetting and auto generating an icon font currently we support Phospher icons
<!-- Add to the head of your index.html -->
<link rel="stylesheet" href="/ship.css" />
One are for generating the icon font once, the other has a watch feature.
"scripts": {
..
"gen:font": "ship-fg --src='./src' --out='./src/assets' --rootPath='./'",
"watch:font": "ship-fg --src='./src' --out='./src/assets' --rootPath='./' --watch",
..
}
You now wanna add when to build the font and when to watch so it works well together with your start and build, remember to add the npm run gen:font
to all your build scripts
"scripts": {
..
"start": "npm run watch:font & ng serve",
"build": "npm run gen:font & ng build",
..
}
We have a todos file where we try keep track of features/bugs/blockers currently in pipeline etc
There was raised thoughts on separating out the icon utility the decision are for now not to since this package are depended on those icons for now, we can open up a new debate about it if some comes with a solid argument for itFor safari(We circumvent this by using a templates instead of options)<18
the selects does not support using options so you must use<sh-option>
instead of<option>
(this is fixed in the next select version currently suffixed with-new
)- Known issues for selects when having two selects editing the same value and it is a multi select and searchable they clear out when opened also when selecting a new item they clear the rest of the list - not a very likely scenario but it is something to keep in mind (Your UI probably should not allow this scenario write an issue if you think it should be possible with a good explanation and example)
MIT