├── .browserslistrc ├── .commitlintrc.json ├── .config └── karma.conf.js ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .htmlhintrc ├── .huskyrc.json ├── .lintstagedrc.json ├── .npmrc ├── .stylelintignore ├── .stylelintrc.json ├── AUTHORS ├── CONTRIBUTING.md ├── CONTRIBUTORS ├── LICENSE ├── MAINTAINERS ├── README.md ├── docs ├── favicon.ico ├── iframe.html ├── index.html ├── main.5192a60851961a7ec06c.bundle.js ├── main.5192a60851961a7ec06c.bundle.js.map ├── main.68027f40ba8c9c2e069e.bundle.js ├── runtime~main.136af0f34d2e9fd44d53.bundle.js ├── runtime~main.5192a60851961a7ec06c.bundle.js ├── runtime~main.5192a60851961a7ec06c.bundle.js.map ├── sb_dll │ ├── storybook_docs-manifest.json │ ├── storybook_docs_dll.js │ ├── storybook_ui-manifest.json │ └── storybook_ui_dll.js ├── static │ └── media │ │ ├── SourceSansPro-Black.2e8e26a6.woff │ │ ├── SourceSansPro-Black.e48a1277.woff2 │ │ ├── SourceSansPro-BlackIt.000042f8.woff2 │ │ ├── SourceSansPro-BlackIt.a55f2724.woff │ │ ├── SourceSansPro-Bold.2f5f78b0.woff2 │ │ ├── SourceSansPro-Bold.cc73e575.woff │ │ ├── SourceSansPro-BoldIt.0f263b75.woff │ │ ├── SourceSansPro-BoldIt.4f720da3.woff2 │ │ ├── SourceSansPro-ExtraLight.0c88d5dc.woff │ │ ├── SourceSansPro-ExtraLight.1725fa7c.woff2 │ │ ├── SourceSansPro-ExtraLightIt.0d57bf81.woff2 │ │ ├── SourceSansPro-ExtraLightIt.66a9958d.woff │ │ ├── SourceSansPro-It.48a461b5.woff2 │ │ ├── SourceSansPro-It.8ca7f598.woff │ │ ├── SourceSansPro-Light.65f54bd3.woff2 │ │ ├── SourceSansPro-Light.d57fc162.woff │ │ ├── SourceSansPro-LightIt.ab1337cc.woff │ │ ├── SourceSansPro-LightIt.ca833674.woff2 │ │ ├── SourceSansPro-Regular.6e43a2be.woff │ │ ├── SourceSansPro-Regular.f963ed83.woff2 │ │ ├── SourceSansPro-Semibold.58b282b3.woff │ │ ├── SourceSansPro-Semibold.acbf737b.woff2 │ │ ├── SourceSansPro-SemiboldIt.13959811.woff │ │ ├── SourceSansPro-SemiboldIt.4cc0e276.woff2 │ │ ├── ad.d89a0a67.svg │ │ ├── ae.fc2e6eda.svg │ │ ├── am.8a61e402.svg │ │ ├── ar.ebb63560.svg │ │ ├── at.3d1fbb70.svg │ │ ├── au.46121adb.svg │ │ ├── az.0d31422a.svg │ │ ├── bb.67fba419.svg │ │ ├── be.a5ebe937.svg │ │ ├── bg.00350360.svg │ │ ├── ca.07183f98.svg │ │ ├── ch.1c388f6c.svg │ │ ├── ci.fe0fc943.svg │ │ ├── cl.a3338618.svg │ │ ├── cn.69eb4eb8.svg │ │ ├── cr.a4aa3c38.svg │ │ ├── cu.2876e45e.svg │ │ ├── cz.6e925818.svg │ │ ├── de.f83232b5.svg │ │ ├── dk.11ade1dc.svg │ │ ├── es.227563fd.svg │ │ ├── eu.030e8480.svg │ │ ├── fi.ff0e3e5a.svg │ │ ├── fr.12571251.svg │ │ ├── gb-zet.18e097bc.svg │ │ ├── gb.42b1164d.svg │ │ ├── ge.947cb4a0.svg │ │ ├── gn.061f5122.svg │ │ ├── gr.6f51754b.svg │ │ ├── gw.19d0c4ef.svg │ │ ├── ie.4a809143.svg │ │ ├── in.b5e1df5d.svg │ │ ├── it.0b5754f9.svg │ │ ├── jm.e88d927d.svg │ │ ├── jo.afa69902.svg │ │ ├── jp.11ef68ef.svg │ │ ├── lt.64a5c6ac.svg │ │ ├── ma.207d2b35.svg │ │ ├── ne.02d25e4c.svg │ │ ├── ng.94a61d57.svg │ │ ├── nl.c81c74e9.svg │ │ ├── oui-icons.5c1c287a.woff2 │ │ ├── oui-icons.8a25ae9b.woff │ │ ├── ovh.9e08fea1.svg │ │ ├── pl.54136af8.svg │ │ ├── pt.d3ad32e6.svg │ │ ├── ro.c672bb2f.svg │ │ ├── se.06e2112e.svg │ │ ├── sg.c886c649.svg │ │ ├── sl.07a0fead.svg │ │ ├── sn.cdf938ab.svg │ │ ├── tg.bedfc268.svg │ │ ├── th.58f8cbf6.svg │ │ ├── tj.a97f8641.svg │ │ ├── tn.67ca4e4c.svg │ │ ├── tr.3906e825.svg │ │ ├── ua.100e15cc.svg │ │ ├── us.65ad4866.svg │ │ ├── ve.939fe8c9.svg │ │ └── vn.a3ef2fdd.svg ├── vendors~main.5192a60851961a7ec06c.bundle.js ├── vendors~main.5192a60851961a7ec06c.bundle.js.LICENSE.txt ├── vendors~main.5192a60851961a7ec06c.bundle.js.map ├── vendors~main.59091d17f70802e176a7.bundle.js └── vendors~main.59091d17f70802e176a7.bundle.js.LICENSE.txt ├── lerna.json ├── package.json ├── packages ├── apps │ ├── builder │ │ ├── .config │ │ │ └── webpack.config.js │ │ ├── package.json │ │ └── src │ │ │ ├── oui-flags.less │ │ │ ├── oui-icons.less │ │ │ ├── oui.js │ │ │ └── oui.less │ └── workshop │ │ ├── .storybook │ │ ├── main.js │ │ ├── manager.js │ │ ├── preview.js │ │ └── webpack.config.js │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ ├── index.less │ │ └── utils.js │ │ └── stories │ │ ├── _assets │ │ └── ovh.svg │ │ ├── _data │ │ ├── autocomplete.data.json │ │ ├── chips.data.json │ │ ├── countries.data.json │ │ ├── criteria.data.json │ │ ├── datagrid │ │ │ ├── index.data.json │ │ │ ├── meta.data.json │ │ │ └── servers.data.json │ │ ├── dual-list.data.json │ │ └── navbar.data.json │ │ ├── design-system │ │ ├── components │ │ │ ├── action-menu │ │ │ │ ├── action-menu-webcomponent.stories.js │ │ │ │ └── action-menu.story.mdx │ │ │ ├── back-button │ │ │ │ ├── back-button-webcomponent.stories.js │ │ │ │ └── back-button.story.mdx │ │ │ ├── badge │ │ │ │ ├── badge-native.stories.js │ │ │ │ └── badge.story.mdx │ │ │ ├── box │ │ │ │ ├── box-native.stories.js │ │ │ │ └── box.story.mdx │ │ │ ├── button │ │ │ │ ├── button-native-ghost.stories.js │ │ │ │ ├── button-native-primary.stories.js │ │ │ │ ├── button-native-secondary.stories.js │ │ │ │ ├── button-webcomponent-ghost.stories.js │ │ │ │ ├── button-webcomponent-primary.stories.js │ │ │ │ ├── button-webcomponent-secondary.stories.js │ │ │ │ └── button.story.mdx │ │ │ ├── calendar │ │ │ │ ├── calendar-webcomponent.stories.js │ │ │ │ └── calendar.story.mdx │ │ │ ├── checkbox │ │ │ │ ├── checkbox-webcomponent-simple.stories.js │ │ │ │ ├── checkbox-webcomponent-thumbnail.stories.js │ │ │ │ └── checkbox.story.mdx │ │ │ ├── chips │ │ │ │ ├── chips-webcomponent-inline.stories.js │ │ │ │ ├── chips-webcomponent-stacked.stories.js │ │ │ │ └── chips.story.mdx │ │ │ ├── clipboard │ │ │ │ ├── clipboard-webcomponent.stories.js │ │ │ │ └── clipboard.story.mdx │ │ │ ├── collapsible │ │ │ │ ├── collapsible-webcomponent.stories.js │ │ │ │ └── collapsible.story.mdx │ │ │ ├── criteria │ │ │ │ ├── criteria-webcomponent.stories.js │ │ │ │ └── criteria.story.mdx │ │ │ ├── datagrid │ │ │ │ ├── datagrid-webcomponent.stories.js │ │ │ │ └── datagrid.story.mdx │ │ │ ├── dropdown │ │ │ │ ├── dropdown-webcomponent.stories.js │ │ │ │ └── dropdown.story.mdx │ │ │ ├── dual-list │ │ │ │ ├── dual-list-webcomponent.stories.js │ │ │ │ └── dual-list.story.mdx │ │ │ ├── field │ │ │ │ ├── field-webcomponent.stories.js │ │ │ │ └── field.story.mdx │ │ │ ├── file │ │ │ │ ├── file-webcomponent.stories.js │ │ │ │ └── file.story.mdx │ │ │ ├── form-actions │ │ │ │ ├── form-actions-webcomponent.stories.js │ │ │ │ └── form-actions.story.mdx │ │ │ ├── guide-menu │ │ │ │ ├── guide-menu-webcomponent.stories.js │ │ │ │ └── guide-menu.story.mdx │ │ │ ├── header │ │ │ │ ├── header-webcomponent.stories.js │ │ │ │ └── header.story.mdx │ │ │ ├── inline-adder │ │ │ │ ├── inline-adder-webcomponent.stories.js │ │ │ │ └── inline-adder.story.mdx │ │ │ ├── input │ │ │ │ ├── input-native-group.stories.js │ │ │ │ ├── input-native-overlay.stories.js │ │ │ │ ├── input-native-simple.stories.js │ │ │ │ └── input.story.mdx │ │ │ ├── message │ │ │ │ ├── message-native.stories.js │ │ │ │ ├── message-webcomponent.stories.js │ │ │ │ └── message.story.mdx │ │ │ ├── modal │ │ │ │ ├── modal-webcomponent.stories.js │ │ │ │ └── modal.story.mdx │ │ │ ├── navbar │ │ │ │ ├── navbar-native.stories.js │ │ │ │ ├── navbar-webcomponent.stories.js │ │ │ │ └── navbar.story.mdx │ │ │ ├── numeric │ │ │ │ ├── numeric-webcomponent.stories.js │ │ │ │ └── numeric.story.mdx │ │ │ ├── pagination │ │ │ │ ├── pagination-webcomponent.stories.js │ │ │ │ └── pagination.story.mdx │ │ │ ├── password │ │ │ │ ├── password-webcomponent.stories.js │ │ │ │ └── password.story.mdx │ │ │ ├── progress-tracker │ │ │ │ ├── progress-tracker-native.stories.js │ │ │ │ └── progress-tracker.story.mdx │ │ │ ├── progress │ │ │ │ ├── progress-native.stories.js │ │ │ │ ├── progress-webcomponent.stories.js │ │ │ │ └── progress.story.mdx │ │ │ ├── radio │ │ │ │ ├── radio-webcomponent-simple.stories.js │ │ │ │ ├── radio-webcomponent-thumbnail.stories.js │ │ │ │ ├── radio-webcomponent-toggle-group.stories.js │ │ │ │ └── radio.story.mdx │ │ │ ├── search │ │ │ │ ├── search-webcomponent.stories.js │ │ │ │ └── search.story.mdx │ │ │ ├── select-picker │ │ │ │ ├── select-picker-webcomponent.stories.js │ │ │ │ └── select-picker.story.mdx │ │ │ ├── select │ │ │ │ ├── select-native.stories.js │ │ │ │ ├── select-webcomponent.stories.js │ │ │ │ └── select.story.mdx │ │ │ ├── sidebar │ │ │ │ ├── sidebar-native.stories.js │ │ │ │ └── sidebar.story.mdx │ │ │ ├── skeleton │ │ │ │ ├── skeleton-webcomponent.stories.js │ │ │ │ └── skeleton.story.mdx │ │ │ ├── slideshow │ │ │ │ ├── slideshow-webcomponent.stories.js │ │ │ │ └── slideshow.story.mdx │ │ │ ├── spinner │ │ │ │ ├── spinner-webcomponent.stories.js │ │ │ │ └── spinner.story.mdx │ │ │ ├── stepper │ │ │ │ ├── stepper-webcomponent.stories.js │ │ │ │ └── stepper.story.mdx │ │ │ ├── switch │ │ │ │ ├── switch-webcomponent.stories.js │ │ │ │ └── switch.story.mdx │ │ │ ├── table │ │ │ │ ├── table-native.stories.js │ │ │ │ └── table.story.mdx │ │ │ ├── tabs │ │ │ │ ├── tabs-webcomponent.stories.js │ │ │ │ └── tabs.story.mdx │ │ │ ├── textarea │ │ │ │ ├── textarea-native.stories.js │ │ │ │ ├── textarea-webcomponent.stories.js │ │ │ │ └── textarea.story.mdx │ │ │ ├── tile │ │ │ │ ├── tile-webcomponent.stories.js │ │ │ │ └── tile.story.mdx │ │ │ └── timepicker │ │ │ │ ├── timepicker-webcomponent.stories.js │ │ │ │ └── timepicker.story.mdx │ │ ├── content │ │ │ ├── abbreviations.stories.js │ │ │ ├── descriptions.stories.js │ │ │ ├── headings.stories.js │ │ │ ├── icons.stories.js │ │ │ ├── links.stories.js │ │ │ ├── list.stories.js │ │ │ └── paragraphs.stories.js │ │ ├── directives │ │ │ ├── autocomplete │ │ │ │ ├── autocomplete.stories.js │ │ │ │ └── autocomplete.story.mdx │ │ │ ├── popover │ │ │ │ ├── popover.stories.js │ │ │ │ └── popover.story.mdx │ │ │ └── tooltip │ │ │ │ ├── tooltip.stories.js │ │ │ │ └── tooltip.story.mdx │ │ └── helpers │ │ │ ├── backgrounds.stories.js │ │ │ └── colors.stories.js │ │ └── documentation │ │ ├── changelog.story.mdx │ │ ├── introduction.story.mdx │ │ └── migrate │ │ ├── from-v2-to-v3.story.mdx │ │ └── from-v3-to-v4.story.mdx ├── base │ ├── components │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ └── index.less │ ├── config │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── webpack.base.config.js │ │ │ ├── webpack.dev.config.js │ │ │ ├── webpack.dist.config.js │ │ │ └── webpack.rules.js │ ├── core │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── css │ │ │ ├── _tokens.css │ │ │ └── tokens │ │ │ │ ├── _colors.css │ │ │ │ ├── _fonts.css │ │ │ │ ├── _globals.css │ │ │ │ └── _icons.css │ │ │ ├── fonts │ │ │ ├── oui-icons │ │ │ │ ├── oui-icons.css │ │ │ │ ├── oui-icons.html │ │ │ │ ├── oui-icons.json │ │ │ │ ├── oui-icons.woff │ │ │ │ └── oui-icons.woff2 │ │ │ └── source-sans-pro │ │ │ │ ├── SourceSansPro-Black.woff │ │ │ │ ├── SourceSansPro-Black.woff2 │ │ │ │ ├── SourceSansPro-BlackIt.woff │ │ │ │ ├── SourceSansPro-BlackIt.woff2 │ │ │ │ ├── SourceSansPro-Bold.woff │ │ │ │ ├── SourceSansPro-Bold.woff2 │ │ │ │ ├── SourceSansPro-BoldIt.woff │ │ │ │ ├── SourceSansPro-BoldIt.woff2 │ │ │ │ ├── SourceSansPro-ExtraLight.woff │ │ │ │ ├── SourceSansPro-ExtraLight.woff2 │ │ │ │ ├── SourceSansPro-ExtraLightIt.woff │ │ │ │ ├── SourceSansPro-ExtraLightIt.woff2 │ │ │ │ ├── SourceSansPro-It.woff │ │ │ │ ├── SourceSansPro-It.woff2 │ │ │ │ ├── SourceSansPro-Light.woff │ │ │ │ ├── SourceSansPro-Light.woff2 │ │ │ │ ├── SourceSansPro-LightIt.woff │ │ │ │ ├── SourceSansPro-LightIt.woff2 │ │ │ │ ├── SourceSansPro-Regular.woff │ │ │ │ ├── SourceSansPro-Regular.woff2 │ │ │ │ ├── SourceSansPro-Semibold.woff │ │ │ │ ├── SourceSansPro-Semibold.woff2 │ │ │ │ ├── SourceSansPro-SemiboldIt.woff │ │ │ │ └── SourceSansPro-SemiboldIt.woff2 │ │ │ ├── index.less │ │ │ ├── js │ │ │ ├── component-utils.js │ │ │ ├── download-tokens.js │ │ │ ├── generate-flags-indexes.js │ │ │ └── generate-icons-indexes.js │ │ │ ├── less │ │ │ ├── _mixins.less │ │ │ ├── _tokens.less │ │ │ ├── _variables.less │ │ │ ├── flags.less │ │ │ ├── fonts.less │ │ │ ├── helpers.less │ │ │ ├── icons.less │ │ │ ├── mixins │ │ │ │ ├── accessibility.less │ │ │ │ ├── animations.less │ │ │ │ ├── choice.less │ │ │ │ ├── forms.less │ │ │ │ ├── icons.less │ │ │ │ ├── tooltip.less │ │ │ │ └── typography.less │ │ │ ├── reboot.less │ │ │ ├── tokens │ │ │ │ ├── _colors.less │ │ │ │ ├── _fonts.less │ │ │ │ ├── _globals.less │ │ │ │ └── _icons.less │ │ │ ├── typography.less │ │ │ └── variables │ │ │ │ ├── components │ │ │ │ ├── action-menu.less │ │ │ │ ├── autocomplete.less │ │ │ │ ├── back-button.less │ │ │ │ ├── badge.less │ │ │ │ ├── box.less │ │ │ │ ├── button.less │ │ │ │ ├── calendar.less │ │ │ │ ├── checkbox.less │ │ │ │ ├── chips.less │ │ │ │ ├── clipboard.less │ │ │ │ ├── collapsible.less │ │ │ │ ├── criteria.less │ │ │ │ ├── datagrid.less │ │ │ │ ├── dropdown.less │ │ │ │ ├── dual-list.less │ │ │ │ ├── field.less │ │ │ │ ├── file.less │ │ │ │ ├── header.less │ │ │ │ ├── inline-adder.less │ │ │ │ ├── input.less │ │ │ │ ├── message.less │ │ │ │ ├── modal.less │ │ │ │ ├── navbar.less │ │ │ │ ├── numeric.less │ │ │ │ ├── pagination.less │ │ │ │ ├── password.less │ │ │ │ ├── popover.less │ │ │ │ ├── progress-tracker.less │ │ │ │ ├── progress.less │ │ │ │ ├── radio.less │ │ │ │ ├── search.less │ │ │ │ ├── select-picker.less │ │ │ │ ├── select.less │ │ │ │ ├── sidebar.less │ │ │ │ ├── skeleton.less │ │ │ │ ├── slideshow.less │ │ │ │ ├── spinner.less │ │ │ │ ├── stepper.less │ │ │ │ ├── switch.less │ │ │ │ ├── tabs.less │ │ │ │ ├── textarea.less │ │ │ │ ├── tile.less │ │ │ │ └── timepicker.less │ │ │ │ ├── content │ │ │ │ ├── abbreviations.less │ │ │ │ ├── descriptions.less │ │ │ │ ├── headings.less │ │ │ │ ├── labels.less │ │ │ │ ├── lines.less │ │ │ │ ├── links.less │ │ │ │ ├── list.less │ │ │ │ └── paragraphs.less │ │ │ │ ├── core │ │ │ │ ├── accessibility.less │ │ │ │ ├── animations.less │ │ │ │ ├── colors.less │ │ │ │ ├── fonts.less │ │ │ │ ├── helpers.less │ │ │ │ ├── icons.less │ │ │ │ └── status.less │ │ │ │ ├── generated │ │ │ │ ├── flags.less │ │ │ │ └── icons.less │ │ │ │ └── shared │ │ │ │ ├── choice.less │ │ │ │ ├── form.less │ │ │ │ └── tooltip.less │ │ │ ├── oui-flags.less │ │ │ ├── oui-icons.less │ │ │ ├── scss │ │ │ ├── _tokens.scss │ │ │ └── tokens │ │ │ │ ├── _colors.scss │ │ │ │ ├── _fonts.scss │ │ │ │ ├── _globals.scss │ │ │ │ └── _icons.scss │ │ │ └── svg │ │ │ ├── flags │ │ │ ├── ad.svg │ │ │ ├── ae.svg │ │ │ ├── am.svg │ │ │ ├── ar.svg │ │ │ ├── at.svg │ │ │ ├── au.svg │ │ │ ├── az.svg │ │ │ ├── bb.svg │ │ │ ├── be.svg │ │ │ ├── bg.svg │ │ │ ├── ca.svg │ │ │ ├── ch.svg │ │ │ ├── ci.svg │ │ │ ├── cl.svg │ │ │ ├── cn.svg │ │ │ ├── cr.svg │ │ │ ├── cu.svg │ │ │ ├── cz.svg │ │ │ ├── de.svg │ │ │ ├── dk.svg │ │ │ ├── es.svg │ │ │ ├── eu.svg │ │ │ ├── fi.svg │ │ │ ├── fr.svg │ │ │ ├── gb-zet.svg │ │ │ ├── gb.svg │ │ │ ├── ge.svg │ │ │ ├── gn.svg │ │ │ ├── gr.svg │ │ │ ├── gw.svg │ │ │ ├── ie.svg │ │ │ ├── in.svg │ │ │ ├── it.svg │ │ │ ├── jm.svg │ │ │ ├── jo.svg │ │ │ ├── jp.svg │ │ │ ├── lt.svg │ │ │ ├── ma.svg │ │ │ ├── ne.svg │ │ │ ├── ng.svg │ │ │ ├── nl.svg │ │ │ ├── pl.svg │ │ │ ├── pt.svg │ │ │ ├── ro.svg │ │ │ ├── se.svg │ │ │ ├── sg.svg │ │ │ ├── sl.svg │ │ │ ├── sn.svg │ │ │ ├── tg.svg │ │ │ ├── th.svg │ │ │ ├── tj.svg │ │ │ ├── tn.svg │ │ │ ├── tr.svg │ │ │ ├── ua.svg │ │ │ ├── us.svg │ │ │ ├── ve.svg │ │ │ └── vn.svg │ │ │ └── icons │ │ │ ├── _helpers │ │ │ └── blank.svg │ │ │ ├── concept │ │ │ ├── anti-ddos-protection_concept.svg │ │ │ ├── app-gear_concept.svg │ │ │ ├── app-replication_concept.svg │ │ │ ├── app-script_concept.svg │ │ │ ├── app-world_concept.svg │ │ │ ├── application_concept.svg │ │ │ ├── arrow-crossed_concept.svg │ │ │ ├── arrow-down_concept.svg │ │ │ ├── arrow-left_concept.svg │ │ │ ├── arrow-right_concept.svg │ │ │ ├── arrow-undo_concept.svg │ │ │ ├── balance_concept.svg │ │ │ ├── bandwidth_concept.svg │ │ │ ├── bell_concept.svg │ │ │ ├── bird_concept.svg │ │ │ ├── book-close_concept.svg │ │ │ ├── book-contact_concept.svg │ │ │ ├── book-open_concept.svg │ │ │ ├── broom_concept.svg │ │ │ ├── brush_concept.svg │ │ │ ├── cable-speed_concept.svg │ │ │ ├── calendar-pay-as-you-go_concept.svg │ │ │ ├── calendar_concept.svg │ │ │ ├── camera_concept.svg │ │ │ ├── cart_concept.svg │ │ │ ├── cdn_concept.svg │ │ │ ├── chatbot_concept.svg │ │ │ ├── chrono_concept.svg │ │ │ ├── clock-available_concept.svg │ │ │ ├── clock_concept.svg │ │ │ ├── cloud-data-sharing_concept.svg │ │ │ ├── cloud-edge-computing_concept.svg │ │ │ ├── cloud-essential_concept.svg │ │ │ ├── cloud-eye_concept.svg │ │ │ ├── cloud-hand_concept.svg │ │ │ ├── cloud-hybrid_concept.svg │ │ │ ├── cloud-infinity_concept.svg │ │ │ ├── cloud-padlock_concept.svg │ │ │ ├── cloud-server_concept.svg │ │ │ ├── cloud_concept.svg │ │ │ ├── cluster_concept.svg │ │ │ ├── community_concept.svg │ │ │ ├── component-square_concept.svg │ │ │ ├── component_concept.svg │ │ │ ├── compute_concept.svg │ │ │ ├── computer-curve_concept.svg │ │ │ ├── computer-floppy_concept.svg │ │ │ ├── computer-folder_concept.svg │ │ │ ├── computer-laptop-cloud_concept.svg │ │ │ ├── computer-laptop_concept.svg │ │ │ ├── computer-v-r-ops_concept.svg │ │ │ ├── computer_concept.svg │ │ │ ├── container_concept.svg │ │ │ ├── counter_concept.svg │ │ │ ├── credit-card-clock_concept.svg │ │ │ ├── credit-card_concept.svg │ │ │ ├── curve_concept.svg │ │ │ ├── database-cold-archive_concept.svg │ │ │ ├── database-sql_concept.svg │ │ │ ├── database_concept.svg │ │ │ ├── datacenter_concept.svg │ │ │ ├── device-mobile_concept.svg │ │ │ ├── device-tablet_concept.svg │ │ │ ├── diamond_concept.svg │ │ │ ├── different_concept.svg │ │ │ ├── dns-anycast_concept.svg │ │ │ ├── domains_concept.svg │ │ │ ├── download_concept.svg │ │ │ ├── dslam_concept.svg │ │ │ ├── enterprise-file-storage_concept.svg │ │ │ ├── envelop-letter_concept.svg │ │ │ ├── envelop_concept.svg │ │ │ ├── ethernet-add_concept.svg │ │ │ ├── ethernet_concept.svg │ │ │ ├── expansion-arrows_concept.svg │ │ │ ├── export_concept.svg │ │ │ ├── eye_concept.svg │ │ │ ├── flask_concept.svg │ │ │ ├── floppy-clock_concept.svg │ │ │ ├── floppy-reload_concept.svg │ │ │ ├── floppy_concept.svg │ │ │ ├── folder-ftp_concept.svg │ │ │ ├── folder_concept.svg │ │ │ ├── gear-arrow_concept.svg │ │ │ ├── gear-dollar_concept.svg │ │ │ ├── gear_concept.svg │ │ │ ├── geolocalisation-ovhcloud_concept.svg │ │ │ ├── geolocalisation-plan_concept.svg │ │ │ ├── gift_concept.svg │ │ │ ├── graph_concept.svg │ │ │ ├── hand-leaf_concept.svg │ │ │ ├── hand-world_concept.svg │ │ │ ├── handshake_concept.svg │ │ │ ├── hardware-gpu_concept.svg │ │ │ ├── hardware-sata_concept.svg │ │ │ ├── hardware-ssd_concept.svg │ │ │ ├── hashtag_concept.svg │ │ │ ├── hourglass_concept.svg │ │ │ ├── house_concept.svg │ │ │ ├── import_concept.svg │ │ │ ├── infinite_concept.svg │ │ │ ├── info_concept.svg │ │ │ ├── invader_concept.svg │ │ │ ├── io-t_concept.svg │ │ │ ├── key_concept.svg │ │ │ ├── keypad_concept.svg │ │ │ ├── leaf_concept.svg │ │ │ ├── lifebuoy_concept.svg │ │ │ ├── lightbulb_concept.svg │ │ │ ├── line-communicating_concept.svg │ │ │ ├── lines-symmetrical_concept.svg │ │ │ ├── magnifying-glass-check_concept.svg │ │ │ ├── magnifying-glass-person_concept.svg │ │ │ ├── magnifying-glass_concept.svg │ │ │ ├── map-france_concept.svg │ │ │ ├── measure_concept.svg │ │ │ ├── medal_concept.svg │ │ │ ├── microphone_concept.svg │ │ │ ├── modem_concept.svg │ │ │ ├── multi-device_concept.svg │ │ │ ├── network_concept.svg │ │ │ ├── newtab_concept.svg │ │ │ ├── nra_concept.svg │ │ │ ├── nutanix_concept.svg │ │ │ ├── nutanix_concept_tm.svg │ │ │ ├── openstack_concept.svg │ │ │ ├── over-the-box_concept.svg │ │ │ ├── padlock-closed_concept.svg │ │ │ ├── padlock-opened_concept.svg │ │ │ ├── padlock-transit_concept.svg │ │ │ ├── page-certificate_concept.svg │ │ │ ├── page-info_concept.svg │ │ │ ├── page-question_concept.svg │ │ │ ├── page-script_concept.svg │ │ │ ├── page_concept.svg │ │ │ ├── paperplane_concept.svg │ │ │ ├── partner-platformsh_concept.svg │ │ │ ├── pause_concept.svg │ │ │ ├── pen_concept.svg │ │ │ ├── person-happy_concept.svg │ │ │ ├── person_concept.svg │ │ │ ├── phone-dots_concept.svg │ │ │ ├── phone-filter_concept.svg │ │ │ ├── phone-fobidden_concept.svg │ │ │ ├── phone-forward_concept.svg │ │ │ ├── phone_concept.svg │ │ │ ├── pig_concept.svg │ │ │ ├── play_concept.svg │ │ │ ├── plug-n-play_concept.svg │ │ │ ├── power_concept.svg │ │ │ ├── printer_concept.svg │ │ │ ├── puzzle_concept.svg │ │ │ ├── ram_concept.svg │ │ │ ├── receipt_concept.svg │ │ │ ├── reload_concept.svg │ │ │ ├── replication_concept.svg │ │ │ ├── rss_concept.svg │ │ │ ├── scale-up_concept.svg │ │ │ ├── server-gear_concept.svg │ │ │ ├── server-managed_concept.svg │ │ │ ├── server_concept.svg │ │ │ ├── share_concept.svg │ │ │ ├── shield_concept.svg │ │ │ ├── smiley-happy_concept.svg │ │ │ ├── smiley-sad_concept.svg │ │ │ ├── sms_concept.svg │ │ │ ├── software_concept.svg │ │ │ ├── spanner_concept.svg │ │ │ ├── speaker-off_concept.svg │ │ │ ├── speaker-on_concept.svg │ │ │ ├── speech-bubble_concept.svg │ │ │ ├── star_concept.svg │ │ │ ├── stop_concept.svg │ │ │ ├── sub-repartitor_concept.svg │ │ │ ├── tape_concept.svg │ │ │ ├── thumb-up_concept.svg │ │ │ ├── todo-list_concept.svg │ │ │ ├── traffic-cone_concept.svg │ │ │ ├── transfer_concept.svg │ │ │ ├── trash_concept.svg │ │ │ ├── truck_concept.svg │ │ │ ├── trusted_concept.svg │ │ │ ├── typing_concept.svg │ │ │ ├── upload_concept.svg │ │ │ ├── user-forbid_concept.svg │ │ │ ├── user-support_concept.svg │ │ │ ├── user_concept.svg │ │ │ ├── vRack-services_concept.svg │ │ │ ├── virtual-machine_concept.svg │ │ │ ├── wallet_concept.svg │ │ │ ├── warning_concept.svg │ │ │ ├── wifi_concept.svg │ │ │ ├── world-add_concept.svg │ │ │ └── world_concept.svg │ │ │ └── system │ │ │ ├── add.svg │ │ │ ├── arrow-down-left-arrow-up-right-to-center.svg │ │ │ ├── arrow-down-right.svg │ │ │ ├── arrow-down.svg │ │ │ ├── arrow-left.svg │ │ │ ├── arrow-right.svg │ │ │ ├── arrow-transfer.svg │ │ │ ├── arrow-up-right-arrow-down-left-from-center.svg │ │ │ ├── arrow-up-right.svg │ │ │ ├── arrow-up.svg │ │ │ ├── bell.svg │ │ │ ├── bin.svg │ │ │ ├── book.svg │ │ │ ├── calendar.svg │ │ │ ├── cart.svg │ │ │ ├── chat.svg │ │ │ ├── check.svg │ │ │ ├── chevron-down.svg │ │ │ ├── chevron-left.svg │ │ │ ├── chevron-right.svg │ │ │ ├── chevron-up-down.svg │ │ │ ├── chevron-up.svg │ │ │ ├── clock-wait.svg │ │ │ ├── close.svg │ │ │ ├── copy.svg │ │ │ ├── ellipsis-vertical.svg │ │ │ ├── ellipsis.svg │ │ │ ├── email.svg │ │ │ ├── equal.svg │ │ │ ├── error-circle.svg │ │ │ ├── error.svg │ │ │ ├── external-link.svg │ │ │ ├── eye-closed.svg │ │ │ ├── eye-open.svg │ │ │ ├── file.svg │ │ │ ├── filter.svg │ │ │ ├── folder.svg │ │ │ ├── gear.svg │ │ │ ├── guides.svg │ │ │ ├── hamburger.svg │ │ │ ├── help-circle.svg │ │ │ ├── help.svg │ │ │ ├── home.svg │ │ │ ├── indeterminate.svg │ │ │ ├── info-circle.svg │ │ │ ├── info.svg │ │ │ ├── lightbulb.svg │ │ │ ├── list.svg │ │ │ ├── location.svg │ │ │ ├── lock.svg │ │ │ ├── minus.svg │ │ │ ├── ok.svg │ │ │ ├── ovh.svg │ │ │ ├── pause.svg │ │ │ ├── pen.svg │ │ │ ├── phone.svg │ │ │ ├── play.svg │ │ │ ├── plus.svg │ │ │ ├── printer.svg │ │ │ ├── refresh.svg │ │ │ ├── remove.svg │ │ │ ├── search.svg │ │ │ ├── settings.svg │ │ │ ├── shape-circle.svg │ │ │ ├── shape-dot.svg │ │ │ ├── sort-down.svg │ │ │ ├── sort-up.svg │ │ │ ├── sort.svg │ │ │ ├── success-circle.svg │ │ │ ├── success.svg │ │ │ ├── time.svg │ │ │ ├── transfer.svg │ │ │ ├── trash.svg │ │ │ ├── triangle-down.svg │ │ │ ├── triangle-left.svg │ │ │ ├── triangle-right.svg │ │ │ ├── triangle-up.svg │ │ │ ├── truck.svg │ │ │ ├── user.svg │ │ │ ├── warning-circle.svg │ │ │ └── warning.svg │ └── test │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ ├── karma.base.config.js │ │ └── test-utils.js ├── components │ ├── README.md │ ├── action-menu │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── action-menu.component.js │ │ │ ├── action-menu.controller.js │ │ │ ├── action-menu.html │ │ │ └── action-menu.spec.js │ │ │ └── less │ │ │ └── action-menu.less │ ├── autocomplete │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── autocomplete.controller.js │ │ │ ├── autocomplete.directive.js │ │ │ ├── autocomplete.html │ │ │ ├── autocomplete.provider.js │ │ │ ├── autocomplete.spec.data.json │ │ │ ├── autocomplete.spec.js │ │ │ └── filter │ │ │ │ └── autocomplete-highlight.filter.js │ │ │ └── less │ │ │ └── autocomplete.less │ ├── back-button │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── back-button.component.js │ │ │ ├── back-button.controller.js │ │ │ ├── back-button.html │ │ │ ├── back-button.provider.js │ │ │ └── back-button.spec.js │ │ │ └── less │ │ │ └── back-button.less │ ├── badge │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ └── less │ │ │ └── badge.less │ ├── box │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ └── less │ │ │ └── box.less │ ├── button │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── button.component.js │ │ │ ├── button.controller.js │ │ │ ├── button.html │ │ │ └── button.spec.js │ │ │ └── less │ │ │ ├── _mixins.less │ │ │ ├── button-group.less │ │ │ └── button.less │ ├── calendar │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── calendar.component.js │ │ │ ├── calendar.controller.js │ │ │ ├── calendar.html │ │ │ ├── calendar.provider.js │ │ │ └── calendar.spec.js │ │ │ └── less │ │ │ ├── calendar.less │ │ │ └── flatpickr.less │ ├── checkbox │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── checkbox.component.js │ │ │ ├── checkbox.controller.js │ │ │ ├── checkbox.html │ │ │ └── checkbox.spec.js │ │ │ └── less │ │ │ ├── _mixins.less │ │ │ ├── checkbox-thumbnail.less │ │ │ └── checkbox.less │ ├── chips │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── chips.component.js │ │ │ ├── chips.controller.js │ │ │ ├── chips.html │ │ │ ├── chips.spec.data.json │ │ │ └── chips.spec.js │ │ │ └── less │ │ │ └── chips.less │ ├── clipboard │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── clipboard.component.js │ │ │ ├── clipboard.controller.js │ │ │ ├── clipboard.html │ │ │ ├── clipboard.provider.js │ │ │ └── clipboard.spec.js │ │ │ └── less │ │ │ └── clipboard.less │ ├── collapsible │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── collapsible.component.js │ │ │ ├── collapsible.controller.js │ │ │ ├── collapsible.html │ │ │ └── collapsible.spec.js │ │ │ └── less │ │ │ └── collapsible.less │ ├── criteria │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── adder │ │ │ │ ├── criteria-adder.component.js │ │ │ │ ├── criteria-adder.controller.js │ │ │ │ ├── criteria-adder.html │ │ │ │ ├── criteria-adder.provider.js │ │ │ │ ├── criteria-adder.spec.data.json │ │ │ │ └── criteria-adder.spec.js │ │ │ ├── criteria.component.js │ │ │ ├── criteria.controller.js │ │ │ ├── criteria.html │ │ │ └── criteria.spec.js │ │ │ └── less │ │ │ └── criteria.less │ ├── datagrid │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── cell │ │ │ │ ├── cell.component.js │ │ │ │ └── cell.controller.js │ │ │ ├── columns.spec.data.json │ │ │ ├── datagrid-column-builder.service.js │ │ │ ├── datagrid.controller.js │ │ │ ├── datagrid.directive.js │ │ │ ├── datagrid.html │ │ │ ├── datagrid.provider.js │ │ │ ├── datagrid.service.js │ │ │ ├── datagrid.spec.data.json │ │ │ ├── datagrid.spec.js │ │ │ ├── filter │ │ │ │ ├── basic.js │ │ │ │ ├── comparator-resolver.js │ │ │ │ ├── date.js │ │ │ │ ├── filter.js │ │ │ │ ├── filter.spec.js │ │ │ │ ├── number.js │ │ │ │ └── string.js │ │ │ ├── paging │ │ │ │ ├── datagrid-local-paging.js │ │ │ │ ├── datagrid-paging-abstract.js │ │ │ │ ├── datagrid-paging.service.js │ │ │ │ └── datagrid-remote-paging.js │ │ │ ├── parameters │ │ │ │ ├── datagrid-parameters.component.js │ │ │ │ ├── datagrid-parameters.controller.js │ │ │ │ ├── datagrid-parameters.html │ │ │ │ └── datagrid-parameters.spec.js │ │ │ ├── row-detail │ │ │ │ ├── datagrid-row-detail.component.js │ │ │ │ └── datagrid-row-detail.controller.js │ │ │ ├── servers.spec.data.json │ │ │ └── topbar │ │ │ │ ├── datagrid-topbar.component.js │ │ │ │ └── datagrid-topbar.controller.js │ │ │ └── less │ │ │ ├── _mixins.less │ │ │ ├── datagrid.less │ │ │ └── table.less │ ├── dropdown │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── content │ │ │ │ └── dropdown-content.directive.js │ │ │ ├── divider │ │ │ │ └── dropdown-divider.component.js │ │ │ ├── dropdown.component.js │ │ │ ├── dropdown.controller.js │ │ │ ├── dropdown.spec.js │ │ │ ├── group │ │ │ │ ├── dropdown-group.component.js │ │ │ │ ├── dropdown-group.controller.js │ │ │ │ └── dropdown-group.html │ │ │ ├── item │ │ │ │ ├── dropdown-item.component.js │ │ │ │ ├── dropdown-item.controller.js │ │ │ │ └── dropdown-item.html │ │ │ └── trigger │ │ │ │ ├── dropdown-trigger.controller.js │ │ │ │ ├── dropdown-trigger.directive.js │ │ │ │ └── dropdown-trigger.html │ │ │ └── less │ │ │ └── dropdown.less │ ├── dual-list │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── dual-list.component.js │ │ │ ├── dual-list.controller.js │ │ │ ├── dual-list.provider.js │ │ │ ├── dual-list.spec.data.json │ │ │ ├── dual-list.spec.js │ │ │ ├── source │ │ │ │ ├── dual-list-source.component.js │ │ │ │ ├── dual-list-source.controller.js │ │ │ │ └── dual-list-source.html │ │ │ └── target │ │ │ │ ├── dual-list-target.component.js │ │ │ │ ├── dual-list-target.controller.js │ │ │ │ └── dual-list-target.html │ │ │ └── less │ │ │ └── dual-list.less │ ├── field │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── field.component.js │ │ │ ├── field.controller.js │ │ │ ├── field.html │ │ │ ├── field.provider.js │ │ │ └── field.spec.js │ │ │ └── less │ │ │ └── field.less │ ├── file │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── file.component.js │ │ │ ├── file.controller.js │ │ │ ├── file.html │ │ │ ├── file.provider.js │ │ │ └── file.spec.js │ │ │ └── less │ │ │ └── file.less │ ├── form-actions │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── form-actions.component.js │ │ │ ├── form-actions.controller.js │ │ │ ├── form-actions.html │ │ │ ├── form-actions.provider.js │ │ │ └── form-actions.spec.js │ │ │ └── less │ │ │ └── form-actions.less │ ├── guide-menu │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ └── js │ │ │ ├── guide-menu.component.js │ │ │ ├── guide-menu.controller.js │ │ │ ├── guide-menu.html │ │ │ └── guide-menu.spec.js │ ├── header │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── header.component.js │ │ │ ├── header.controller.js │ │ │ ├── header.html │ │ │ ├── header.spec.js │ │ │ └── tabs │ │ │ │ ├── dropdown │ │ │ │ ├── header-tabs-dropdown.component.js │ │ │ │ ├── header-tabs-dropdown.controller.js │ │ │ │ └── header-tabs-dropdown.html │ │ │ │ ├── header-tabs.component.js │ │ │ │ ├── header-tabs.controller.js │ │ │ │ ├── header-tabs.html │ │ │ │ ├── header-tabs.spec.js │ │ │ │ └── item │ │ │ │ ├── header-tabs-item.component.js │ │ │ │ ├── header-tabs-item.controller.js │ │ │ │ └── header-tabs-item.html │ │ │ └── less │ │ │ ├── header-tabs.less │ │ │ └── header.less │ ├── inline-adder │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── field │ │ │ │ ├── inline-adder-field.component.js │ │ │ │ └── inline-adder-field.controller.js │ │ │ ├── inline-adder.component.js │ │ │ ├── inline-adder.controller.js │ │ │ ├── inline-adder.html │ │ │ ├── inline-adder.provider.js │ │ │ ├── inline-adder.spec.js │ │ │ └── row │ │ │ │ └── inline-adder-row.component.js │ │ │ └── less │ │ │ └── inline-adder.less │ ├── input │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ └── less │ │ │ ├── input-group.less │ │ │ ├── input-overlay.less │ │ │ └── input.less │ ├── message │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── message.component.js │ │ │ ├── message.controller.js │ │ │ ├── message.html │ │ │ └── message.spec.js │ │ │ └── less │ │ │ ├── _mixins.less │ │ │ └── message.less │ ├── modal │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── modal.component.js │ │ │ ├── modal.controller.js │ │ │ ├── modal.html │ │ │ └── modal.spec.js │ │ │ └── less │ │ │ └── modal.less │ ├── navbar │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── brand │ │ │ │ ├── navbar-brand.component.js │ │ │ │ └── navbar-brand.html │ │ │ ├── dropdown │ │ │ │ ├── menu │ │ │ │ │ └── navbar-dropdown-menu.component.js │ │ │ │ ├── navbar-dropdown.component.js │ │ │ │ ├── navbar-dropdown.controller.js │ │ │ │ └── navbar-dropdown.html │ │ │ ├── group │ │ │ │ ├── navbar-group.controller.js │ │ │ │ └── navbar-group.directive.js │ │ │ ├── keyboard-keys.constant.js │ │ │ ├── link │ │ │ │ ├── navbar-link.component.js │ │ │ │ ├── navbar-link.controller.js │ │ │ │ └── navbar-link.html │ │ │ ├── menu │ │ │ │ ├── navbar-menu.component.js │ │ │ │ ├── navbar-menu.controller.js │ │ │ │ └── navbar-menu.html │ │ │ ├── navbar.component.js │ │ │ ├── navbar.controller.js │ │ │ ├── navbar.html │ │ │ ├── navbar.provider.js │ │ │ ├── navbar.spec.data.json │ │ │ ├── navbar.spec.js │ │ │ ├── notification │ │ │ │ ├── navbar-notification.component.js │ │ │ │ ├── navbar-notification.controller.js │ │ │ │ └── navbar-notification.html │ │ │ └── toggler │ │ │ │ ├── navbar-toggler.component.js │ │ │ │ ├── navbar-toggler.controller.js │ │ │ │ └── navbar-toggler.html │ │ │ └── less │ │ │ ├── _mixins.less │ │ │ └── navbar.less │ ├── numeric │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── numeric.component.js │ │ │ ├── numeric.controller.js │ │ │ ├── numeric.html │ │ │ └── numeric.spec.js │ │ │ └── less │ │ │ └── numeric.less │ ├── pagination │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── pagination.component.js │ │ │ ├── pagination.controller.js │ │ │ ├── pagination.html │ │ │ ├── pagination.provider.js │ │ │ └── pagination.spec.js │ │ │ └── less │ │ │ └── pagination.less │ ├── password │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── password.component.js │ │ │ ├── password.controller.js │ │ │ ├── password.html │ │ │ ├── password.provider.js │ │ │ ├── password.spec.js │ │ │ ├── rule │ │ │ │ ├── password-rule.component.js │ │ │ │ ├── password-rule.controller.js │ │ │ │ └── password-rule.html │ │ │ └── strength │ │ │ │ ├── password-strength.component.js │ │ │ │ ├── password-strength.controller.js │ │ │ │ └── password-strength.html │ │ │ └── less │ │ │ └── password.less │ ├── popover │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── popover.controller.js │ │ │ ├── popover.directive.js │ │ │ ├── popover.html │ │ │ └── popover.spec.js │ │ │ └── less │ │ │ └── popover.less │ ├── progress-tracker │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ └── less │ │ │ └── progress-tracker.less │ ├── progress │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── bar │ │ │ │ ├── progress-bar.component.js │ │ │ │ ├── progress-bar.controller.js │ │ │ │ └── progress-bar.html │ │ │ ├── progress.component.js │ │ │ ├── progress.controller.js │ │ │ ├── progress.spec.js │ │ │ └── threshold │ │ │ │ ├── progress-threshold.component.js │ │ │ │ └── progress-threshold.controller.js │ │ │ └── less │ │ │ └── progress.less │ ├── radio │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── group │ │ │ │ ├── radio-group.component.js │ │ │ │ └── radio-group.controller.js │ │ │ ├── radio.component.js │ │ │ ├── radio.controller.js │ │ │ ├── radio.html │ │ │ ├── radio.spec.js │ │ │ └── toggle-group │ │ │ │ └── radio-toggle-group.component.js │ │ │ └── less │ │ │ ├── _mixins.less │ │ │ ├── radio-thumbnail.less │ │ │ ├── radio-toggle-group.less │ │ │ └── radio.less │ ├── search │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── search.component.js │ │ │ ├── search.controller.js │ │ │ ├── search.html │ │ │ └── search.spec.js │ │ │ └── less │ │ │ └── search.less │ ├── select-picker │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── section │ │ │ │ └── select-picker-section.component.js │ │ │ ├── select-picker.component.js │ │ │ ├── select-picker.controller.js │ │ │ ├── select-picker.html │ │ │ └── select-picker.spec.js │ │ │ └── less │ │ │ └── select-picker.less │ ├── select │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── select.controller.js │ │ │ ├── select.directive.js │ │ │ ├── select.html │ │ │ ├── select.provider.js │ │ │ ├── select.spec.data.json │ │ │ ├── select.spec.js │ │ │ └── templates │ │ │ │ ├── choices.html │ │ │ │ ├── footer.html │ │ │ │ ├── header.html │ │ │ │ ├── match-multiple.html │ │ │ │ ├── match.html │ │ │ │ ├── no-choice.html │ │ │ │ ├── select-multiple.html │ │ │ │ └── select.html │ │ │ └── less │ │ │ ├── _mixins.less │ │ │ ├── select.less │ │ │ └── ui-select.less │ ├── sidebar │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ └── less │ │ │ └── sidebar.less │ ├── skeleton │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── skeleton.component.js │ │ │ ├── skeleton.controller.js │ │ │ ├── skeleton.html │ │ │ └── skeleton.spec.js │ │ │ └── less │ │ │ ├── _mixins.less │ │ │ └── skeleton.less │ ├── slideshow │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── panel │ │ │ │ ├── slideshow-panel.component.js │ │ │ │ ├── slideshow-panel.controller.js │ │ │ │ └── slideshow-panel.html │ │ │ ├── slideshow.component.js │ │ │ ├── slideshow.controller.js │ │ │ ├── slideshow.html │ │ │ └── slideshow.spec.js │ │ │ └── less │ │ │ └── slideshow.less │ ├── spinner │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── assets │ │ │ ├── spinner_l.png │ │ │ ├── spinner_m.png │ │ │ └── spinner_s.png │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── spinner.component.js │ │ │ ├── spinner.controller.js │ │ │ ├── spinner.html │ │ │ └── spinner.spec.js │ │ │ └── less │ │ │ └── spinner.less │ ├── stepper │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── filter │ │ │ │ └── unsafe.filter.js │ │ │ ├── step-form │ │ │ │ ├── step-form.component.js │ │ │ │ ├── step-form.controller.js │ │ │ │ └── step-form.html │ │ │ ├── stepper.component.js │ │ │ ├── stepper.controller.js │ │ │ ├── stepper.html │ │ │ ├── stepper.provider.js │ │ │ └── stepper.spec.js │ │ │ └── less │ │ │ └── stepper.less │ ├── switch │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── switch.component.js │ │ │ ├── switch.controller.js │ │ │ ├── switch.html │ │ │ └── switch.spec.js │ │ │ └── less │ │ │ └── switch.less │ ├── tabs │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── item │ │ │ │ ├── tabs-item.component.js │ │ │ │ ├── tabs-item.controller.js │ │ │ │ └── tabs-item.html │ │ │ ├── tabs.component.js │ │ │ ├── tabs.controller.js │ │ │ ├── tabs.html │ │ │ └── tabs.spec.js │ │ │ └── less │ │ │ └── tabs.less │ ├── textarea │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── textarea.component.js │ │ │ ├── textarea.controller.js │ │ │ ├── textarea.html │ │ │ ├── textarea.provider.js │ │ │ └── textarea.spec.js │ │ │ └── less │ │ │ └── textarea.less │ ├── tile │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── button │ │ │ │ ├── tile-button.component.js │ │ │ │ ├── tile-button.controller.js │ │ │ │ └── tile-button.html │ │ │ ├── definition │ │ │ │ ├── tile-definition.component.js │ │ │ │ ├── tile-definition.controller.js │ │ │ │ └── tile-definition.html │ │ │ ├── tile.component.js │ │ │ ├── tile.controller.js │ │ │ ├── tile.html │ │ │ └── tile.spec.js │ │ │ └── less │ │ │ └── tile.less │ ├── timepicker │ │ ├── .config │ │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ │ ├── index.js │ │ │ ├── index.less │ │ │ ├── index.spec.js │ │ │ ├── js │ │ │ ├── timepicker.component.js │ │ │ ├── timepicker.controller.js │ │ │ ├── timepicker.html │ │ │ └── timepicker.spec.js │ │ │ └── less │ │ │ └── timepicker.less │ └── tooltip │ │ ├── .config │ │ └── karma.conf.js │ │ ├── README.md │ │ ├── package.json │ │ └── src │ │ ├── index.js │ │ ├── index.less │ │ ├── index.spec.js │ │ ├── js │ │ ├── tooltip.controller.js │ │ ├── tooltip.directive.js │ │ ├── tooltip.html │ │ └── tooltip.spec.js │ │ └── less │ │ └── tooltip.less └── libs │ └── ui-kit │ ├── CHANGELOG.md │ ├── README.md │ ├── V2-TO-V3.md │ ├── V3-TO-V4.md │ └── package.json └── yarn.lock /.browserslistrc: -------------------------------------------------------------------------------- 1 | # Browsers that we support 2 | last 2 versions 3 | ie 11 4 | -------------------------------------------------------------------------------- /.commitlintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "@commitlint/config-angular" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("../packages/base/test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'packages/components/**/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | 10 | # Change these settings to your own preference 11 | indent_style = space 12 | indent_size = 2 13 | 14 | # We recommend you to keep these unchanged 15 | end_of_line = lf 16 | charset = utf-8 17 | trim_trailing_whitespace = true 18 | insert_final_newline = true 19 | 20 | [*.html] 21 | indent_style = space 22 | indent_size = 4 23 | 24 | [*.md] 25 | trim_trailing_whitespace = false 26 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .preview-host 3 | *.log 4 | coverage 5 | dist 6 | docs 7 | node_modules 8 | storybook-static 9 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Enforce Unix newlines 2 | * text eol=lf 3 | 4 | # Don't diff or textually merge 5 | *.map binary 6 | *.woff binary 7 | *.woff2 binary 8 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @ovh/team-manager-dev 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .history 2 | .idea 3 | .preview-host 4 | *.log 5 | coverage 6 | dist 7 | packages/**/docs 8 | node_modules 9 | storybook-static 10 | -------------------------------------------------------------------------------- /.huskyrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "hooks": { 3 | "pre-commit": "lint-staged", 4 | "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /.lintstagedrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "*.js": [ 3 | "eslint --fix", 4 | "git add" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /.stylelintignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | storybook-static 4 | -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "rules": { 4 | "indentation": [2, { "ignore": ["inside-parens"] }], 5 | "function-calc-no-invalid": null, 6 | "length-zero-no-unit": null, 7 | "no-descending-specificity": null, 8 | "selector-type-no-unknown": [true, { "ignore": ["custom-elements"] }] 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | # This is the official list of ovh-ui-kit authors for copyright purposes. 2 | # This file is distinct from the CONTRIBUTORS files 3 | # and it lists the copyright holders only. 4 | 5 | # Names should be added to this file as one of 6 | # Organization's name 7 | # Individual's name 8 | # Individual's name 9 | # See CONTRIBUTORS for the meaning of multiple email addresses. 10 | 11 | # Please keep the list sorted. 12 | 13 | OVH SAS 14 | -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/favicon.ico -------------------------------------------------------------------------------- /docs/main.5192a60851961a7ec06c.bundle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"main.5192a60851961a7ec06c.bundle.js","sources":["webpack:///main.5192a60851961a7ec06c.bundle.js"],"mappings":"AAAA","sourceRoot":""} -------------------------------------------------------------------------------- /docs/runtime~main.5192a60851961a7ec06c.bundle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"runtime~main.5192a60851961a7ec06c.bundle.js","sources":["webpack:///runtime~main.5192a60851961a7ec06c.bundle.js"],"mappings":"AAAA","sourceRoot":""} -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-Black.2e8e26a6.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-Black.2e8e26a6.woff -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-Black.e48a1277.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-Black.e48a1277.woff2 -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-BlackIt.000042f8.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-BlackIt.000042f8.woff2 -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-BlackIt.a55f2724.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-BlackIt.a55f2724.woff -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-Bold.2f5f78b0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-Bold.2f5f78b0.woff2 -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-Bold.cc73e575.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-Bold.cc73e575.woff -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-BoldIt.0f263b75.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-BoldIt.0f263b75.woff -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-BoldIt.4f720da3.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-BoldIt.4f720da3.woff2 -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-ExtraLight.0c88d5dc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-ExtraLight.0c88d5dc.woff -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-ExtraLight.1725fa7c.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-ExtraLight.1725fa7c.woff2 -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-ExtraLightIt.0d57bf81.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-ExtraLightIt.0d57bf81.woff2 -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-ExtraLightIt.66a9958d.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-ExtraLightIt.66a9958d.woff -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-It.48a461b5.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-It.48a461b5.woff2 -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-It.8ca7f598.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-It.8ca7f598.woff -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-Light.65f54bd3.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-Light.65f54bd3.woff2 -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-Light.d57fc162.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-Light.d57fc162.woff -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-LightIt.ab1337cc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-LightIt.ab1337cc.woff -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-LightIt.ca833674.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-LightIt.ca833674.woff2 -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-Regular.6e43a2be.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-Regular.6e43a2be.woff -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-Regular.f963ed83.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-Regular.f963ed83.woff2 -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-Semibold.58b282b3.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-Semibold.58b282b3.woff -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-Semibold.acbf737b.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-Semibold.acbf737b.woff2 -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-SemiboldIt.13959811.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-SemiboldIt.13959811.woff -------------------------------------------------------------------------------- /docs/static/media/SourceSansPro-SemiboldIt.4cc0e276.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/SourceSansPro-SemiboldIt.4cc0e276.woff2 -------------------------------------------------------------------------------- /docs/static/media/oui-icons.5c1c287a.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/oui-icons.5c1c287a.woff2 -------------------------------------------------------------------------------- /docs/static/media/oui-icons.8a25ae9b.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/docs/static/media/oui-icons.8a25ae9b.woff -------------------------------------------------------------------------------- /docs/vendors~main.5192a60851961a7ec06c.bundle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"vendors~main.5192a60851961a7ec06c.bundle.js","sources":["webpack:///vendors~main.5192a60851961a7ec06c.bundle.js"],"mappings":";AAAA","sourceRoot":""} -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "lerna": "3.4.3", 3 | "command": { 4 | "version": { 5 | "message": "build(release): bump version to v%s" 6 | } 7 | }, 8 | "packages": [ 9 | "packages/apps/*", 10 | "packages/base/*", 11 | "packages/components/*", 12 | "packages/libs/*", 13 | "packages/vendors/*" 14 | ], 15 | "npmClient": "yarn", 16 | "useWorkspaces": true, 17 | "version": "independent" 18 | } 19 | -------------------------------------------------------------------------------- /packages/apps/builder/src/oui-flags.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * @ovh-ux/ui-kit.flags 3 | */ 4 | 5 | @rem-base: rem-base(16px); 6 | 7 | @import '~@ovh-ux/ui-kit.core/src/oui-flags'; 8 | -------------------------------------------------------------------------------- /packages/apps/builder/src/oui-icons.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * @ovh-ux/ui-kit.icons 3 | */ 4 | 5 | @rem-base: rem-base(16px); 6 | 7 | @import '~@ovh-ux/ui-kit.core/src/oui-icons'; 8 | -------------------------------------------------------------------------------- /packages/apps/builder/src/oui.js: -------------------------------------------------------------------------------- 1 | import moduleName from '@ovh-ux/ui-kit.components'; 2 | 3 | export default moduleName; 4 | -------------------------------------------------------------------------------- /packages/apps/builder/src/oui.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * @ovh-ux/ui-kit 3 | */ 4 | 5 | @rem-base: rem-base(16px); 6 | 7 | @import '~@ovh-ux/ui-kit.core/src/index'; 8 | @import '~@ovh-ux/ui-kit.components/src/index'; 9 | -------------------------------------------------------------------------------- /packages/apps/workshop/.storybook/main.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | stories: [ 3 | '../stories/**/*', 4 | ], 5 | addons: [ 6 | // For panels 7 | // Order of imports defined tabs order in Storybook 8 | '@storybook/addon-knobs', 9 | '@storybook/addon-storysource', 10 | '@storybook/addon-actions', 11 | '@storybook/addon-a11y', 12 | 13 | // For toolbar 14 | '@storybook/addon-docs/register', 15 | '@storybook/addon-backgrounds', 16 | '@storybook/addon-viewport', 17 | ], 18 | }; 19 | -------------------------------------------------------------------------------- /packages/apps/workshop/.storybook/manager.js: -------------------------------------------------------------------------------- 1 | import { addons } from '@storybook/addons'; 2 | import { create } from '@storybook/theming/create'; 3 | 4 | const theme = create({ 5 | base: 'light', 6 | }); 7 | 8 | addons.setConfig({ 9 | theme, 10 | }); 11 | -------------------------------------------------------------------------------- /packages/apps/workshop/README.md: -------------------------------------------------------------------------------- 1 | This package contains all stories for our Storybook documentation 2 | 3 | # Getting started 4 | 5 | Install and run Storybook in a dev mode 6 | 7 | ```sh 8 | yarn 9 | yarn start 10 | ``` 11 | 12 | # Generate static documentation 13 | 14 | Build static version of Storybook 15 | 16 | ```sh 17 | yarn build 18 | ``` 19 | -------------------------------------------------------------------------------- /packages/apps/workshop/src/utils.js: -------------------------------------------------------------------------------- 1 | export function compileTemplate(template, scope = {}) { 2 | return { template, scope }; 3 | } 4 | 5 | export default { 6 | compileTemplate, 7 | }; 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/_data/chips.data.json: -------------------------------------------------------------------------------- 1 | { 2 | "items": [{ 3 | "title": "Lorem", 4 | "foo": "bar" 5 | }, { 6 | "title": "Ipsum", 7 | "foo": "bar" 8 | }, { 9 | "title": "Dolor", 10 | "foo": "bar" 11 | }, { 12 | "title": "Sit", 13 | "foo": "bar" 14 | }, { 15 | "title": "Amet", 16 | "foo": "bar" 17 | }] 18 | } 19 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/action-menu/action-menu.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit.action-menu/README.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/back-button/back-button.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.back-button/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/badge/badge.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit.badge/README.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/box/box.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit.box/README.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/button/button.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit.button/README.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/calendar/calendar.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit.calendar/README.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/checkbox/checkbox.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit.checkbox/README.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/chips/chips.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit.chips/README.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/clipboard/clipboard.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit.clipboard/README.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/collapsible/collapsible.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit.collapsible/README.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/criteria/criteria.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.criteria/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/datagrid/datagrid.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.datagrid/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/dropdown/dropdown.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.dropdown/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/dual-list/dual-list.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.dual-list/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/field/field.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.field/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/file/file.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.file/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/form-actions/form-actions.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.form-actions/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/guide-menu/guide-menu.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.guide-menu/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/header/header.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.header/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/inline-adder/inline-adder.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.inline-adder/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/input/input.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.input/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/message/message.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.message/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/modal/modal.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.modal/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/navbar/navbar.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.navbar/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/numeric/numeric.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.numeric/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/pagination/pagination.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.pagination/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/password/password.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.password/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/progress-tracker/progress-tracker.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.progress-tracker/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/progress/progress.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.progress/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/radio/radio.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.radio/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/search/search.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.search/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/select-picker/select-picker.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.select-picker/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/select/select.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.select/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/sidebar/sidebar.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.sidebar/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/skeleton/skeleton.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.skeleton/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/slideshow/slideshow.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.slideshow/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/spinner/spinner.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.spinner/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/stepper/stepper.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.stepper/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/switch/switch.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.switch/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/table/table.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.datagrid/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/tabs/tabs.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.tabs/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/textarea/textarea.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.textarea/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/tile/tile.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.tile/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/components/timepicker/timepicker.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.timepicker/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/directives/autocomplete/autocomplete.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.autocomplete/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/directives/popover/popover.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.popover/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/design-system/directives/tooltip/tooltip.story.mdx: -------------------------------------------------------------------------------- 1 | 2 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 3 | import readme from '@ovh-ux/ui-kit.tooltip/README.md'; 4 | 5 | 6 | 7 | {readme} 8 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/documentation/changelog.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit/CHANGELOG.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/documentation/introduction.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit/README.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/documentation/migrate/from-v2-to-v3.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit/V2-TO-V3.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/apps/workshop/stories/documentation/migrate/from-v3-to-v4.story.mdx: -------------------------------------------------------------------------------- 1 | import { Meta, Description } from '@storybook/addon-docs/blocks'; 2 | import readme from '@ovh-ux/ui-kit/V3-TO-V4.md'; 3 | 4 | 5 | 6 | {readme} 7 | -------------------------------------------------------------------------------- /packages/base/config/README.md: -------------------------------------------------------------------------------- 1 | This package contains all configuration files for apps and libs package. 2 | -------------------------------------------------------------------------------- /packages/base/config/src/webpack.dev.config.js: -------------------------------------------------------------------------------- 1 | const merge = require('webpack-merge'); 2 | 3 | const baseConfig = require('./webpack.base.config'); 4 | const { styleLoader } = require('./webpack.rules'); 5 | 6 | module.exports = merge(baseConfig, { 7 | mode: 'development', 8 | devtool: 'inline-source-map', 9 | module: { 10 | rules: [ 11 | styleLoader, 12 | ], 13 | }, 14 | }); 15 | -------------------------------------------------------------------------------- /packages/base/core/src/css/_tokens.css: -------------------------------------------------------------------------------- 1 | @import './tokens/_colors.css'; 2 | @import './tokens/_fonts.css'; 3 | @import './tokens/_globals.css'; 4 | -------------------------------------------------------------------------------- /packages/base/core/src/fonts/oui-icons/oui-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/oui-icons/oui-icons.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/oui-icons/oui-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/oui-icons/oui-icons.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Black.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Black.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-BlackIt.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-BlackIt.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-BlackIt.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-BlackIt.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Bold.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Bold.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-BoldIt.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-BoldIt.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-BoldIt.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-BoldIt.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-ExtraLight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-ExtraLight.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-ExtraLight.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-ExtraLight.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-ExtraLightIt.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-ExtraLightIt.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-ExtraLightIt.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-ExtraLightIt.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-It.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-It.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-It.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-It.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Light.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Light.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-LightIt.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-LightIt.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-LightIt.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-LightIt.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Regular.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Regular.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Semibold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Semibold.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Semibold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-Semibold.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-SemiboldIt.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-SemiboldIt.woff -------------------------------------------------------------------------------- /packages/base/core/src/fonts/source-sans-pro/SourceSansPro-SemiboldIt.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ovh/ovh-ui-kit/843bf83daf0214668e955534abbad4519b7eaa0b/packages/base/core/src/fonts/source-sans-pro/SourceSansPro-SemiboldIt.woff2 -------------------------------------------------------------------------------- /packages/base/core/src/index.less: -------------------------------------------------------------------------------- 1 | @import './less/_variables'; 2 | @import './less/_mixins'; 3 | @import './less/reboot'; 4 | @import './less/fonts'; 5 | @import './less/typography'; 6 | @import './less/helpers'; 7 | @import './less/icons'; 8 | @import './less/flags'; 9 | -------------------------------------------------------------------------------- /packages/base/core/src/less/_mixins.less: -------------------------------------------------------------------------------- 1 | @import './mixins/accessibility'; 2 | @import './mixins/animations'; 3 | @import './mixins/choice'; 4 | @import './mixins/forms'; 5 | @import './mixins/icons'; 6 | @import './mixins/tooltip'; 7 | @import './mixins/typography'; 8 | -------------------------------------------------------------------------------- /packages/base/core/src/less/_tokens.less: -------------------------------------------------------------------------------- 1 | @import './tokens/_colors.less'; 2 | @import './tokens/_fonts.less'; 3 | @import './tokens/_globals.less'; 4 | @import './tokens/_icons.less'; 5 | -------------------------------------------------------------------------------- /packages/base/core/src/less/helpers.less: -------------------------------------------------------------------------------- 1 | .make-helpers(@index: length(@oui-helper-names)) when (@index > 0) { 2 | .make-helpers(@index - 1); 3 | 4 | @color-name: extract(@oui-helper-names, @index); 5 | @color-value: @@color-name; 6 | 7 | .oui-background-@{color-name} { 8 | background-color: @color-value !important; 9 | } 10 | 11 | .oui-color-@{color-name} { 12 | color: @color-value !important; 13 | } 14 | } 15 | 16 | .make-helpers(); 17 | -------------------------------------------------------------------------------- /packages/base/core/src/less/mixins/animations.less: -------------------------------------------------------------------------------- 1 | // Animations 2 | #oui { 3 | .animate-fast-out-slow-in(@duration: @oui-animation-default-timing) { 4 | transition-duration: @duration; 5 | transition-timing-function: @oui-animation-fast-out-slow-in; 6 | } 7 | 8 | .animate(@duration: @oui-animation-default-timing) { 9 | transition-duration: @duration; 10 | transition-timing-function: @oui-animation-default; 11 | transition-property: background-color, border-color, box-shadow, color, fill; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/components/action-menu.less: -------------------------------------------------------------------------------- 1 | // Action-Menu 2 | @oui-action-button-size: rem-calc(32); 3 | @oui-action-button-line-height: rem-calc(28); 4 | @oui-action-button-border-radius: 50%; 5 | @oui-action-button-icon-size: rem-calc(24); 6 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/components/back-button.less: -------------------------------------------------------------------------------- 1 | // Back Button 2 | @oui-back-button-margin-bottom: @base-spacing-medium; 3 | 4 | @oui-back-button-title-spacing: rem-calc(12); 5 | @oui-back-button-title-line-height: 1.25; 6 | @oui-back-button-title-font-color: @p-800; 7 | @oui-back-button-title-font-size: rem-calc(28); 8 | @oui-back-button-title-font-weight: 700; 9 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/components/box.less: -------------------------------------------------------------------------------- 1 | // Box 2 | @oui-box-background-color: @p-050; 3 | @oui-box-border-color: @p-100; 4 | @oui-box-border-width: 1px; 5 | @oui-box-border-radius: @base-border-radius-large; 6 | @oui-box-font-color: @p-800-text; 7 | @oui-box-padding: rem-calc(16) rem-calc(32) rem-calc(32); 8 | 9 | @oui-box-light-background-color: @p-000; 10 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/components/clipboard.less: -------------------------------------------------------------------------------- 1 | @oui-clipboard-font-color: @oui-link-font-color; 2 | @oui-clipboard-font-color_hover: @oui-link-font-color_hover; 3 | @oui-clipboard-font-weight: @oui-link-font-weight; 4 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/components/criteria.less: -------------------------------------------------------------------------------- 1 | // Criteria 2 | @oui-criteria-margin-bottom: rem-calc(12); 3 | 4 | @oui-criteria-actions-margin-bottom: rem-calc(12); 5 | 6 | // Criteria Adder 7 | @oui-criteria-adder-spacing: rem-calc(12); 8 | @oui-criteria-adder-menu-width: rem-calc(300); 9 | 10 | @oui-criteria-adder-form-padding: rem-calc(16); 11 | @oui-criteria-adder-field-spacing: rem-calc(16); 12 | @oui-criteria-adder-submit-spacing: rem-calc(8); 13 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/components/search.less: -------------------------------------------------------------------------------- 1 | // Search 2 | @oui-search-margin: 0; 3 | 4 | @oui-search-input-padding-right: calc(@oui-input-overlay-icon-spacing + (@oui-input-overlay-icon-size * 2)); 5 | 6 | @oui-search-button-reset-right: calc(@oui-input-overlay-icon-spacing + @oui-input-overlay-icon-size); 7 | @oui-search-button-submit-right: @oui-input-overlay-icon-spacing; 8 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/components/textarea.less: -------------------------------------------------------------------------------- 1 | // Textarea 2 | @oui-textarea-footer-spacing: rem-calc(4); 3 | @oui-textarea-footer-font-size: rem-calc(14); 4 | @oui-textarea-footer-color: @p-800-text; 5 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/components/timepicker.less: -------------------------------------------------------------------------------- 1 | // Timepicker 2 | @oui-timepicker-margin: @oui-form-control-margin; 3 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/content/abbreviations.less: -------------------------------------------------------------------------------- 1 | // Abbreviation 2 | @oui-abbr-border-color: @p-400; 3 | @oui-abbr-border-width: 1px; 4 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/content/descriptions.less: -------------------------------------------------------------------------------- 1 | // Description 2 | @oui-description-margin: 0 0 @base-spacing-medium; 3 | @oui-description-term-font-weight: 700; 4 | @oui-description-description-font-weight: 400; 5 | @oui-description-horizontal-line-height: rem-calc(20); 6 | @oui-description-horizontal-margin-bottom: rem-calc(5); 7 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/content/labels.less: -------------------------------------------------------------------------------- 1 | // Label 2 | @oui-label-font-color: @p-800-text; 3 | @oui-label-font-size: @base-font-size; 4 | @oui-label-font-weight: @base-font-weight; 5 | @oui-label-padding: 0; 6 | @oui-label-margin: 0 0 @base-spacing-small; 7 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/content/lines.less: -------------------------------------------------------------------------------- 1 | // Horizontal line 2 | @oui-horizontal-line-margin-bottom: rem-calc(10); 3 | @oui-horizontal-line-width: 2px; 4 | @oui-horizontal-line-color: @g-050; 5 | @oui-horizontal-line-style: solid; 6 | @oui-horizontal-line-dark-color: darken(@g-050, 20%); 7 | @oui-horizontal-line-thin-width: 1px; 8 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/content/links.less: -------------------------------------------------------------------------------- 1 | // Link 2 | @oui-link-font-color: @p-500; 3 | @oui-link-font-color_hover: @p-700; 4 | @oui-link-font-weight: 600; 5 | @oui-link-text-decoration: none; 6 | @oui-link-text-decoration_hover: underline; 7 | @oui-link-icon-size: rem-calc(12); 8 | @oui-link-icon-spacing: rem-calc(5); 9 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/content/list.less: -------------------------------------------------------------------------------- 1 | 2 | @oui-list-margin: 0 0 @base-spacing-medium; 3 | @oui-list-padding-left: rem-calc(12); 4 | 5 | // List - Separated 6 | @oui-list-separated-border-color: @p-200; 7 | @oui-list-separated-border-width: 1px; 8 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/content/paragraphs.less: -------------------------------------------------------------------------------- 1 | // Paragraph 2 | @oui-paragraph-margin: 0 0 @base-spacing-medium; 3 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/core/accessibility.less: -------------------------------------------------------------------------------- 1 | // Accessibility 2 | @oui-a11y-outline-color: @as-500; 3 | @oui-a11y-outline-offset: 1px; 4 | @oui-a11y-outline-style: dashed; 5 | @oui-a11y-outline-width: 2px; 6 | @oui-a11y-outline-radius: 0; 7 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/core/animations.less: -------------------------------------------------------------------------------- 1 | // Animations 2 | @oui-animation-fast-out-slow-in: cubic-bezier(0.4, 0, 0.2, 1); 3 | @oui-animation-default: @oui-animation-fast-out-slow-in; 4 | @oui-animation-default-timing: 0.2s; 5 | @oui-animation-shake-default-coordinate: 1; 6 | @oui-animation-shake-default-angle: 3deg; 7 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/core/colors.less: -------------------------------------------------------------------------------- 1 | // Colors 2 | @oui-color-brand: @p-700; 3 | @oui-color-primary: @p-800; 4 | @oui-color-secondary: @p-500; 5 | @oui-color-tertiary: @p-800-text; 6 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/core/fonts.less: -------------------------------------------------------------------------------- 1 | // Fonts 2 | @oui-font-source-sans-pro-folder: "../fonts/source-sans-pro"; 3 | -------------------------------------------------------------------------------- /packages/base/core/src/less/variables/core/icons.less: -------------------------------------------------------------------------------- 1 | // Icons 2 | @oui-icon-dist-folder: "../fonts/oui-icons"; 3 | @oui-icon-size: 1em; 4 | @oui-icon-font-family: @base-font-family-icon; 5 | @oui-icon-vertical-align: inherit; 6 | -------------------------------------------------------------------------------- /packages/base/core/src/oui-flags.less: -------------------------------------------------------------------------------- 1 | @import './less/_variables'; 2 | @import './less/_mixins'; 3 | @import './less/flags'; 4 | -------------------------------------------------------------------------------- /packages/base/core/src/oui-icons.less: -------------------------------------------------------------------------------- 1 | @import './less/_variables'; 2 | @import './less/_mixins'; 3 | @import './less/icons'; 4 | -------------------------------------------------------------------------------- /packages/base/core/src/scss/_tokens.scss: -------------------------------------------------------------------------------- 1 | @import './tokens/_colors.scss'; 2 | @import './tokens/_fonts.scss'; 3 | @import './tokens/_globals.scss'; 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/arrow-down_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/arrow-left_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/arrow-right_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/computer-laptop_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/computer_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/device-mobile_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/device-tablet_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/different_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/enterprise-file-storage_concept.svg: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/envelop_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/folder_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/geolocalisation-ovhcloud_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/info_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/partner-platformsh_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/pen_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/play_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/server_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/stop_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/traffic-cone_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/user_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/virtual-machine_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/concept/warning_concept.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/add.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/arrow-up-right-arrow-down-left-from-center.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/bell.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/calendar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/chat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/chevron-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/chevron-up-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/chevron-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/clock-wait.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/ellipsis-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/ellipsis.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/email.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/error-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/external-link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/folder.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/hamburger.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/home.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/indeterminate.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/info-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/info.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/list.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/location.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/minus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/ok.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/ovh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/pause.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/refresh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/remove.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/shape-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/shape-dot.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/sort-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/sort-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/sort.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/success-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/success.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/time.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/trash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/triangle-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/triangle-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/triangle-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/core/src/svg/icons/system/triangle-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/base/test/README.md: -------------------------------------------------------------------------------- 1 | This package contains all configuration and utils files for unit tests of each components. 2 | -------------------------------------------------------------------------------- /packages/components/action-menu/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/action-menu/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import '~@ovh-ux/ui-kit.button/src/index'; 3 | @import '~@ovh-ux/ui-kit.dropdown/src/index'; 4 | @import './less/action-menu'; 5 | -------------------------------------------------------------------------------- /packages/components/action-menu/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/action-menu/src/js/action-menu.component.js: -------------------------------------------------------------------------------- 1 | import controller from './action-menu.controller'; 2 | import template from './action-menu.html'; 3 | 4 | export default { 5 | template, 6 | controller, 7 | require: { 8 | tile: '?^^ouiTileDefinition', 9 | }, 10 | bindings: { 11 | text: '@', 12 | placement: '@?', 13 | ariaLabel: '@?', 14 | compact: ' .heading(4); 10 | } 11 | 12 | &_light { 13 | background: @oui-box-light-background-color; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/components/button/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/button/src/index.js: -------------------------------------------------------------------------------- 1 | import Button from './js/button.component'; 2 | 3 | const moduleName = 'oui.button'; 4 | 5 | angular 6 | .module(moduleName, []) 7 | .component('ouiButton', Button); 8 | 9 | export default moduleName; 10 | -------------------------------------------------------------------------------- /packages/components/button/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import './less/button'; 3 | @import './less/button-group'; 4 | -------------------------------------------------------------------------------- /packages/components/button/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/button/src/js/button.component.js: -------------------------------------------------------------------------------- 1 | import controller from './button.controller'; 2 | import template from './button.html'; 3 | 4 | export default { 5 | bindings: { 6 | id: '@?', 7 | name: '@?', 8 | size: '@?', 9 | type: '@?', 10 | iconLeft: '@?', 11 | iconRight: '@?', 12 | variant: '@?', 13 | variantNav: '@?', 14 | ariaLabel: '@?', 15 | block: ' 9 | 14 | -------------------------------------------------------------------------------- /packages/components/collapsible/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/collapsible/src/index.js: -------------------------------------------------------------------------------- 1 | import Button from '@ovh-ux/ui-kit.button'; 2 | import Spinner from '@ovh-ux/ui-kit.spinner'; 3 | 4 | import Collapsible from './js/collapsible.component'; 5 | 6 | const moduleName = 'oui.collapsible'; 7 | 8 | angular 9 | .module(moduleName, [ 10 | Button, 11 | Spinner, 12 | ]) 13 | .component('ouiCollapsible', Collapsible); 14 | 15 | export default moduleName; 16 | -------------------------------------------------------------------------------- /packages/components/collapsible/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import '~@ovh-ux/ui-kit.button/src/index'; 3 | @import './less/collapsible'; 4 | -------------------------------------------------------------------------------- /packages/components/collapsible/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/collapsible/src/js/collapsible.component.js: -------------------------------------------------------------------------------- 1 | import controller from './collapsible.controller'; 2 | import template from './collapsible.html'; 3 | 4 | export default { 5 | template, 6 | controller, 7 | bindings: { 8 | id: '@', 9 | heading: '@', 10 | group: '@?', 11 | ariaLabel: '@?', 12 | expanded: ' value; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/components/datagrid/src/js/parameters/datagrid-parameters.component.js: -------------------------------------------------------------------------------- 1 | import controller from './datagrid-parameters.controller'; 2 | import template from './datagrid-parameters.html'; 3 | 4 | export default { 5 | bindings: { 6 | columns: '<', 7 | onChange: '&', 8 | }, 9 | controller, 10 | template, 11 | }; 12 | -------------------------------------------------------------------------------- /packages/components/datagrid/src/js/row-detail/datagrid-row-detail.component.js: -------------------------------------------------------------------------------- 1 | import controller from './datagrid-row-detail.controller'; 2 | 3 | export default { 4 | controller, 5 | require: { 6 | datagridCtrl: '^^ouiDatagrid', 7 | }, 8 | bindings: { 9 | row: '<', 10 | index: '<', 11 | }, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/components/datagrid/src/js/topbar/datagrid-topbar.component.js: -------------------------------------------------------------------------------- 1 | import controller from './datagrid-topbar.controller'; 2 | 3 | export default { 4 | controller, 5 | require: { 6 | datagridCtrl: '^^ouiDatagrid', 7 | }, 8 | bindings: { 9 | selectedItems: '<', 10 | }, 11 | }; 12 | -------------------------------------------------------------------------------- /packages/components/datagrid/src/less/table.less: -------------------------------------------------------------------------------- 1 | @import './_mixins'; 2 | 3 | .oui-table { 4 | #oui > .table-base(); 5 | } 6 | 7 | .oui-table-responsive { 8 | #oui > .table-responsive(); 9 | } 10 | 11 | // Table in oui-tile 12 | .oui-tile .oui-table { 13 | #oui > .table-tile(); 14 | } 15 | -------------------------------------------------------------------------------- /packages/components/dropdown/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/dropdown/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import '~@ovh-ux/ui-kit.button/src/index'; 3 | @import './less/dropdown'; 4 | -------------------------------------------------------------------------------- /packages/components/dropdown/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/dropdown/src/js/divider/dropdown-divider.component.js: -------------------------------------------------------------------------------- 1 | export default { 2 | controller: class { 3 | constructor($element, $timeout) { 4 | 'ngInject'; 5 | 6 | this.$element = $element; 7 | this.$timeout = $timeout; 8 | } 9 | 10 | $postLink() { 11 | this.$timeout(() => this.$element 12 | .addClass('oui-dropdown-menu__divider') 13 | .attr('role', 'separator')); 14 | } 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /packages/components/dropdown/src/js/dropdown.component.js: -------------------------------------------------------------------------------- 1 | import controller from './dropdown.controller'; 2 | 3 | export default { 4 | controller, 5 | bindings: { 6 | placement: '@?', 7 | arrow: ' this.$element 11 | .addClass('oui-dropdown-group')); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/components/dropdown/src/js/group/dropdown-group.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | -------------------------------------------------------------------------------- /packages/components/dropdown/src/js/item/dropdown-item.component.js: -------------------------------------------------------------------------------- 1 | import controller from './dropdown-item.controller'; 2 | import template from './dropdown-item.html'; 3 | 4 | export default { 5 | controller, 6 | template, 7 | bindings: { 8 | ariaLabel: '@?', 9 | href: '@?', 10 | state: '@?', 11 | stateParams: ' ({ 4 | restrict: 'AE', 5 | require: { 6 | dropdown: '^ouiDropdown', 7 | }, 8 | controller, 9 | controllerAs: '$dropdownTriggerCtrl', 10 | bindToController: { 11 | text: '@', 12 | ariaLabel: '@?', 13 | disabled: ' 3 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/components/header/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/header/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import '~@ovh-ux/ui-kit.dropdown/src/index'; 3 | @import './less/header'; 4 | @import './less/header-tabs'; 5 | -------------------------------------------------------------------------------- /packages/components/header/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/header/src/js/header.component.js: -------------------------------------------------------------------------------- 1 | import controller from './header.controller'; 2 | import template from './header.html'; 3 | 4 | export default { 5 | template, 6 | controller, 7 | bindings: { 8 | heading: '@?', 9 | description: '@?', 10 | }, 11 | transclude: { 12 | back: '?ouiBackButton', 13 | guide: '?ouiGuideMenu', 14 | tabs: '?ouiHeaderTabs', 15 | heading: '?ouiHeaderHeading', 16 | }, 17 | }; 18 | -------------------------------------------------------------------------------- /packages/components/header/src/js/header.controller.js: -------------------------------------------------------------------------------- 1 | export default class { 2 | constructor($attrs, $transclude) { 3 | 'ngInject'; 4 | 5 | this.$attrs = $attrs; 6 | this.$transclude = $transclude; 7 | } 8 | 9 | $onInit() { 10 | this.transcludeBack = this.$transclude.isSlotFilled('back'); 11 | this.transcludeGuide = this.$transclude.isSlotFilled('guide'); 12 | this.transcludeTabs = this.$transclude.isSlotFilled('tabs'); 13 | this.transcludeHeading = this.$transclude.isSlotFilled('heading'); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/components/header/src/js/tabs/dropdown/header-tabs-dropdown.component.js: -------------------------------------------------------------------------------- 1 | import controller from './header-tabs-dropdown.controller'; 2 | import template from './header-tabs-dropdown.html'; 3 | 4 | export default { 5 | bindings: { 6 | text: '@', 7 | }, 8 | controller, 9 | template, 10 | transclude: true, 11 | }; 12 | -------------------------------------------------------------------------------- /packages/components/header/src/js/tabs/dropdown/header-tabs-dropdown.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/components/header/src/js/tabs/header-tabs.component.js: -------------------------------------------------------------------------------- 1 | import controller from './header-tabs.controller'; 2 | import template from './header-tabs.html'; 3 | 4 | export default { 5 | template, 6 | controller, 7 | transclude: true, 8 | }; 9 | -------------------------------------------------------------------------------- /packages/components/header/src/js/tabs/item/header-tabs-item.component.js: -------------------------------------------------------------------------------- 1 | import controller from './header-tabs-item.controller'; 2 | import template from './header-tabs-item.html'; 3 | 4 | export default { 5 | controller, 6 | template, 7 | bindings: { 8 | href: '@?', 9 | state: '@?', 10 | stateParams: ' this.$element.addClass('oui-inline-adder__row')); 12 | } 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /packages/components/input/README.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | 3 | ```js 4 | angular.module('myModule', ['oui.input']); 5 | ``` 6 | -------------------------------------------------------------------------------- /packages/components/input/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ovh-ux/ui-kit.input", 3 | "private": true, 4 | "version": "0.0.0", 5 | "main": "./src/index.js", 6 | "less": "./src/index.less", 7 | "license": "BSD-3-Clause", 8 | "author": "OVH SAS", 9 | "dependencies": { 10 | "@ovh-ux/ui-kit.button": "*", 11 | "@ovh-ux/ui-kit.core": "*" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/components/input/src/index.js: -------------------------------------------------------------------------------- 1 | const moduleName = 'oui.input'; 2 | 3 | angular 4 | .module(moduleName, []); 5 | 6 | export default moduleName; 7 | -------------------------------------------------------------------------------- /packages/components/input/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import '~@ovh-ux/ui-kit.button/src/index'; 3 | @import './less/input'; 4 | @import './less/input-group'; 5 | @import './less/input-overlay'; 6 | -------------------------------------------------------------------------------- /packages/components/input/src/less/input.less: -------------------------------------------------------------------------------- 1 | // Inputs 2 | .oui-input { 3 | #oui > .control-base(); 4 | 5 | width: 100%; 6 | display: block; 7 | 8 | &_inline { 9 | display: inline-block; 10 | width: auto; 11 | } 12 | 13 | // States 14 | #oui > .control-states(); 15 | #oui > .control-readonly(); 16 | 17 | // Sizes 18 | #oui > .control-sizes(); 19 | 20 | // Validation 21 | #oui > .control-validation(); 22 | } 23 | -------------------------------------------------------------------------------- /packages/components/message/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/message/src/index.js: -------------------------------------------------------------------------------- 1 | import Message from './js/message.component'; 2 | 3 | const moduleName = 'oui.message'; 4 | 5 | angular 6 | .module(moduleName, []) 7 | .component('ouiMessage', Message); 8 | 9 | export default moduleName; 10 | -------------------------------------------------------------------------------- /packages/components/message/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import './less/message'; 3 | -------------------------------------------------------------------------------- /packages/components/message/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/message/src/js/message.component.js: -------------------------------------------------------------------------------- 1 | import controller from './message.controller'; 2 | import template from './message.html'; 3 | 4 | export default { 5 | template, 6 | controller, 7 | bindings: { 8 | type: '@', 9 | ariaCloseButtonLabel: '@?', 10 | dismissable: ' ({ 4 | restrict: 'A', 5 | require: { 6 | navbarCtrl: '^ouiNavbar', 7 | }, 8 | bindToController: { 9 | groupName: '@ouiNavbarGroup', 10 | isLast: ' this.$element 11 | .addClass('oui-navbar-list__item')); 12 | } 13 | 14 | // Return value of "ui-sref" 15 | getFullSref() { 16 | return `${this.state}(${JSON.stringify(this.stateParams)})`; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/components/navbar/src/js/navbar.component.js: -------------------------------------------------------------------------------- 1 | import controller from './navbar.controller'; 2 | import template from './navbar.html'; 3 | 4 | export default { 5 | bindings: { 6 | brand: ' 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/components/password/src/js/strength/password-strength.component.js: -------------------------------------------------------------------------------- 1 | import controller from './password-strength.controller'; 2 | import template from './password-strength.html'; 3 | 4 | export default { 5 | require: { 6 | password: '^ouiPassword', 7 | }, 8 | bindings: { 9 | label: '@?', 10 | score: ' 3 | 4 |

5 | 10 | 11 | -------------------------------------------------------------------------------- /packages/components/popover/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/popover/src/index.js: -------------------------------------------------------------------------------- 1 | import Popover from './js/popover.directive'; 2 | 3 | const moduleName = 'oui.popover'; 4 | 5 | angular 6 | .module(moduleName, []) 7 | .directive('ouiPopover', Popover); 8 | 9 | export default moduleName; 10 | -------------------------------------------------------------------------------- /packages/components/popover/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import '~@ovh-ux/ui-kit.button/src/index'; 3 | @import './less/popover'; 4 | -------------------------------------------------------------------------------- /packages/components/popover/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/progress-tracker/README.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | 3 | ```js 4 | angular.module('myModule', ['oui.progress-tracker']); 5 | ``` 6 | -------------------------------------------------------------------------------- /packages/components/progress-tracker/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ovh-ux/ui-kit.progress-tracker", 3 | "private": true, 4 | "version": "0.0.0", 5 | "main": "./src/index.js", 6 | "less": "./src/index.less", 7 | "license": "BSD-3-Clause", 8 | "author": "OVH SAS", 9 | "dependencies": { 10 | "@ovh-ux/ui-kit.core": "*" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/components/progress-tracker/src/index.js: -------------------------------------------------------------------------------- 1 | const moduleName = 'oui.progress-tracker'; 2 | 3 | angular 4 | .module(moduleName, []); 5 | 6 | export default moduleName; 7 | -------------------------------------------------------------------------------- /packages/components/progress-tracker/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import './less/progress-tracker'; 3 | -------------------------------------------------------------------------------- /packages/components/progress/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/progress/src/index.js: -------------------------------------------------------------------------------- 1 | import Progress from './js/progress.component'; 2 | import ProgressBar from './js/bar/progress-bar.component'; 3 | import ProgressThreshold from './js/threshold/progress-threshold.component'; 4 | 5 | const moduleName = 'oui.progress'; 6 | 7 | angular 8 | .module(moduleName, []) 9 | .component('ouiProgress', Progress) 10 | .component('ouiProgressBar', ProgressBar) 11 | .component('ouiProgressThreshold', ProgressThreshold); 12 | 13 | export default moduleName; 14 | -------------------------------------------------------------------------------- /packages/components/progress/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import './less/progress'; 3 | -------------------------------------------------------------------------------- /packages/components/progress/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/progress/src/js/bar/progress-bar.component.js: -------------------------------------------------------------------------------- 1 | import controller from './progress-bar.controller'; 2 | import template from './progress-bar.html'; 3 | 4 | export default { 5 | template, 6 | controller, 7 | bindings: { 8 | type: '@', 9 | value: '<', 10 | }, 11 | require: { 12 | progressCtrl: '^^ouiProgress', 13 | }, 14 | transclude: true, 15 | }; 16 | -------------------------------------------------------------------------------- /packages/components/progress/src/js/bar/progress-bar.html: -------------------------------------------------------------------------------- 1 | {{$ctrl.value + '%'}} 2 | -------------------------------------------------------------------------------- /packages/components/progress/src/js/progress.component.js: -------------------------------------------------------------------------------- 1 | import controller from './progress.controller'; 2 | 3 | export default { 4 | controller, 5 | bindings: { 6 | compact: ' this.$element 11 | .addClass('oui-progress__threshold') 12 | .css('left', this.progressCtrl.getPercentageValue(this.value))); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/components/radio/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/radio/src/index.js: -------------------------------------------------------------------------------- 1 | import Radio from './js/radio.component'; 2 | import RadioGroup from './js/group/radio-group.component'; 3 | import RadioToggleGroup from './js/toggle-group/radio-toggle-group.component'; 4 | 5 | const moduleName = 'oui.radio'; 6 | 7 | angular 8 | .module(moduleName, []) 9 | .component('ouiRadio', Radio) 10 | .component('ouiRadioGroup', RadioGroup) 11 | .component('ouiRadioToggleGroup', RadioToggleGroup); 12 | 13 | export default moduleName; 14 | -------------------------------------------------------------------------------- /packages/components/radio/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import './less/radio'; 3 | @import './less/radio-thumbnail'; 4 | @import './less/radio-toggle-group'; 5 | -------------------------------------------------------------------------------- /packages/components/radio/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/radio/src/js/group/radio-group.component.js: -------------------------------------------------------------------------------- 1 | import controller from './radio-group.controller'; 2 | 3 | export default { 4 | template: '', 5 | controller, 6 | bindings: { 7 | name: '@?', 8 | model: '=?', 9 | onChange: '&', 10 | }, 11 | transclude: true, 12 | }; 13 | -------------------------------------------------------------------------------- /packages/components/radio/src/js/toggle-group/radio-toggle-group.component.js: -------------------------------------------------------------------------------- 1 | import controller from '../group/radio-group.controller'; 2 | 3 | export default { 4 | template: `
10 |
`, 11 | controller, 12 | bindings: { 13 | name: '@?', 14 | direction: '@?', 15 | dense: '@?', 16 | model: '=?', 17 | onChange: '&', 18 | }, 19 | transclude: true, 20 | }; 21 | -------------------------------------------------------------------------------- /packages/components/radio/src/less/radio-thumbnail.less: -------------------------------------------------------------------------------- 1 | // Radio - Thumbnail 2 | .oui-radio_thumbnail { 3 | #oui > .choice-thumbnail(oui-radio); 4 | 5 | // We don't display the input with radio thumbnail 6 | .oui-radio__description, 7 | .oui-radio__text { 8 | padding-left: 0; 9 | } 10 | 11 | .oui-radio__icon { display: none; } 12 | } 13 | 14 | .oui-radio_error, 15 | .oui-field_error .oui-radio { 16 | &.oui-radio_thumbnail { 17 | #oui > .choice-thumbnail_error(oui-radio); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/components/search/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/search/src/index.js: -------------------------------------------------------------------------------- 1 | import Autocomplete from '@ovh-ux/ui-kit.autocomplete'; 2 | 3 | import Search from './js/search.component'; 4 | 5 | const moduleName = 'oui.search'; 6 | 7 | angular 8 | .module(moduleName, [ 9 | Autocomplete, 10 | ]) 11 | .component('ouiSearch', Search); 12 | 13 | export default moduleName; 14 | -------------------------------------------------------------------------------- /packages/components/search/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import '~@ovh-ux/ui-kit.autocomplete/src/index'; 3 | @import '~@ovh-ux/ui-kit.button/src/index'; 4 | @import '~@ovh-ux/ui-kit.input/src/index'; 5 | @import './less/search'; 6 | -------------------------------------------------------------------------------- /packages/components/search/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/search/src/less/search.less: -------------------------------------------------------------------------------- 1 | // Search 2 | .oui-search { 3 | display: block; 4 | margin: @oui-search-margin; 5 | 6 | .oui-input:first-child { 7 | padding-right: @oui-search-input-padding-right; 8 | } 9 | 10 | .oui-button { 11 | &[type="reset"] { 12 | right: @oui-search-button-reset-right; 13 | } 14 | 15 | &[type="submit"] { 16 | right: @oui-search-button-submit-right; 17 | } 18 | } 19 | } 20 | 21 | oui-search { 22 | &:extend(.oui-search); 23 | } 24 | -------------------------------------------------------------------------------- /packages/components/select-picker/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/select-picker/src/index.js: -------------------------------------------------------------------------------- 1 | import Select from '@ovh-ux/ui-kit.select'; 2 | 3 | import SelectPicker from './js/select-picker.component'; 4 | import SelectPickerSection from './js/section/select-picker-section.component'; 5 | 6 | const moduleName = 'oui.select-picker'; 7 | 8 | angular 9 | .module(moduleName, [ 10 | Select, 11 | ]) 12 | .component('ouiSelectPicker', SelectPicker) 13 | .component('ouiSelectPickerSection', SelectPickerSection); 14 | 15 | export default moduleName; 16 | -------------------------------------------------------------------------------- /packages/components/select-picker/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import '~@ovh-ux/ui-kit.radio/src/index'; 3 | @import '~@ovh-ux/ui-kit.select/src/index'; 4 | @import './less/select-picker'; 5 | -------------------------------------------------------------------------------- /packages/components/select-picker/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/select-picker/src/js/section/select-picker-section.component.js: -------------------------------------------------------------------------------- 1 | export default { 2 | controller: class { 3 | constructor($element, $timeout) { 4 | 'ngInject'; 5 | 6 | this.$element = $element; 7 | this.$timeout = $timeout; 8 | } 9 | 10 | $postLink() { 11 | this.$timeout(() => this.$element.addClass('oui-select-picker__section')); 12 | } 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /packages/components/select/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/select/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import '~@ovh-ux/ui-kit.button/src/index'; 3 | @import '~@ovh-ux/ui-kit.input/src/index'; 4 | @import './less/ui-select'; 5 | @import './less/select'; 6 | -------------------------------------------------------------------------------- /packages/components/select/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/select/src/js/templates/footer.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/components/select/src/js/templates/header.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /packages/components/select/src/js/templates/no-choice.html: -------------------------------------------------------------------------------- 1 |
    3 |
  • 4 |
5 | -------------------------------------------------------------------------------- /packages/components/sidebar/README.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | 3 | ```js 4 | angular.module('myModule', ['oui.sidebar']); 5 | ``` 6 | -------------------------------------------------------------------------------- /packages/components/sidebar/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ovh-ux/ui-kit.sidebar", 3 | "private": true, 4 | "version": "0.0.0", 5 | "main": "./src/index.js", 6 | "less": "./src/index.less", 7 | "license": "BSD-3-Clause", 8 | "author": "OVH SAS", 9 | "dependencies": { 10 | "@ovh-ux/ui-kit.core": "*" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/components/sidebar/src/index.js: -------------------------------------------------------------------------------- 1 | const moduleName = 'oui.sidebar'; 2 | 3 | angular 4 | .module(moduleName, []); 5 | 6 | export default moduleName; 7 | -------------------------------------------------------------------------------- /packages/components/sidebar/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import './less/sidebar'; 3 | -------------------------------------------------------------------------------- /packages/components/skeleton/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/skeleton/src/index.js: -------------------------------------------------------------------------------- 1 | import Skeleton from './js/skeleton.component'; 2 | 3 | const moduleName = 'oui.skeleton'; 4 | 5 | angular 6 | .module(moduleName, []) 7 | .component('ouiSkeleton', Skeleton); 8 | 9 | export default moduleName; 10 | -------------------------------------------------------------------------------- /packages/components/skeleton/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import './less/skeleton'; 3 | -------------------------------------------------------------------------------- /packages/components/skeleton/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/skeleton/src/js/skeleton.component.js: -------------------------------------------------------------------------------- 1 | import controller from './skeleton.controller'; 2 | import template from './skeleton.html'; 3 | 4 | export default { 5 | controller, 6 | template, 7 | bindings: { 8 | size: '@?', 9 | randomized: ' 2 | -------------------------------------------------------------------------------- /packages/components/skeleton/src/less/_mixins.less: -------------------------------------------------------------------------------- 1 | #oui { 2 | .skeleton-sizes() { 3 | .make-loader-sizes(@i: 1) when (@i <= length(@oui-skeleton-sizes)) { 4 | .make-loader-sizes(@i + 1); 5 | @pair: extract(@oui-skeleton-sizes, @i); 6 | @key: extract(@pair, 1); 7 | @value: extract(@pair, 2); 8 | 9 | &_@{key} { 10 | width: @value; 11 | } 12 | } 13 | .make-loader-sizes(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/components/slideshow/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/slideshow/src/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from '@ovh-ux/ui-kit.spinner'; 2 | 3 | import Slideshow from './js/slideshow.component'; 4 | import SlideshowPanel from './js/panel/slideshow-panel.component'; 5 | 6 | const moduleName = 'oui.slideshow'; 7 | 8 | angular 9 | .module(moduleName, [ 10 | Spinner, 11 | ]) 12 | .component('ouiSlideshow', Slideshow) 13 | .component('ouiSlideshowPanel', SlideshowPanel); 14 | 15 | export default moduleName; 16 | -------------------------------------------------------------------------------- /packages/components/slideshow/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import './less/slideshow'; 3 | -------------------------------------------------------------------------------- /packages/components/slideshow/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/slideshow/src/js/panel/slideshow-panel.component.js: -------------------------------------------------------------------------------- 1 | import controller from './slideshow-panel.controller'; 2 | import template from './slideshow-panel.html'; 3 | 4 | export default { 5 | template, 6 | controller, 7 | bindings: { 8 | heading: '@?', 9 | picture: '@?', 10 | onClick: '&?', 11 | href: '@?', 12 | external: ' 2 |
3 | 4 | -------------------------------------------------------------------------------- /packages/components/stepper/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/stepper/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import '~@ovh-ux/ui-kit.button/src/index'; 3 | @import '~@ovh-ux/ui-kit.spinner/src/index'; 4 | @import './less/stepper'; 5 | -------------------------------------------------------------------------------- /packages/components/stepper/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/stepper/src/js/filter/unsafe.filter.js: -------------------------------------------------------------------------------- 1 | export default ($sce) => { 2 | 'ngInject'; 3 | 4 | return $sce.trustAsHtml; 5 | }; 6 | -------------------------------------------------------------------------------- /packages/components/stepper/src/js/stepper.component.js: -------------------------------------------------------------------------------- 1 | import controller from './stepper.controller'; 2 | import template from './stepper.html'; 3 | 4 | export default { 5 | bindings: { 6 | name: '@', 7 | id: '@', 8 | currentIndex: '=?', 9 | onInit: '&', 10 | onFinish: '&', 11 | }, 12 | controller, 13 | template, 14 | transclude: true, 15 | }; 16 | -------------------------------------------------------------------------------- /packages/components/stepper/src/js/stepper.html: -------------------------------------------------------------------------------- 1 |
5 |
6 | -------------------------------------------------------------------------------- /packages/components/switch/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/switch/src/index.js: -------------------------------------------------------------------------------- 1 | import Switch from './js/switch.component'; 2 | 3 | const moduleName = 'oui.switch'; 4 | 5 | angular 6 | .module(moduleName, []) 7 | .component('ouiSwitch', Switch); 8 | 9 | export default moduleName; 10 | -------------------------------------------------------------------------------- /packages/components/switch/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import './less/switch'; 3 | -------------------------------------------------------------------------------- /packages/components/switch/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/switch/src/js/switch.component.js: -------------------------------------------------------------------------------- 1 | import controller from './switch.controller'; 2 | import template from './switch.html'; 3 | 4 | export default { 5 | controller, 6 | template, 7 | bindings: { 8 | model: '=?', 9 | id: '@?', 10 | name: '@?', 11 | disabled: ' 2 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/components/tabs/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/tabs/src/index.js: -------------------------------------------------------------------------------- 1 | import Tabs from './js/tabs.component'; 2 | import TabsItem from './js/item/tabs-item.component'; 3 | 4 | const moduleName = 'oui.tabs'; 5 | 6 | angular 7 | .module(moduleName, []) 8 | .component('ouiTabs', Tabs) 9 | .component('ouiTabsItem', TabsItem); 10 | 11 | export default moduleName; 12 | -------------------------------------------------------------------------------- /packages/components/tabs/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import './less/tabs'; 3 | -------------------------------------------------------------------------------- /packages/components/tabs/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/tabs/src/js/item/tabs-item.component.js: -------------------------------------------------------------------------------- 1 | import controller from './tabs-item.controller'; 2 | import template from './tabs-item.html'; 3 | 4 | export default { 5 | require: { 6 | tabsCtrl: '^ouiTabs', 7 | }, 8 | bindings: { 9 | id: '@?', 10 | heading: '@?', 11 | subheading: '@?', 12 | variant: '@?', 13 | ariaLabel: '@?', 14 | onActive: '&', 15 | }, 16 | controller, 17 | template, 18 | transclude: true, 19 | }; 20 | -------------------------------------------------------------------------------- /packages/components/tabs/src/js/tabs.component.js: -------------------------------------------------------------------------------- 1 | import controller from './tabs.controller'; 2 | import template from './tabs.html'; 3 | 4 | export default { 5 | controller, 6 | template, 7 | bindings: { 8 | ariaLabel: '@?', 9 | model: '=?', 10 | }, 11 | transclude: { 12 | item: '?ouiTabsItem', 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /packages/components/textarea/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/textarea/src/index.js: -------------------------------------------------------------------------------- 1 | import Textarea from './js/textarea.component'; 2 | import TextareaProvider from './js/textarea.provider'; 3 | 4 | const moduleName = 'oui.textarea'; 5 | 6 | angular 7 | .module(moduleName, []) 8 | .component('ouiTextarea', Textarea) 9 | .provider('ouiTextareaConfiguration', TextareaProvider); 10 | 11 | export default moduleName; 12 | -------------------------------------------------------------------------------- /packages/components/textarea/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import './less/textarea'; 3 | -------------------------------------------------------------------------------- /packages/components/textarea/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/textarea/src/js/textarea.component.js: -------------------------------------------------------------------------------- 1 | import controller from './textarea.controller'; 2 | import template from './textarea.html'; 3 | 4 | export default { 5 | template, 6 | controller, 7 | bindings: { 8 | model: '=?', 9 | id: '@?', 10 | name: '@?', 11 | placeholder: '@?', 12 | rows: '@?', 13 | disabled: ' this.$element 18 | .addClass('oui-tile')); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/components/tile/src/js/tile.html: -------------------------------------------------------------------------------- 1 |

2 |

3 |
6 |
7 |
9 | 10 |
11 | -------------------------------------------------------------------------------- /packages/components/timepicker/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/timepicker/src/index.js: -------------------------------------------------------------------------------- 1 | import Calendar from '@ovh-ux/ui-kit.calendar'; 2 | 3 | import Timepicker from './js/timepicker.component'; 4 | 5 | const moduleName = 'oui.timepicker'; 6 | 7 | angular 8 | .module(moduleName, [ 9 | Calendar, 10 | ]) 11 | .component('ouiTimepicker', Timepicker); 12 | 13 | export default moduleName; 14 | -------------------------------------------------------------------------------- /packages/components/timepicker/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import '~@ovh-ux/ui-kit.calendar/src/index'; 3 | @import './less/timepicker'; 4 | -------------------------------------------------------------------------------- /packages/components/timepicker/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import 'flatpickr/dist/flatpickr'; 2 | import 'flatpickr/dist/l10n/fr'; 3 | 4 | import './index'; 5 | 6 | function loadTests(context) { 7 | context.keys().forEach(context); 8 | } 9 | 10 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 11 | -------------------------------------------------------------------------------- /packages/components/timepicker/src/less/timepicker.less: -------------------------------------------------------------------------------- 1 | .oui-timepicker { 2 | display: block; 3 | margin: @oui-timepicker-margin; 4 | 5 | &_inline { display: inline-block; } 6 | 7 | .oui-calendar { 8 | display: block; 9 | margin: 0; 10 | } 11 | } 12 | 13 | oui-timepicker { 14 | &:extend(.oui-timepicker); 15 | } 16 | -------------------------------------------------------------------------------- /packages/components/tooltip/.config/karma.conf.js: -------------------------------------------------------------------------------- 1 | const karmaConfig = require("@ovh-ux/ui-kit.test/src/karma.base.config"); 2 | 3 | module.exports = function (config) { 4 | const files = 'src/index.spec.js'; 5 | karmaConfig.files.push(files); 6 | karmaConfig.preprocessors[files] = ['webpack', 'sourcemap']; 7 | 8 | config.set(karmaConfig); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/components/tooltip/src/index.js: -------------------------------------------------------------------------------- 1 | import Tooltip from './js/tooltip.directive'; 2 | 3 | const moduleName = 'oui.tooltip'; 4 | 5 | angular 6 | .module(moduleName, []) 7 | .directive('ouiTooltip', Tooltip); 8 | 9 | export default moduleName; 10 | -------------------------------------------------------------------------------- /packages/components/tooltip/src/index.less: -------------------------------------------------------------------------------- 1 | @import '~@ovh-ux/ui-kit.core/src/index'; 2 | @import './less/tooltip'; 3 | -------------------------------------------------------------------------------- /packages/components/tooltip/src/index.spec.js: -------------------------------------------------------------------------------- 1 | import './index'; 2 | 3 | function loadTests(context) { 4 | context.keys().forEach(context); 5 | } 6 | 7 | loadTests(require.context('./js/', true, /.*((\.spec)|(index))$/)); 8 | -------------------------------------------------------------------------------- /packages/components/tooltip/src/js/tooltip.directive.js: -------------------------------------------------------------------------------- 1 | import controller from './tooltip.controller'; 2 | 3 | export default () => ({ 4 | restrict: 'A', 5 | bindToController: { 6 | text: '@ouiTooltip', 7 | title: '@?', 8 | placement: '@?ouiTooltipPlacement', // values: top|top-start|top-end|bottom|bottom-start|bottom-end (default: top) 9 | }, 10 | controller, 11 | controllerAs: '$tooltipCtrl', 12 | }); 13 | -------------------------------------------------------------------------------- /packages/components/tooltip/src/js/tooltip.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /packages/components/tooltip/src/less/tooltip.less: -------------------------------------------------------------------------------- 1 | .oui-tooltip { 2 | #oui > .tooltip-base(); 3 | #oui > .tooltip-arrow(); 4 | 5 | pointer-events: none; 6 | 7 | &__trigger:focus + &, 8 | &__trigger:hover + & { 9 | opacity: @oui-tooltip-opacity; 10 | z-index: @oui-tooltip-z-index; 11 | } 12 | } 13 | --------------------------------------------------------------------------------