+{% endif %}
+
+Get involved with ODS iOS development by [opening an issue](https://github.com/Orange-OpenSource/ods-ios/issues/new/choose) or submitting a pull request. Read our [contributing guidelines](https://github.com/Orange-OpenSource/ods-ios/blob/main/CONTRIBUTING.md) for information on how we develop.
diff --git a/docs/1.0.0/about/Team_docs.md b/docs/1.0.0/about/Team_docs.md
new file mode 100644
index 00000000..92cde2e9
--- /dev/null
+++ b/docs/1.0.0/about/Team_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Team
+content_page: Team.md
+---
diff --git a/docs/1.0.0/components/banners.md b/docs/1.0.0/components/banners.md
new file mode 100644
index 00000000..35bd9176
--- /dev/null
+++ b/docs/1.0.0/components/banners.md
@@ -0,0 +1,103 @@
+---
+layout: detail
+title: Banners
+description: A banner displays an important message which requires an action to be dismissed.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+A banner displays an important, succinct message, and provides actions for users to address (or dismiss the banner). It requires a user action to be dismissed.
+
+Banners should be displayed at the top of the screen, below a top app bar. They’re persistent and nonmodal, allowing the user to either ignore them or interact with them at any time. Only one banner should be shown at a time
+
+![Banner light](images/banner-light.png)
+![Banner dark](images/banner-dark.png)
+
+## Specifications references
+
+- [Design System Manager - Banners](https://system.design.orange.com/0c1af118d/p/85a52b-components/b/1497a4)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+### No button
+
+```swift
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)))
+```
+
+### One button
+
+The button is placed under the text.
+
+```swift
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods))) {
+ Button("Button") {
+ // your action here
+ }
+}
+```
+
+### Two buttons
+
+Button are placed under the text.
+
+```swift
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods))) {
+ Button("Button 1") {
+ // your action here
+ }
+} secondButton: {
+ Button("Button 1") {
+ // your action here
+ }
+}
+```
+
+### Without image
+
+```swift
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.") {
+ Button("Button 1") {
+ // your action here
+ }
+} secondButton: {
+ Button("Button 1") {
+ // your action here
+ }
+}
+```
+
+### With image from url
+
+```swift
+
+let placeholder = Image("placeholder", bundle: Bundle.ods)
+let url = URL(string: "https://images.unsplash.com/photo-1615735487485-e52b9af610c1?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=774&q=80")
+
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.",
+ imageSource: .asyncImage(url, placeholder)) {
+ Button("Button 1") {
+ // your action here
+ }
+} secondButton: {
+ Button("Button 1") {
+ // your action here
+ }
+}
+```
+
+
diff --git a/docs/1.0.0/components/banners_docs.md b/docs/1.0.0/components/banners_docs.md
new file mode 100644
index 00000000..9d720197
--- /dev/null
+++ b/docs/1.0.0/components/banners_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Banners
+content_page: banners.md
+---
diff --git a/docs/1.0.0/components/barsNavigation.md b/docs/1.0.0/components/barsNavigation.md
new file mode 100644
index 00000000..79ae42da
--- /dev/null
+++ b/docs/1.0.0/components/barsNavigation.md
@@ -0,0 +1,104 @@
+---
+layout: detail
+title: Bars - navigation
+description: Navigation bar with Orange branding
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Bars: navigation](https://system.design.orange.com/0c1af118d/p/34094d-bars-navigation/b/419eb1)
+- [Apple guideline - Navigation bars](https://developer.apple.com/design/human-interface-guidelines/components/navigation-and-search/navigation-bars/)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Standard navigation bar
+
+![Navigation bar standard light](images/bars_navigation_standard_light.png)
+![Navigation bar standard dark](images/bars_navigation_standard_dark.png)
+
+When using a navigation view, basic navigation is using 'inline' display mode by default.
+
+```swift
+NavigationView {
+ NavigationLink(destination: Text("destination")) {
+ Text("Main view")
+ }
+ .navigationBarTitle("Standard", displayMode: .inline)
+}
+
+```
+
+## Navigation bar with large title
+
+![Navigation bar large light](images/bars_navigation_large_light.png)
+![Navigation bar large dark](images/bars_navigation_large_dark.png)
+
+Use 'large' display mode to enable large titles when scrolling up.
+
+```swift
+NavigationView {
+ NavigationLink(destination: Text("destination")) {
+ Text("Main view")
+ }
+ .navigationBarTitle("Standard", displayMode: .large)
+}
+
+```
+
+## Navigation bar with search bar
+
+![Navigation bar search light](images/bars_navigation_search_light.png)
+![Navigation bar search dark](images/bars_navigation_search_dark.png)
+
+
+Use .searchable modifier to add a search bar in the navigation view.
+
+```swift
+@State var searchQuery = ""
+
+NavigationView {
+ NavigationLink(destination: Text("destination")) {
+ Text("Main view")
+ }
+ .navigationBarTitle("With search bar", displayMode: .inline)
+ .searchable(text: $searchQuery, placement: .navigationBarDrawer(displayMode: .always))
+}
+
+```
+
+## Navigation bar with action item
+
+![Navigation bar items light](images/bars_navigation_items_light.png)
+![Navigation bar items dark](images/bars_navigation_items_dark.png)
+
+You can add one or several buttons (trailing or leading) in the navigation view by using .toolbar modifier
+
+```swift
+NavigationView {
+ NavigationLink(destination: Text("destination")) {
+ Text("Main view")
+ }
+ .navigationBarTitle("Standard", displayMode: .inline)
+ .toolbar {
+ ToolbarItem(placement: .navigationBarTrailing) {
+ Button {
+ print("item action")
+ } label: {
+ Image(systemName: "ant.circle")
+ }
+ }
+ }
+}
+
+```
diff --git a/docs/1.0.0/components/barsNavigation_docs.md b/docs/1.0.0/components/barsNavigation_docs.md
new file mode 100644
index 00000000..11493173
--- /dev/null
+++ b/docs/1.0.0/components/barsNavigation_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Bars - navigation
+content_page: barsNavigation.md
+---
diff --git a/docs/1.0.0/components/barsTab.md b/docs/1.0.0/components/barsTab.md
new file mode 100644
index 00000000..2b95ab3c
--- /dev/null
+++ b/docs/1.0.0/components/barsTab.md
@@ -0,0 +1,57 @@
+---
+layout: detail
+title: Bars - tab
+description: Tab bars with Orange branding
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Bars: tab](https://system.design.orange.com/0c1af118d/p/08dab8-bars-tab/b/778ed0)
+- [Apple guideline - Tab bars](https://developer.apple.com/design/human-interface-guidelines/components/navigation-and-search/tab-bars/)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Standard tab bar
+
+![Tab bar light](images/bars_tab_light.png)
+![Tab bar dark](images/bars_tab_dark.png)
+
+Tab bar is a standard iOS component. It uses bar items to navigate between views.
+Bar Item contains an icon and a title.
+An additonal badge can be also added with a count value or a text.
+
+Example with 4 bar items :
+
+```swift
+TabView {
+ GuidelinesList()
+ .tabItem {
+ Label("Guidelines", image: "Guideline-DNA_32")
+ }
+ .badge("Text")
+ ComponentsList()
+ .tabItem {
+ Label("Components", image: "component-atom_32")
+ }
+ ModulesList()
+ .tabItem {
+ Label("Modules", image: "Module-molecule_32")
+ }
+ .badge(10)
+ ODSDemoAboutView()
+ .tabItem {
+ Label("About", image: "info_32")
+ }
+}
+```
diff --git a/docs/1.0.0/components/barsTab_docs.md b/docs/1.0.0/components/barsTab_docs.md
new file mode 100644
index 00000000..55febdc2
--- /dev/null
+++ b/docs/1.0.0/components/barsTab_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Bars - tab
+content_page: barsTab.md
+---
diff --git a/docs/1.0.0/components/barsTool.md b/docs/1.0.0/components/barsTool.md
new file mode 100644
index 00000000..a229245f
--- /dev/null
+++ b/docs/1.0.0/components/barsTool.md
@@ -0,0 +1,112 @@
+---
+layout: detail
+title: Bars - tool
+description: Tool bars with Orange branding
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Bars: tool](https://system.design.orange.com/0c1af118d/p/06c413-bars-tool/b/951e5c)
+- [Apple guideline - Tool bars](https://developer.apple.com/design/human-interface-guidelines/ios/bars/toolbars/)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+A tool bar allows users to do specific actions regarding the entire page. It is placed at the bottom of the screen. It can display 2 to 5 icon controls or 2 to 3 label entries.
+
+### With label items
+
+![tool bar labels light](images/bars_tool_labels_light.png) ![tool bar labels dark](images/bars_tool_labels_dark.png)
+
+A tool bar can display 2 to 3 label entries.
+
+Example with 3 label entries in toolBar :
+
+```swift
+
+let description1 = ODSToolbarLabelDesription(text: "Action 1") { }
+let description2 = ODSToolbarLabelDesription(text: "Action 2") { }
+let description3 = ODSToolbarLabelDesription(text: "Action 3") { }
+
+let labelItems = ODSToolbarLabeledItems(description1: description1,
+ description2: description2,
+ description3: description3)
+NavigationView {
+ ContentView()
+ .navigationBarTitle("", displayMode: .inline)
+ .navigationBarHidden(true)
+ .odsToolBar(items: labelItems)
+}
+
+// To remove navigation bar, use following modifiers
+// .navigationBarHidden(true)
+
+```
+
+### With icon items
+
+![tool bar icons light](images/bars_tool_icons_light.png) ![tool bar icons dark](images/bars_tool_icons_dark.png)
+
+A tool bar can display 2 to 5 icon controls
+```swift
+
+let description1 = ODSToolbarIconDesription(systemName: "plus") { }
+let description2 = ODSToolbarIconDesription(systemName: "square.and.arrow.up") { }
+let description3 = ODSToolbarIconDesription(systemName: "square.and.pencil") { }
+let description4 = ODSToolbarIconDesription(systemName: "folder") { }
+let description5 = ODSToolbarIconDesription(systemName: "trash") { }
+
+let iconItems = ODSToolbarIconsItems(description1: description1,
+ description2: description2,
+ description3: description3,
+ description4: description4,
+ description5: description5)
+NavigationView {
+ ContentView()
+ .navigationBarTitle("", displayMode: .inline)
+ .navigationBarHidden(true)
+ .odsToolBar(items: iconItems)
+}
+
+// To remove navigation bar, use following modifiers
+// .navigationBarHidden(true)
+
+```
+
+## Remarks
+
+As toolbar colors depends on theme, don't forget to add it to enviroment and call the view modifier __.toolBarColors(for:)__ to apply colors provided by the theme.
+
+Two solutions:
+
+- Directy on the root view
+
+```swift
+let theme = YourTheme()
+
+ContentViewWithToolBar()
+.environment(\.theme, theme)
+.toolBarColors(for: theme)
+```
+
+- Or using __ODSThemeableView__ view as a root view:
+
+```swift
+let theme = YourTheme()
+
+ODSThemeableView(theme: yourTheme) {
+ ContentViewWithToolBar()
+}
+```
diff --git a/docs/1.0.0/components/barsTool_docs.md b/docs/1.0.0/components/barsTool_docs.md
new file mode 100644
index 00000000..a20e98aa
--- /dev/null
+++ b/docs/1.0.0/components/barsTool_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Bars - tool
+content_page: barsTool.md
+---
diff --git a/docs/1.0.0/components/buttons.md b/docs/1.0.0/components/buttons.md
new file mode 100644
index 00000000..86013d1f
--- /dev/null
+++ b/docs/1.0.0/components/buttons.md
@@ -0,0 +1,131 @@
+---
+layout: detail
+title: Buttons
+description: A button allows a user to perform an action or to navigate to another page. It contains a text label and a supporting icon can be displayed.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Buttons](https://system.design.orange.com/0c1af118d/p/278734-buttons-shape/b/536b5f)
+- [Apple guideline - Buttons](https://developer.apple.com/design/human-interface-guidelines/components/menus-and-actions/buttons)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+### Emphasis button
+
+Button variants range in style to denote emphasis. Use different styles and not size to show the preferred choice.
+
+- **Layout**
+
+**Large**
+
+![Buttons high emphasis disabled](images/buttons_layout_large_with_icon.png)
+
+![Buttons high emphasis](images/buttons_layout_large_without_icon.png)
+
+**Small**
+
+![Buttons high emphasis disabled](images/buttons_layout_small_with_icon.png)
+
+![Buttons high emphasis](images/buttons_layout_small_without_icon.png)
+
+
+- **Emphasis**
+
+**High emphasis**
+
+![Buttons high emphasis disabled](images/buttons_functionnal_disabled.png)
+![Buttons high emphasis](images/buttons_emphasis_high.png)
+
+**Medium**
+
+![Buttons medium emphasis disabled](images/buttons_functionnal_disabled.png)
+![Buttons medium emphasis](images/buttons_emphasis_medium.png)
+
+**Low emphasis**
+
+![Buttons low emphasis disabled](images/buttons_functionnal_disabled.png)
+![Buttons low emphasis](images/buttons_emphasis_low.png)
+
+**Lowest emphasis**
+
+![Buttons lowest emphasis disabled](images/buttons_emphasis_lowest_disabled.png)
+![Buttons lowest emphasis](images/buttons_emphasis_lowest.png)
+
+- **Implementation**
+
+```swift
+// High emphasis
+ODSButton(text: Text("Some text"),
+ image: Image("Add"),
+ emphasis: .high) {}
+
+// Lowest emphasis
+ODSButton(text: Text("Some text"),
+ image: Image("Add"),
+ emphasis: .lowest) {}
+```
+
+### Functional button
+
+If required, colour versions can also be used to inform users of positive or negative destructive actions.
+
+**Positive**
+
+![Buttons functional positive disabled](images/buttons_functionnal_disabled.png)
+![Buttons functional positive](images/buttons_functional_positive.png)
+
+**Negative**
+
+![Buttons functional negative disabled](images/buttons_functionnal_disabled.png)
+![Buttons functional negative](images/buttons_functional_negative.png)
+
+```swift
+ // Negative button
+ ODSFunctionalButton(text: Text("Some text"), style: .negative)
+ { /* action: Do something */ }
+
+ ODSFunctionalButton(text: Text("Some text"), image: Image("Add"), style: .negative)
+ { /* action: Do something */ }
+
+ // Positive button
+ ODSFunctionalButton(text: Text("Some text") style: .positive)
+ { /* action: Do something */ }
+
+ ODSFunctionalButton(text: Text("Some text"), image: Image("Add"), style: .positive)
+ { /* action: Do something */ }
+
+ // To disable the button
+ ODSFunctionalButton(text: Text("Some text"), style: .positive) { /* action: Do something */ }
+ .disabled(true)
+```
+
+### Icon button
+
+Plain buttons are the most ubiquitous component found throughout applications. Consisting an icon, they are the most simple button style.
+
+![Buttons icon](images/buttons_icon.png)
+
+```swift
+// icon with system asset
+ODSIconButton(image: Image(systemName: "info.circle")) {}
+
+// icon with Solaris asset
+ODSIconButton(image: Image("Add")) {}
+```
+
+
+
diff --git a/docs/1.0.0/components/buttons_docs.md b/docs/1.0.0/components/buttons_docs.md
new file mode 100644
index 00000000..085cbe10
--- /dev/null
+++ b/docs/1.0.0/components/buttons_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Buttons
+content_page: buttons.md
+---
diff --git a/docs/1.0.0/components/cards.md b/docs/1.0.0/components/cards.md
new file mode 100644
index 00000000..633a1e92
--- /dev/null
+++ b/docs/1.0.0/components/cards.md
@@ -0,0 +1,209 @@
+---
+layout: detail
+title: Cards
+description: Cards contain content and actions about a single subject.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Cards](https://system.design.orange.com/0c1af118d/p/66bac5-cards/b/1591fb)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+Images in cards are considered as decorative, so they are ignored by Voice Over.
+
+## Variants
+
+Cards are a contained and independent element that can display content and actions on a single topic.
+
+There are a few ways cards can be presented. Ranging from a single title on its own for a simple card view or with more information shown in a subtitle and supporting text and actions at the bottom of the card.
+
+
+### Vertical Image First Card
+
+This is a full width card displayed with an image as first element.
+
+This card is composed of two parts:
+- Media: (today an image)
+- Content: with a title, an optional subtitle an optional supporting text and optional buttons (zero up to two)
+
+![Vertical image first card light](images/card_vertical_image_first_light.png) ![Vertical image first card dark](images/card_vertical_image_first_dark.png)
+
+> **Implementation**
+
+Card is configured like this:
+
+```swift
+ODSCardVerticalImageFirst(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: Text("Subtitle"),
+ text: Text("A supporting text to describe something")
+) {
+ Button("Button 1") {
+ // do something here
+ }
+} secondButton: {
+ Button("Button 2") {
+ // do something here
+ }
+}
+```
+
+### Vertical Header First Card
+
+This is a full width card displaying with a title and a thumbnail on top as first element.
+
+This card is composed of three parts:
+- Header: with a title, an optional subtitle and an optional thmubnail
+- Media: (today an image)
+- Content: with an optional supporting text and optional buttons (zero up to two)
+
+![Vertical header first card light](images/card_vertical_header_first_light.png) ![Vertical header first card dark](images/card_vertical_header_first_dark.png)
+
+> **Implementation**
+
+Card is configured like this:
+
+```swift
+
+ODSCardVerticalHeaderFirst(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: Text("Subtitle"),
+ thumbnailSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ text: Text("A supporting text to describe something")
+) {
+ Button("Button 1") {
+ // do something here
+ }
+} secondButton: {
+ Button("Button 2") {
+ // do something here
+ }
+}
+```
+
+### Horizontal Card
+
+This is a full width card displaying with image on left and content with texts on the right. Additonal action buttons can be added at the bottom of the card.
+
+Thes content is composed by:
+- a title
+- an optional subtitle
+- an optional text for larger description
+
+![Horizontal card light](images/card_horizontal_light.png) ![Horizontal card dark](images/card_horizontal_dark.png)
+
+> **Implementation**
+
+Card is configured like this:
+
+```swift
+ODSCardHorizontal(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ imagePosition: .leading,
+ subtitle: Text("Subtitle"),
+ text: Text("A supporting text to describe something")
+) {
+
+ Button("Button 1") {
+ // do something here
+ }
+} secondButton : {
+ Button("Button 1") {
+ // do something here
+ }
+}
+```
+
+### Small Card
+
+The small card if prefered for two-column portrait mobile screen display.
+As it is smaller than full-width cards, it contains only title and subtitle (optional) in one line (Truncated tail).
+
+![Small card light](images/card_small_light.png) ![Small card dark](images/card_small_dark.png)
+
+> **Implementation**
+
+Card is configured like this:
+
+```swift
+ODSCardSmall(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: Text("Subtitle")
+)
+```
+
+How to add Small Card in Grid
+
+```swift
+class Model {
+ let title: String
+ let subtitle: String?
+ let imageSource: ODSImage.Source
+
+ init(title: String, imageSource: ODSImage.Source, subtitle: String? = nil) {
+ self.title = title
+ self.imageSource = imageSource
+ self.subtitle = subtitle
+ }
+}
+
+
+let models = [
+ Model(
+ title: "Title 1",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: "Subtitle 1"
+ )
+ Model(
+ title: "Title 2",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: "Subtitle 2"
+ )
+ //...
+]
+
+/// /!\ Don't forget to put the grid into a scrollview
+ScrollView {
+ LazyVGrid(columns: columns, spacing: ODSSpacing.none) {
+ ForEach(models, id:\.title) { model in
+ ODSCardSmall(
+ title: Text(model.title),
+ imageSource: model.imageSource,
+ subtitle: Text(model.subtitle)
+ )
+ }
+ }
+ .padding(.all, ODSSpacing.m)
+}
+
+```
+
+However for accessibility edge cases, like when text sizes are accessibility sizes, the behaviour is different for such components. They won't be displayed in one truncated line because the text will be too truncated and difficult to read.
+If this choice is too impacting for your UI, it is possible to define the limit number of lines to use if a11y size are used
+
+```swift
+ODSCardSmall(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: Text("Subtitle"),
+ // Here 3 is the number of lines you want for such edge cases
+ titleAccessibleLineLimit: 3,
+ subtitleAccessibleLineLimit: 3
+)
+```
diff --git a/docs/1.0.0/components/cards_docs.md b/docs/1.0.0/components/cards_docs.md
new file mode 100644
index 00000000..193969dd
--- /dev/null
+++ b/docs/1.0.0/components/cards_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Cards
+content_page: cards.md
+---
diff --git a/docs/1.0.0/components/chips.md b/docs/1.0.0/components/chips.md
new file mode 100644
index 00000000..264df252
--- /dev/null
+++ b/docs/1.0.0/components/chips.md
@@ -0,0 +1,162 @@
+---
+layout: detail
+title: Chips
+description: Chips are compact elements that represent an input, attribute, or action.
+---
+
+---
+
+**Page summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager](https://system.design.orange.com/0c1af118d/p/85a52b-components/b/1497a4)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+Chips support dynamic types for accessibility.
+
+Chips support content labeling for accessibility and are readable by most screen readers. Text rendered in chips is automatically provided to accessibility services. Additional content labels are usually unnecessary.
+
+## Variants
+
+### Action chip
+
+Action chips offer actions related to primary content. They should appear dynamically and contextually in a UI.
+An alternative to action chips are buttons, which should appear persistently and consistently.
+
+![Light action chip](images/chips_action_light.png)
+![Dark action chip](images/chips_action_dark.png)
+
+``` swift
+ODSActionChip(
+ text: Text("chip text"),
+ Image(systemname: "heart")
+ action: { doSomething() }
+)
+```
+
+To disable the chip call the `.disabled` on View.
+
+### Input chip
+
+Input chips represent a complex piece of information in compact form, such as an entity (person, place, or thing) or text. They enable user input and verify that input by converting text into chips.
+
+![Light input chip](images/chips_input_light.png)
+![Dark input chip](images/chips_input_dark.png)
+
+``` swift
+// Input chip with leading filled with icon or image for resources
+
+ODSInputChip(
+ text: Text(vhip text),
+ leadingAvatar: .image(Image("Avatar")),
+ action: { doSomething() },
+ removeAction: { doSomething() }
+)
+```
+
+### Choice chip
+
+Choice chips allow selection of a single chip from a set of options. Choice chips clearly delineate and display options in a compact area.
+
+**Note: To display a set of choice chips please see ODSChoiceChipsPicker**
+
+![Light input chip](images/chips_choice_light.png)
+![Dark input chip](images/chips_choice_dark.png)
+
+``` swift
+enum Ingredient: String, CaseIterable {
+ case chocolate, vanilla, strawberry
+}
+
+ODSChoiceChipView(
+ chip: ODSChoiceChip(text: Text("Chocolate"), value: .chocolate),
+ selected: false:
+ action: { doSomething() }
+)
+ODSChoiceChipView(
+ chip: ODSChoiceChip(text: Text("Vanilla"), value: .vanilla),
+ selected: true:
+ action: { doSomething() }
+)
+```
+
+In order to display a set of choice chips you can follow this example:
+
+``` swift
+@State var selection: Ingredient
+
+var body: some View {
+ ScrollView(.horizontal) {
+ ForEach(Ingredient.allCases, id: \.rawValue) { ingredient in
+ ODSChoiceChipView(
+ model: ODSChoiceChip(text: Text(ingredient.rawValue), value: ingredient),
+ selected: selection == ingredient,
+ action: { selection = ingredient }
+ )
+ }
+ }
+}
+```
+
+To simplify the chips placement and alignment, you can also use the __ODSChoiceChipsPicker__ like this:
+
+``` swift
+@State var selection: Ingredient
+
+ODSChoiceChipPicker(
+ title: Text("Select your ingredient"),
+ chips: Ingredient.allCases.map { ODSChoiceChip(text: Text($0.rawValue), value: $0)
+ selection: $selection,
+ placement: .carousel
+)
+```
+
+### Filter chip
+
+Filter chips use tags or descriptive words to filter content. Filter chips allow selection of a set of chips from a set of options. Its usage is usefull to apply a filtering on a list of elmeents.
+
+**Note: To display a set of filter chips please see ODSFilterChipsPicker**
+
+![Light filter chips](images/chips_filter_light.png) ![Dark filter chips](images/chips_filter_dark.png)
+
+![Light filter chips with avatar](images/chips_filter_avatar_light.png) ![Dark filter chips with avatar](images/chips_filter_avatar_dark.png)
+
+
+``` swift
+enum Ingredient: String, CaseIterable {
+ case chocolate, vanilla, strawberry
+
+ var image: Image {
+ Image("self.rawValue")
+ }
+}
+
+ODSFilterChipView(
+ chip: ODSFilterChip(text: Text("Chocolate"), leading: .image(Image("avatar")), value: .chocolate),
+ selected: false:
+ action: { doSomething() }
+)
+```
+
+As the choice chip, to simplify the chips placement and alignment, you can also use the __ODSFilterChipsPicker__ like this:
+
+``` swift
+@State var selection: [Ingredient]
+
+ODSFilterChipPicker(
+ title: Text("Select your ingredients"),
+ chips: Ingredient.allCases.map { ODSFilterChip(text: Text($0.rawValue), leading(.image($0.image)), value: $0)
+ selection: $selection,
+ placement: .carousel
+)
+```
+
diff --git a/docs/1.0.0/components/chips_docs.md b/docs/1.0.0/components/chips_docs.md
new file mode 100644
index 00000000..51287dad
--- /dev/null
+++ b/docs/1.0.0/components/chips_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Chips
+content_page: chips.md
+---
diff --git a/docs/1.0.0/components/images/activity_indicator.png b/docs/1.0.0/components/images/activity_indicator.png
new file mode 100644
index 00000000..5567e614
Binary files /dev/null and b/docs/1.0.0/components/images/activity_indicator.png differ
diff --git a/docs/1.0.0/components/images/banner-dark.png b/docs/1.0.0/components/images/banner-dark.png
new file mode 100644
index 00000000..769144eb
Binary files /dev/null and b/docs/1.0.0/components/images/banner-dark.png differ
diff --git a/docs/1.0.0/components/images/banner-light.png b/docs/1.0.0/components/images/banner-light.png
new file mode 100644
index 00000000..ec84c11f
Binary files /dev/null and b/docs/1.0.0/components/images/banner-light.png differ
diff --git a/docs/1.0.0/components/images/bars_navigation_items_dark.png b/docs/1.0.0/components/images/bars_navigation_items_dark.png
new file mode 100644
index 00000000..e7124a46
Binary files /dev/null and b/docs/1.0.0/components/images/bars_navigation_items_dark.png differ
diff --git a/docs/1.0.0/components/images/bars_navigation_items_light.png b/docs/1.0.0/components/images/bars_navigation_items_light.png
new file mode 100644
index 00000000..8cc70e0d
Binary files /dev/null and b/docs/1.0.0/components/images/bars_navigation_items_light.png differ
diff --git a/docs/1.0.0/components/images/bars_navigation_large_dark.png b/docs/1.0.0/components/images/bars_navigation_large_dark.png
new file mode 100644
index 00000000..97e823e5
Binary files /dev/null and b/docs/1.0.0/components/images/bars_navigation_large_dark.png differ
diff --git a/docs/1.0.0/components/images/bars_navigation_large_light.png b/docs/1.0.0/components/images/bars_navigation_large_light.png
new file mode 100644
index 00000000..320fcae0
Binary files /dev/null and b/docs/1.0.0/components/images/bars_navigation_large_light.png differ
diff --git a/docs/1.0.0/components/images/bars_navigation_search_dark.png b/docs/1.0.0/components/images/bars_navigation_search_dark.png
new file mode 100644
index 00000000..b5c851e4
Binary files /dev/null and b/docs/1.0.0/components/images/bars_navigation_search_dark.png differ
diff --git a/docs/1.0.0/components/images/bars_navigation_search_light.png b/docs/1.0.0/components/images/bars_navigation_search_light.png
new file mode 100644
index 00000000..915a2029
Binary files /dev/null and b/docs/1.0.0/components/images/bars_navigation_search_light.png differ
diff --git a/docs/1.0.0/components/images/bars_navigation_standard_dark.png b/docs/1.0.0/components/images/bars_navigation_standard_dark.png
new file mode 100644
index 00000000..d20b5a7a
Binary files /dev/null and b/docs/1.0.0/components/images/bars_navigation_standard_dark.png differ
diff --git a/docs/1.0.0/components/images/bars_navigation_standard_light.png b/docs/1.0.0/components/images/bars_navigation_standard_light.png
new file mode 100644
index 00000000..9b9f93db
Binary files /dev/null and b/docs/1.0.0/components/images/bars_navigation_standard_light.png differ
diff --git a/docs/1.0.0/components/images/bars_tab_dark.png b/docs/1.0.0/components/images/bars_tab_dark.png
new file mode 100644
index 00000000..25a09787
Binary files /dev/null and b/docs/1.0.0/components/images/bars_tab_dark.png differ
diff --git a/docs/1.0.0/components/images/bars_tab_light.png b/docs/1.0.0/components/images/bars_tab_light.png
new file mode 100644
index 00000000..da7e46bf
Binary files /dev/null and b/docs/1.0.0/components/images/bars_tab_light.png differ
diff --git a/docs/1.0.0/components/images/bars_tool_icons_dark.png b/docs/1.0.0/components/images/bars_tool_icons_dark.png
new file mode 100644
index 00000000..3be894a5
Binary files /dev/null and b/docs/1.0.0/components/images/bars_tool_icons_dark.png differ
diff --git a/docs/1.0.0/components/images/bars_tool_icons_light.png b/docs/1.0.0/components/images/bars_tool_icons_light.png
new file mode 100644
index 00000000..758ecd9f
Binary files /dev/null and b/docs/1.0.0/components/images/bars_tool_icons_light.png differ
diff --git a/docs/1.0.0/components/images/bars_tool_labels_dark.png b/docs/1.0.0/components/images/bars_tool_labels_dark.png
new file mode 100644
index 00000000..dda57849
Binary files /dev/null and b/docs/1.0.0/components/images/bars_tool_labels_dark.png differ
diff --git a/docs/1.0.0/components/images/bars_tool_labels_light.png b/docs/1.0.0/components/images/bars_tool_labels_light.png
new file mode 100644
index 00000000..d46cfe54
Binary files /dev/null and b/docs/1.0.0/components/images/bars_tool_labels_light.png differ
diff --git a/docs/1.0.0/components/images/buttons_emphasis_high.png b/docs/1.0.0/components/images/buttons_emphasis_high.png
new file mode 100644
index 00000000..c0a98b7f
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_emphasis_high.png differ
diff --git a/docs/1.0.0/components/images/buttons_emphasis_low.png b/docs/1.0.0/components/images/buttons_emphasis_low.png
new file mode 100644
index 00000000..e306cb0e
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_emphasis_low.png differ
diff --git a/docs/1.0.0/components/images/buttons_emphasis_lowest.png b/docs/1.0.0/components/images/buttons_emphasis_lowest.png
new file mode 100644
index 00000000..317dae96
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_emphasis_lowest.png differ
diff --git a/docs/1.0.0/components/images/buttons_emphasis_lowest_disabled.png b/docs/1.0.0/components/images/buttons_emphasis_lowest_disabled.png
new file mode 100644
index 00000000..c9931849
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_emphasis_lowest_disabled.png differ
diff --git a/docs/1.0.0/components/images/buttons_emphasis_medium.png b/docs/1.0.0/components/images/buttons_emphasis_medium.png
new file mode 100644
index 00000000..ef148b6e
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_emphasis_medium.png differ
diff --git a/docs/1.0.0/components/images/buttons_functional_negative.png b/docs/1.0.0/components/images/buttons_functional_negative.png
new file mode 100644
index 00000000..5d88a0fc
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_functional_negative.png differ
diff --git a/docs/1.0.0/components/images/buttons_functional_positive.png b/docs/1.0.0/components/images/buttons_functional_positive.png
new file mode 100644
index 00000000..330ef3d6
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_functional_positive.png differ
diff --git a/docs/1.0.0/components/images/buttons_functionnal_disabled.png b/docs/1.0.0/components/images/buttons_functionnal_disabled.png
new file mode 100644
index 00000000..803d1200
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_functionnal_disabled.png differ
diff --git a/docs/1.0.0/components/images/buttons_icon.png b/docs/1.0.0/components/images/buttons_icon.png
new file mode 100644
index 00000000..552dc955
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_icon.png differ
diff --git a/docs/1.0.0/components/images/buttons_layout_large_with_icon.png b/docs/1.0.0/components/images/buttons_layout_large_with_icon.png
new file mode 100644
index 00000000..29d586ac
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_layout_large_with_icon.png differ
diff --git a/docs/1.0.0/components/images/buttons_layout_large_without_icon.png b/docs/1.0.0/components/images/buttons_layout_large_without_icon.png
new file mode 100644
index 00000000..e6f378d7
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_layout_large_without_icon.png differ
diff --git a/docs/1.0.0/components/images/buttons_layout_small_with_icon.png b/docs/1.0.0/components/images/buttons_layout_small_with_icon.png
new file mode 100644
index 00000000..a0b7ae5c
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_layout_small_with_icon.png differ
diff --git a/docs/1.0.0/components/images/buttons_layout_small_without_icon.png b/docs/1.0.0/components/images/buttons_layout_small_without_icon.png
new file mode 100644
index 00000000..93ae02fd
Binary files /dev/null and b/docs/1.0.0/components/images/buttons_layout_small_without_icon.png differ
diff --git a/docs/1.0.0/components/images/card_horizontal_dark.png b/docs/1.0.0/components/images/card_horizontal_dark.png
new file mode 100644
index 00000000..7fe518b8
Binary files /dev/null and b/docs/1.0.0/components/images/card_horizontal_dark.png differ
diff --git a/docs/1.0.0/components/images/card_horizontal_light.png b/docs/1.0.0/components/images/card_horizontal_light.png
new file mode 100644
index 00000000..fdd1bdb3
Binary files /dev/null and b/docs/1.0.0/components/images/card_horizontal_light.png differ
diff --git a/docs/1.0.0/components/images/card_small_dark.png b/docs/1.0.0/components/images/card_small_dark.png
new file mode 100644
index 00000000..211a72a9
Binary files /dev/null and b/docs/1.0.0/components/images/card_small_dark.png differ
diff --git a/docs/1.0.0/components/images/card_small_light.png b/docs/1.0.0/components/images/card_small_light.png
new file mode 100644
index 00000000..e2b9949b
Binary files /dev/null and b/docs/1.0.0/components/images/card_small_light.png differ
diff --git a/docs/1.0.0/components/images/card_vertical_header_first_dark.png b/docs/1.0.0/components/images/card_vertical_header_first_dark.png
new file mode 100644
index 00000000..542c62eb
Binary files /dev/null and b/docs/1.0.0/components/images/card_vertical_header_first_dark.png differ
diff --git a/docs/1.0.0/components/images/card_vertical_header_first_light.png b/docs/1.0.0/components/images/card_vertical_header_first_light.png
new file mode 100644
index 00000000..66460143
Binary files /dev/null and b/docs/1.0.0/components/images/card_vertical_header_first_light.png differ
diff --git a/docs/1.0.0/components/images/card_vertical_image_first_dark.png b/docs/1.0.0/components/images/card_vertical_image_first_dark.png
new file mode 100644
index 00000000..f9a5299d
Binary files /dev/null and b/docs/1.0.0/components/images/card_vertical_image_first_dark.png differ
diff --git a/docs/1.0.0/components/images/card_vertical_image_first_light.png b/docs/1.0.0/components/images/card_vertical_image_first_light.png
new file mode 100644
index 00000000..58ee1f75
Binary files /dev/null and b/docs/1.0.0/components/images/card_vertical_image_first_light.png differ
diff --git a/docs/1.0.0/components/images/chips_action_dark.png b/docs/1.0.0/components/images/chips_action_dark.png
new file mode 100644
index 00000000..e0a50458
Binary files /dev/null and b/docs/1.0.0/components/images/chips_action_dark.png differ
diff --git a/docs/1.0.0/components/images/chips_action_light.png b/docs/1.0.0/components/images/chips_action_light.png
new file mode 100644
index 00000000..e2d8a9d6
Binary files /dev/null and b/docs/1.0.0/components/images/chips_action_light.png differ
diff --git a/docs/1.0.0/components/images/chips_choice_dark.png b/docs/1.0.0/components/images/chips_choice_dark.png
new file mode 100644
index 00000000..d848d8ad
Binary files /dev/null and b/docs/1.0.0/components/images/chips_choice_dark.png differ
diff --git a/docs/1.0.0/components/images/chips_choice_light.png b/docs/1.0.0/components/images/chips_choice_light.png
new file mode 100644
index 00000000..37781814
Binary files /dev/null and b/docs/1.0.0/components/images/chips_choice_light.png differ
diff --git a/docs/1.0.0/components/images/chips_filter_avatar_dark.png b/docs/1.0.0/components/images/chips_filter_avatar_dark.png
new file mode 100644
index 00000000..e4269dcc
Binary files /dev/null and b/docs/1.0.0/components/images/chips_filter_avatar_dark.png differ
diff --git a/docs/1.0.0/components/images/chips_filter_avatar_light.png b/docs/1.0.0/components/images/chips_filter_avatar_light.png
new file mode 100644
index 00000000..56857458
Binary files /dev/null and b/docs/1.0.0/components/images/chips_filter_avatar_light.png differ
diff --git a/docs/1.0.0/components/images/chips_filter_dark.png b/docs/1.0.0/components/images/chips_filter_dark.png
new file mode 100644
index 00000000..45fe2cf0
Binary files /dev/null and b/docs/1.0.0/components/images/chips_filter_dark.png differ
diff --git a/docs/1.0.0/components/images/chips_filter_light.png b/docs/1.0.0/components/images/chips_filter_light.png
new file mode 100644
index 00000000..d9c57620
Binary files /dev/null and b/docs/1.0.0/components/images/chips_filter_light.png differ
diff --git a/docs/1.0.0/components/images/chips_input_dark.png b/docs/1.0.0/components/images/chips_input_dark.png
new file mode 100644
index 00000000..315167eb
Binary files /dev/null and b/docs/1.0.0/components/images/chips_input_dark.png differ
diff --git a/docs/1.0.0/components/images/chips_input_light.png b/docs/1.0.0/components/images/chips_input_light.png
new file mode 100644
index 00000000..6e928d1d
Binary files /dev/null and b/docs/1.0.0/components/images/chips_input_light.png differ
diff --git a/docs/1.0.0/components/images/list_items_selection_circle_dark.png b/docs/1.0.0/components/images/list_items_selection_circle_dark.png
new file mode 100644
index 00000000..cef8cafe
Binary files /dev/null and b/docs/1.0.0/components/images/list_items_selection_circle_dark.png differ
diff --git a/docs/1.0.0/components/images/list_items_selection_circle_light.png b/docs/1.0.0/components/images/list_items_selection_circle_light.png
new file mode 100644
index 00000000..871e26a4
Binary files /dev/null and b/docs/1.0.0/components/images/list_items_selection_circle_light.png differ
diff --git a/docs/1.0.0/components/images/list_items_standard_square_dark.png b/docs/1.0.0/components/images/list_items_standard_square_dark.png
new file mode 100644
index 00000000..7e6d2994
Binary files /dev/null and b/docs/1.0.0/components/images/list_items_standard_square_dark.png differ
diff --git a/docs/1.0.0/components/images/list_items_standard_square_light.png b/docs/1.0.0/components/images/list_items_standard_square_light.png
new file mode 100644
index 00000000..03dc9d15
Binary files /dev/null and b/docs/1.0.0/components/images/list_items_standard_square_light.png differ
diff --git a/docs/1.0.0/components/images/progress_bar.png b/docs/1.0.0/components/images/progress_bar.png
new file mode 100644
index 00000000..d571477e
Binary files /dev/null and b/docs/1.0.0/components/images/progress_bar.png differ
diff --git a/docs/1.0.0/components/images/sliders.png b/docs/1.0.0/components/images/sliders.png
new file mode 100644
index 00000000..1a5c9c81
Binary files /dev/null and b/docs/1.0.0/components/images/sliders.png differ
diff --git a/docs/1.0.0/components/listItem.md b/docs/1.0.0/components/listItem.md
new file mode 100644
index 00000000..a56d4d25
--- /dev/null
+++ b/docs/1.0.0/components/listItem.md
@@ -0,0 +1,132 @@
+---
+layout: detail
+title: List item
+description: Lists are continuous, vertical indexes of text or images.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Lists](https://system.design.orange.com/0c1af118d/p/09a804-lists/b/669743)
+- [Apple guideline - Lists and tables](https://developer.apple.com/design/human-interface-guidelines/components/layout-and-organization/lists-and-tables)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+Here we just propose a configuration for two types of list items:
+- Standard with trailing actions
+- Selection with trailing icons (selection indicators)
+
+All items are composed of:
+- Title
+- Subtitle (optional)
+- Leading icon (optional)
+
+The leading icon is :
+- icon or image from resources
+- Image from url. During image loading a placeholder Image is needed. Three kinds of shape are proposed (circular, square or wide).
+
+
+### Standard list item
+
+For standard items, trailing icons can be added. Two types of icons are proposed:
+- with text
+- with text and info button to make an action
+
+![List item standard square light](images/list_items_standard_square_light.png)
+![List item standard square dark](images/list_items_standard_square_dark.png)
+
+The standard item can be used in a `NavigationLink` (for example, display more details)
+
+```swift
+
+// Build the List view using ODSListItem withount navigation
+List {
+ // Items without navigation
+ ODSListItem(title: Text("Title Only")).odsListItemStyle()
+ ODSListItem(title: Text("Title with subtitle"), subtitle: Text("subtitle")).odsListItemStyle()
+ ODSListItem(title: Text("Title with leading icon"), leading: .icon(Image(systemName: "heart"))).odsListItemStyle()
+ ODSListItem(title: Text("Title with trailing text"), trailingText: Text("Details")).odsListItemStyle()
+ ODSListItem(title: Text("Title with trailing text and info button"), trailingText: Text("Details")) {
+ // Add info button action here
+ }.odsListItemStyle()
+
+ // Item with navigation
+ NavigationLink {
+ Text("The destination view")
+ } label: {
+ ODSListItem(title: Text("Title without trailing element"))
+ }.odsListItemStyle()
+
+ NavigationLink {
+ Text("The destination view")
+ } label: {
+ ODSListItem(title: Text("Title with trailing text"), trailingText: Text("Details"))
+ }.odsListItemStyle()
+
+ NavigationLink {
+ Text("The destination view")
+ } label: {
+ ODSListItem(title: Text("Title with trailing text and info button"), trailingText: Text("Details")) {
+ // Add info button action here
+ }
+ }.odsListItemStyle()
+}
+```
+
+### Selection list item
+
+![List item slection circle light](images/list_items_selection_circle_light.png)
+![List item slection circle dark](images/list_items_selection_circle_dark.png)
+
+The selection list items can be used to enumerate data as list in order to select elements.
+
+```swift
+struct MyMultipleOptionsSelection: View {
+
+ @State private var optionA: Bool = false
+ @State private var optionB: Bool = false
+
+ var body: some View {
+ List {
+ ODSListItem(
+ title: Text("Option A"),
+ subtitle: Text("Option A description"),
+ trailingCheckmarkIsSelected: optionA
+ )
+ .odsListItemStyle()
+ .onTapGesture {
+ optionA.toggle()
+ }
+
+ ODSListItem(
+ title: Text("Option B"),
+ subtitle: Text("Option B description"),
+ trailingCheckmarkIsSelected: optionB
+ )
+ .odsListItemStyle()
+ .onTapGesture {
+ optionB.toggle()
+ }
+ }
+ }
+}
+```
+
+**Note 1:** Don’t forget, if item is used in a `NavigationLink`, a chevron is automatically added by the system. For design purpose it is NOT recommended to add item with `trailingCheckmarkIsSelected` and `trailingToggleIsOn` parameters in a `NavigationLink`.
+
+**Note 2:**Don’t forget to apply the style on:
+- __ODSListItem__ if it is not used with NavigationLink.
+- NavigationLink if __ODSListItem__ is its label.
+
diff --git a/docs/1.0.0/components/listItem_docs.md b/docs/1.0.0/components/listItem_docs.md
new file mode 100644
index 00000000..9caa65f1
--- /dev/null
+++ b/docs/1.0.0/components/listItem_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: List item
+content_page: listItem.md
+---
diff --git a/docs/1.0.0/components/progressIndicator.md b/docs/1.0.0/components/progressIndicator.md
new file mode 100644
index 00000000..4271e5d7
--- /dev/null
+++ b/docs/1.0.0/components/progressIndicator.md
@@ -0,0 +1,72 @@
+---
+layout: detail
+title: Progress indicator
+description: Progress indicators show users that elements or pages are loading
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Progress indicators](https://system.design.orange.com/0c1af118d/p/5969ab-progress-indicator)
+- [Apple guideline - Progress indicators](https://developer.apple.com/design/human-interface-guidelines/components/status/progress-indicators)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+Progress indicators show users that elements or pages are loading.
+
+### Progress bar
+
+Progres bar is used to display **determinate** operations. It display the indicator increasing in width from 0 to 100% of the track, in sync with the process’s progress.
+
+To display the indicator as progress bar with a specific color use the `tint`.
+
+![Progress bar](images/progress_bar.png)
+
+We recommend to use the theme for that using the accent color as shown in following exemple.
+
+```swift
+ProgressView("Downloading...", value: value, total: 100)
+ .tint(theme.componentColors.accent)
+```
+
+It is possible to display the current value to provide more context.
+
+```swift
+ProgressView(value: value, total: 100) {
+ Text("Downloading...")
+} currentValueLabel: {
+ let percent = String(format: "%0.2f", value)
+ Text("\(percent) %").frame(maxWidth: .infinity, alignment: .trailing)
+}
+.tint(theme.componentColors.accent)
+```
+
+### Activity indicators
+
+Activity indicator is used to display **Indeterminate** operations. It spins while a task is performed.
+
+![Activity indicator](images/activity_indicator.png)
+
+```swift
+ProgressView()
+```
+
+An additional label can be added to provide more context.
+
+```swift
+ProgressView {
+ Text("Loading...")
+}
+```
diff --git a/docs/1.0.0/components/progressIndicator_docs.md b/docs/1.0.0/components/progressIndicator_docs.md
new file mode 100644
index 00000000..17b0c0b6
--- /dev/null
+++ b/docs/1.0.0/components/progressIndicator_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Progress indicator
+content_page: progressIndicator.md
+---
diff --git a/docs/1.0.0/components/sheetsBottom.md b/docs/1.0.0/components/sheetsBottom.md
new file mode 100644
index 00000000..552072e8
--- /dev/null
+++ b/docs/1.0.0/components/sheetsBottom.md
@@ -0,0 +1,85 @@
+---
+layout: detail
+title: Bottom sheets
+description: Bottom Sheets are surfaces anchored to the bottom of the screen that present users supplement content.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Bottom sheets](https://system.design.orange.com/0c1af118d/p/3347ca-sheets-bottom/b/83b619)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+Bottom sheets are surfaces anchored to the bottom of the screen that present users supplemental content.
+It is useful for requesting a specific information or enabling a simple task related to the current context
+of the current view or more globaly the application context.
+
+### Standard
+
+The standard bottom sheet must be used only with a "simple, basic" content. If a more complex content (scrollable) must be added prefer the Expanding variant.
+
+It defines two states:
+- **closed**: The content is hidden
+- **opened**: The content is visible (above the main view)
+
+A taps on the header, opens or closes the bottom sheet.
+
+```swift
+struct BottomSheetPresentation: View {
+ @State private var isOpen = false
+
+ var body: some View {
+ VStack {
+ // Main content goes here.
+ Text("Bottom sheet is \(isOpen ? "Opened": "Closed")")
+ }
+ .odsBottomSheetStandard(isOpen: $isOpen, title: "Customize") {
+ // Bottom sheet content goes here
+ }
+ }
+}
+```
+
+You can also define accessibility hints and labels for this standard bottom sheet so as to make VoiceOver vocalize the state of this sheet (opended or closed) or to vocalize some hints to make it be opened or not.
+
+### Expanding
+
+The type of bottom must be used if the content is more complex and perhaps need to be scrollable.
+
+It defines three size:
+- **small**: (closed) The content is hidden, only the header is visible
+- **medium**: (parcially opened) The content is parcially visible (half screen above the main view) but not scrollable
+- **large**: (opened) The content is visible and scrollable
+
+User can resize by tapping on dimming area (close), drag the content, or tap on the header to cycle through the available sizes.
+
+```swift
+ struct BottomSheetPresentation: View {
+ @State private var bottomSheetSize: ODSBottomSheetSize = .large
+ var body: some View {
+ VStack {
+ // Main content goes here.
+ Text("Bottom sheet size \(bottomSheetSize.rawValue)")
+ }
+ .odsBottomSheetExpanding(title: "Customize", bottomSheetSize: $bottomSheetSize) {
+ // Bottom sheet content goes here
+ }
+ }
+ }
+```
+
+**Remark**: In order to compute the resizing when user scrolls the content, the bottom sheet automatically adds the provided content is a scrollView.
+
diff --git a/docs/1.0.0/components/sheetsBottom_docs.md b/docs/1.0.0/components/sheetsBottom_docs.md
new file mode 100644
index 00000000..03d56ceb
--- /dev/null
+++ b/docs/1.0.0/components/sheetsBottom_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Sheets - Bottom
+content_page: sheetsBottom.md
+---
diff --git a/docs/1.0.0/components/slider.md b/docs/1.0.0/components/slider.md
new file mode 100644
index 00000000..9bb3f76f
--- /dev/null
+++ b/docs/1.0.0/components/slider.md
@@ -0,0 +1,105 @@
+---
+layout: detail
+title: Sliders
+description: Sliders allow users to make selections from a range of values.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Sliders](https://system.design.orange.com/0c1af118d/p/7559da-sliders/b/253eea)
+- [Apple guideline - Sliders](https://developer.apple.com/design/human-interface-guidelines/components/selection-and-input/sliders)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+As the `ODSSlider` is based on the native `Slider`, Voice Over is able to vocalize
+However, if you want to set a description you need to add it using `.accessibilityLabel` on the `ODSSlider`.
+
+We recommend to not set information on `minimumValueLabel` and `maximumValueLabel` view using `.accessibilityHidden(true)`
+
+## Variants
+
+Slider is a system Slider component with accent color set to coreOrange.
+
+![Sliders](images/sliders.png)
+
+### Unlabeled slider
+
+Unlabelled sliders allow users to make easy selections that do not require any details or context.
+
+```swift
+struct UnlabeledSlider: View {
+
+ @State private var value = 50.0
+
+ var body: some View {
+ ODSSlider(value: $value, in: 0 ... 100)
+ }
+}
+```
+
+### Labeled slider (with images)
+
+We recommand to not set information on `minimumValueLabel` and `maximumValueLabel` view using `.accessibilityHidden(true)`. You can do it like this:
+
+```swift
+struct LabeledSlider: View {
+
+ @State private var value = 50.0
+
+ var body: some View {
+ ODSSlider(value: $value, in: 0 ... 100) {
+ Text("Volume")
+ } minimumValueLabel: {
+ Image(systemName: "speaker.wave.1.fill").accessibilityHidden(true)
+ } maximumValueLabel: {
+ Image(systemName: "speaker.wave.3.fill").accessibilityHidden(true)
+ }
+ }
+}
+```
+
+### Labeled slider (with text)
+
+We recommand to not set information on `minimumValueLabel` and `maximumValueLabel` view using `.accessibilityHidden(true)`. You can do it like this:
+
+```swift
+ODSSlider(value: $value, in: 0 ... 100) {
+ Text("Volume")
+} minimumValueLabel: {
+ Text("0").accessibilityHidden(true)
+} maximumValueLabel: {
+ Text("100").accessibilityHidden(true)
+}
+```
+
+### Stepped slider (with text and value display)
+
+We recommand to not set information on `minimumValueLabel` and `maximumValueLabel` view using `.accessibilityHidden(true)`. You can do it like this:
+
+```swift
+struct SteppedSlider: View {
+
+ @State private var value = 50.0
+
+ var body: some View {
+ ODSSlider(value: $value, in: 0 ... 100.0, step: 0.5) {
+ Text("Volume")
+ } minimumValueLabel: {
+ Image(systemName: "speaker.wave.1.fill").accessibilityHidden(true)
+ } maximumValueLabel: {
+ Image(systemName: "speaker.wave.3.fill").accessibilityHidden(true)
+ }
+ }
+}
+```
diff --git a/docs/1.0.0/components/slider_docs.md b/docs/1.0.0/components/slider_docs.md
new file mode 100644
index 00000000..29743fb1
--- /dev/null
+++ b/docs/1.0.0/components/slider_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Slider
+content_page: slider.md
+---
diff --git a/docs/1.0.0/components/textInput.md b/docs/1.0.0/components/textInput.md
new file mode 100644
index 00000000..a57f46df
--- /dev/null
+++ b/docs/1.0.0/components/textInput.md
@@ -0,0 +1,64 @@
+---
+layout: detail
+title: Text fields and text editor
+description: Text fields and text editor let users enter and edit text.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Text fields](https://system.design.orange.com/0c1af118d/p/47d389-text-fields/b/461794)
+- [Apple guideline - Text fields](https://developer.apple.com/design/human-interface-guidelines/components/selection-and-input/text-fields)
+- [Apple guideline - Edit Menu](https://developer.apple.com/design/human-interface-guidelines/components/menus-and-actions/edit-menus)
+- [Apple doc - Text input](https://developer.apple.com/documentation/swiftui/text-input-and-output)
+- [Apple doc - Text Field](https://developer.apple.com/documentation/swiftui/textfield)
+- [Apple doc - Secure Text Field](https://developer.apple.com/documentation/swiftui/securefield)
+- [Apple doc - Text Editor](https://developer.apple.com/documentation/swiftui/i/texteditor)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+For all variants, we provide the `odsTextFieldStyle` view modifier to apply font, collors (background, tint) provided by the theme.
+
+### Text field
+
+A control that displays an editable text interface.
+
+```swift
+TextField("A text field", text: $textToEdit)
+ .odsTextFieldStyle()
+```
+
+ ### Secure text field
+
+Use a `SecureField` when you want behavior similar to a ``TextField``, but you don't want the user's text to be visible. Typically, you use this for entering passwords and other sensitive information.
+
+```swift
+SecureField("Secure text", text: $textToEdit)
+ .odsTextFieldStyle()
+```
+
+### Text editor
+
+A text editor view allows you to display and edit multiline, scrollable text in your app's user interface.
+
+```swift
+TextEditor(text: $textToEdit)
+ .odsTextFieldStyle()
+```
+
+## Text selection
+
+Text selection is available when text field or text editor is entering in edition mode. This is not a custom component but just a way to apply right style (customize with colors, font provided by theme).
+
diff --git a/docs/1.0.0/components/textInput_docs.md b/docs/1.0.0/components/textInput_docs.md
new file mode 100644
index 00000000..fabdf10a
--- /dev/null
+++ b/docs/1.0.0/components/textInput_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Text fields
+content_page: textInput.md
+---
diff --git a/docs/1.0.0/guidelines/colors.md b/docs/1.0.0/guidelines/colors.md
new file mode 100644
index 00000000..601c632d
--- /dev/null
+++ b/docs/1.0.0/guidelines/colors.md
@@ -0,0 +1,56 @@
+---
+layout: detail
+title: Colors
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Colour](https://system.design.orange.com/0c1af118d/p/73fa17-colour/b/025652)
+- [Apple guideline - The color system](https://developer.apple.com/design/human-interface-guidelines/foundations/color)
+
+## Theme colors
+
+Colors are defined in theme and described using `ODSColorDecription`, by setting :
+- the asset name,
+- the bundle containing the asset
+- the color names for light and dark modes (used by demo application)
+
+Colors will be different depending on whether they are displayed in light or in dark mode.
+
+## How to use
+
+### Using the color name
+
+You can get color in theme using its name like this:
+
+``` swift
+ // Don't forget get theme from environment
+ @Environment(\.theme) var theme
+
+ Image(systemName: "checkmark").foregroundColor(theme.color("coreOrange"))
+ MyView().background(theme.color("functionalInfo"))
+```
+
+### Using components token
+
+You can get color in theme using components token like this:
+
+``` swift
+// Don't forget get theme from environment
+@Environment(\.theme) var theme
+
+Button {
+} label: {
+ Text("Cancel")
+ .padding(ODSSpacing.m)
+}
+.background(theme.componentColors.functionalNegative)
+```
diff --git a/docs/1.0.0/guidelines/colors_docs.md b/docs/1.0.0/guidelines/colors_docs.md
new file mode 100644
index 00000000..c2c79e6f
--- /dev/null
+++ b/docs/1.0.0/guidelines/colors_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Colors
+content_page: colors.md
+---
diff --git a/docs/1.0.0/guidelines/spacings.md b/docs/1.0.0/guidelines/spacings.md
new file mode 100644
index 00000000..485f004a
--- /dev/null
+++ b/docs/1.0.0/guidelines/spacings.md
@@ -0,0 +1,56 @@
+---
+layout: detail
+title: Spacings
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Spacings](https://system.design.orange.com/0c1af118d/p/375be7-spacing)
+- [Apple guideline - Layout](https://developer.apple.com/design/human-interface-guidelines/foundations/layout)
+
+## Usage
+
+The spacing scale increases in small increments needed to describe both internal and external spacing relationships. Spacing tokens can be applied as padding and margins.
+
+### Apply spacing for magin
+
+Apply the spacing to get magin arround element like this:
+
+``` swift
+// Add a padding of 16px arround the text in the button
+
+Button {
+ // Add your action here
+} label: {
+ Text("ButtonText")
+ .padding(.all, ODSSpacing.m)
+}
+
+
+// Add a magin of 16px (leading and trailing)
+VStack {
+ Text("Title")
+ Text("A very long text for description in the main view")
+}
+.padding(.horizontal: ODSSpacing.m) // Add a margin to the
+
+```
+
+### Apply spacing for padding
+
+Apply the spacing to separate elements like this:
+
+``` swift
+HStack(spacing: ODSSpacing.m) {
+ Image(systemname: "heart")
+ Text("Some text")
+}
+```
diff --git a/docs/1.0.0/guidelines/spacings_docs.md b/docs/1.0.0/guidelines/spacings_docs.md
new file mode 100644
index 00000000..9f829894
--- /dev/null
+++ b/docs/1.0.0/guidelines/spacings_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Spacings
+content_page: spacings.md
+---
diff --git a/docs/1.0.0/guidelines/typography.md b/docs/1.0.0/guidelines/typography.md
new file mode 100644
index 00000000..1e52d8d9
--- /dev/null
+++ b/docs/1.0.0/guidelines/typography.md
@@ -0,0 +1,48 @@
+---
+layout: detail
+title: Typography
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Typography](https://system.design.orange.com/0c1af118d/p/54fe27-typography)
+- [Apple guideline - Typography](https://developer.apple.com/design/human-interface-guidelines/foundations/typography/)
+
+## Implementation
+
+ODS library defines its own font style. The font associated to the style is defined in the theme set in the environment.
+
+### Apply font style on text
+
+Apply the font style on text like this:
+
+``` swift
+ Text("Sample").odsFont(.titleS)
+ TextField("A text field", text: $textToEdit).odsFont(.titleS)
+```
+
+### Apply font style on view
+
+In the example below, the first text field has a font style set directly, while the font applied to the following container applies to all of the text views inside that container.
+
+``` swift
+VStack {
+ Text("Font applied to a text view.")
+ .odsFont(.headlineL)
+
+ VStack {
+ Text("These two text views have the same font")
+ Text("applied to their parent view.")
+ }
+ .odsFont(.titleS)
+}
+```
+
diff --git a/docs/1.0.0/guidelines/typography_docs.md b/docs/1.0.0/guidelines/typography_docs.md
new file mode 100644
index 00000000..da3bdf9a
--- /dev/null
+++ b/docs/1.0.0/guidelines/typography_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Typography
+content_page: typography.md
+---
diff --git a/docs/1.0.0/home_content.md b/docs/1.0.0/home_content.md
new file mode 100644
index 00000000..3ead013c
--- /dev/null
+++ b/docs/1.0.0/home_content.md
@@ -0,0 +1,27 @@
+## Introduction
+
+Orange is providing a full Design System to build Orange Mobile Application. The objective of the [Orange Design System](https://system.design.orange.com/0c1af118d/p/95b685-ios/) (ODS) is to propose a set of guidelines on how to apply the Orange Brand on mobile applications. The Orange design System also provides a series of components and modules that show in details how to use this in the Orange apps.
+
+The Orange Design System has been implemented in a code library that provides:
+- a SwiftUI code library
+- a demo app that can be launched to show the guidelines, components and modules
+- this demo app also shows how to use the lib or style existing components
+
+Using these resources will allow you to create Orange branded applications faster and will inherit all the work that was done to make sure that all presented codes are fully tested regarding the brand and the accessibility compliance.
+
+The Orange Design System framework supports iOS 15 and later.
+
+## Instructions
+
+### Swift Package Manager
+
+The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler.
+
+Once you have your Swift package set up, adding ODS as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`.
+
+```swift
+dependencies: [
+ .package(url: "https://github.com/Orange-OpenSource/ods-ios.git", .upToNextMajor(from: "1.0.0"))
+]
+```
+
diff --git a/docs/1.0.0/index.md b/docs/1.0.0/index.md
new file mode 100644
index 00000000..ef70b2b0
--- /dev/null
+++ b/docs/1.0.0/index.md
@@ -0,0 +1,7 @@
+---
+layout: main
+title: Integration
+description: Getting started with Orange Design System for iOS
+---
+
+{% include_relative home_content.md %}
diff --git a/docs/1.0.0/index_content.md b/docs/1.0.0/index_content.md
new file mode 100644
index 00000000..8c4b2b1e
--- /dev/null
+++ b/docs/1.0.0/index_content.md
@@ -0,0 +1,7 @@
+---
+layout: detail
+title: Integration
+description: Getting started with Orange Design System for iOS
+---
+
+{% include_relative home_content.md %}
diff --git a/docs/1.0.0/modules/about.md b/docs/1.0.0/modules/about.md
new file mode 100644
index 00000000..584e9acd
--- /dev/null
+++ b/docs/1.0.0/modules/about.md
@@ -0,0 +1,310 @@
+---
+layout: detail
+title: About
+description: An about screen should be displayed in all Orange applications to display the application name, software version as well as all legal data protection, privacy, and terms of service compliance information.
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Modules - About](https://system.design.orange.com/0c1af118d/p/39538b-about/b/55a5d2)
+
+## Overview
+
+This module should be added in all applications to display general application information (name, software version, description, privacy policy, terms of service, ...), to offer user actions (Rate the app, send feedbacks, ...), to get informaioon linked to the service (Application recirculation, App news ...).
+
+It is also possible to add to the module some specifc features linked to the service provided by the application (Suppport, How to, settings, ...)
+
+In order to have consistant prsentation of those elemnts in all applications, the __About__ module offers a structured and configrable layout.
+
+![AboutScreen](images/about_screen.png)
+
+
+## About screen layout
+
+The main about screen is divided to three areas.
+
+### Illustration area
+
+The first area (at the top of the screen) allows you to set an image illustrating the about screen linked to the service. If no image is provided the default one is inserted automatically.
+
+### Application information area
+
+The second area is dedicated for the application description with various elements:
+- The name (mandatory)
+- The version (optional)
+- A description in sevral lines (optional)
+
+
+It is also possible to activate two buttons to offer to the user to:
+
+- _share the application_ via email, via sms, via social networks... This button opens the default system share sheet that presents a range of actions to share the application. To activate this button, the developper needs to prvide the url of the application on the store and a short text describing the context of the sharing.
+- _send feedback_ to the support of the service. This button is displayed if the developper provides a callback called when button is clicked. This callback can do what it is expected (send email, send sms, open form, open web site, ...).
+
+
+### List items area
+
+The last area (at the bottom) is a list of items that propose to the user to make actions or navigate to additionnal feetures.
+All items have the same layout (icon and text). They are ordered in the list according to their priority set into the configuration.
+
+#### Mandatory items
+
+Some items are provided with the module. Three of them are mandatory and allways available in the list:
+- Item to present the __Privacy Policy__ (only html content supported today)
+- Item to display __Terms of Service__ (View provided by developper)
+- Item to show the __Accessibility Statement__ of the application (not available yet)
+As those items must be grouped in the list, their priority are fixed and can not be changed.
+
+#### Optionnal items
+
+As most of applications propose the same additonnal features (Rate the app, App News, ...), and in order to have consitency in about screens of all applications, additional items are proposed with the module.
+
+* Rate the app
+
+This item can be added in the list to redirect the user to the app page on the Apple Store to rate the application.
+
+* Apps news
+
+This item enumerates the application versions with small text describing new features available.
+
+* Legal inofrmation
+
+This item is used to display legal infomration. Today, there is not recomandation on the presentation.
+
+#### Custom items
+
+In addition, it is also possible to add into the list some custom items. Like previous ones, they must respect the layout and can set their own priority to be inserted in the right place in the list.
+
+
+## How to configure the module
+
+To display the about screen, initialize the module using the __ODSAboutModule__ stucture. During the initialization, a set of configuration must to be provided.
+
+### Illustration area
+
+If the about page needs to display a specific illustration, set it like this:
+
+```swft
+ODSAboutModule(headerIllustration: Image("AboutImage"), ...)
+```
+
+To keep the default illustration, initialize the module without overriding the `headerIllustration` parameter.
+
+
+### Application section area
+
+To configure the application, fill out the `ODSAboutApplicationInformation` structure and provide it to the module initialization.
+
+- With name only
+
+```swift
+let nameOnly = ODSAboutApplicationInformation(name: "Orange Design System Demo")
+ODSAboutModule(applicationInformation: nameOnly, ...)
+```
+
+- With description
+
+```swift
+let withDescription = ODSAboutApplicationInformation(
+ name: "Orange Design System Demo"
+ description: "In this app you'll find implemented code examples of the guidelines, components and modules, for the themes of the Orange Design System.")
+ODSAboutModule(applicationInformation: withDescription, ...)
+```
+
+- With version
+
+```swift
+let version = ODSApplicationVersion(
+ marketingVersion: Bundle.main.marketingVersion, // Mandatory
+ buildNumber: Bundle.main.buildNumber ?? "", // Optional
+ buildType: Bundle.main.buildType // Optional
+)
+
+let withVersion = ODSAboutApplicationInformation(
+ name: "Orange Design System Demo",
+ version: version
+)
+
+ODSAboutModule(applicationInformation: withVersion, ...)
+```
+
+- To activate the Share the application action
+
+```swift
+ler shareTheApplicationConfiguration = ODSAboutShareTheApplication(
+ storeUrl: URL(string: "http://oran.ge/dsapp")!,
+ subject: "The Orange Design System",
+ description: "Here you will find the Orange Design System Mobile App that provides examples of design implementations"
+)
+
+let withShareTheApp = ODSAboutApplicationInformation(
+ name: "Orange Design System Demo",
+ shareConfiguration: shareTheApplicationConfiguration
+)
+ODSAboutModule(applicationInformation: withShareTheApp, ...)
+```
+
+- To activate the feedback action
+
+```swift
+
+let withFeedback = ODSAboutApplicationInformation(
+ name: "Orange Design System Demo",
+ onFeedbackClicked: {
+ UIApplication.shared.open(URL(string: "https://github.com/Orange-OpenSource/ods-ios/issues/new/choose")!)
+ }
+)
+
+ODSAboutModule(applicationInformation: withFeedback, ...)
+```
+
+### Lits items area
+
+#### Use mandatory items
+
+For the privacy policy display, only HTML content is supported today. A more structured content will be added soon.
+
+- Privacy policy
+
+```swift
+// Initializes the privacy policy page with URL of the HTML file stored in resources.
+let privacyPolicy = ODSPrivacyPolicy.webview(.url(Bundle.main.url(forResource: "PrivacyNotice", withExtension: "html")!))
+```
+
+- The accessibility statement
+
+```swift
+// Defines an item displaying as a title the "conformity status" text, parsing the file named "fileName" and sending user elsewhere for further details
+let accessibilityStatement = ODSAboutAccessibilityStatement(
+ conformityStatus: "Accessibility: partially conform",
+ fileName: "AccessibilityStatement",
+ reportDetail: URL(string: "https://la-va11ydette.orange.com/")!)
+```
+
+- The Terms of service
+
+```swift
+// Today, there is no recomandation how to display the content, so the module provides a view builder
+// to build a native screen or a webview
+
+@ViewBuilder
+private func termsOfService() -> some View {
+ Text("Add terms of service here")
+}
+```
+
+Then initialize the module with those mandatory elements:
+
+```swift
+ODSAboutModule(...,
+ privacyPolicy: privacyPolicy,
+ acessibilityStatement: accessibilityStatement,
+ termsOfService: termOfService
+)
+```
+
+#### Add items to the list
+
+To insert additionnal items into the list, initialize the __listItemConfigurations__ array adding items following the __ODSAboutListItemConfig__ protocol.
+To order the items in the list, initialize the items with the right priority.
+
+```swift
+// Add all items in list
+ODSAboutModule(...,
+ listItemConfigurations: [legalInfoItem, rateTheAppItem, appsNewItem]
+)
+
+// see items description below
+```
+
+#### Use optional items
+
+- Rate the app
+
+To create this item, define the url of the application on the store and the priority (position) of the item in the list:
+
+```swift
+// This item opens the store in the external browser
+let rateTheAppItem = ODSAboutRateTheAppItemConfig(
+ priority: 501,
+ storeUrl: URL(string: "https://www.apple.com/app-store/")!
+)
+```
+
+- Apps news
+
+To create this item, define the path to the json file containing the news. This file is embeded in the resources of the application.
+
+The model of the json file is:
+
+```json
+[
+ {
+ "version": "0.12.0",
+ "date": "2023-04-14",
+ "news": "A short description of news"
+ },
+ ...
+]
+```
+
+This is the code to create the item:
+
+```swift
+// - Display the app News
+let appNewFilePath = Bundle.main.path(forResource: "AppNews", ofType: "json")!
+let appsNewItem = ODSAboutAppNewsItemConfig(
+ priorty: 502,
+ path: appNewFilePath
+)
+```
+
+- Legal information
+
+Still there is not recomandation on the format of the presentation, this item needs a view builder to display the legal information.
+
+```swift
+// Here, the legal information are displayed in a view with a single Text.
+
+let legalInformationItem = ODSAboutLegalInformationItemConfig(priority: 500) {
+ Text("This is Legal information content")
+}
+```
+
+- Apps recirculation
+
+You can also add an item to let people discover other apps of Orange, by using the following item:
+
+```swift
+let appsRecirculation = ODSRecirculationItemConfig(dataSource: yourDataSource)
+```
+
+The __dataSource__ can contain the URL of the backend to get the list of apps, (today the only supported backend is Orange proprietary backend _Apps Plus_) or a local json file. (for more details see the __Recirculation Module__.
+
+#### Create a custom item
+
+To create a custom item and associate a target, follow this example:
+
+```swift
+public struct MyItemToDisplayText: ODSAboutListItemConfig {
+ public private(set) var title: String
+ public private(set) var icon: Image
+ public private(set) var target: ODSAboutListItemTarget
+ public private(set) var priority: ODSAboutListItemPriority
+
+ public init(priority: ODSAboutListItemPriority = 100) {
+ self.priority = priority
+ self.title = "Fake Item"
+ self.icon = Image(systemName: "heart"),
+ self.target = .destination(AnyView(Text("This is the destination screen")))
+ }
+}
+```
+
diff --git a/docs/1.0.0/modules/about_docs.md b/docs/1.0.0/modules/about_docs.md
new file mode 100644
index 00000000..68f62b7e
--- /dev/null
+++ b/docs/1.0.0/modules/about_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: About
+content_page: about.md
+---
+
diff --git a/docs/1.0.0/modules/emptyState.md b/docs/1.0.0/modules/emptyState.md
new file mode 100644
index 00000000..e7061cfe
--- /dev/null
+++ b/docs/1.0.0/modules/emptyState.md
@@ -0,0 +1,52 @@
+---
+layout: detail
+title: Empty states
+description: An empty state can occur when no content or data is available to display in the UI. Avoid displaying completely empty screens.
+---
+
+An empty state display should inform the user of what is happening, why it's happening and what to do about it.
+
+ **On this page**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Empty states](https://system.design.orange.com/0c1af118d/p/177496-empty-states/b/454547)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/).
+
+The ODS Empty states module is built to support accessibility criteria and is readable by most screen readers, such as VoiceOver.
+
+## Integration
+
+![Empty state light](images/empty_state_light.png) ![Empty state dark](images/empty_state_dark.png)
+
+### SwiftUI
+
+To integrate an ODS Empty state into your app, you can use `ODSEmptyStateView` as shown below:
+
+```swift
+ODSEmptyStateView(
+ title: Text("No result"),
+ text: Text("Try a new search"),
+ image: Image("il_emptyStateNoData"),
+ button: Button("Search") {
+ // Do something
+ }
+)
+```
+
+#### ODSEmptyStateView API
+
+| Parameter | Default value | Description |
+|-------------------------------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
+| `title: Text` | | The title of the screen displayed below the image. For example "File is missing". |
+| `text: Text?` | `null` | Text displayed below the title |
+| `image: Image` | `Image("il_emptyStateUserCleared", bundle: Bundle.ods)` | Image displayed centered in the composable |
+| `button: Button?` | `null` | The button to add below the text |
diff --git a/docs/1.0.0/modules/emptyState_docs.md b/docs/1.0.0/modules/emptyState_docs.md
new file mode 100644
index 00000000..15db0e38
--- /dev/null
+++ b/docs/1.0.0/modules/emptyState_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: Empty states
+content_page: emptyState.md
+---
+
diff --git a/docs/1.0.0/modules/images/about_screen.png b/docs/1.0.0/modules/images/about_screen.png
new file mode 100644
index 00000000..ea0628be
Binary files /dev/null and b/docs/1.0.0/modules/images/about_screen.png differ
diff --git a/docs/1.0.0/modules/images/empty_state_dark.png b/docs/1.0.0/modules/images/empty_state_dark.png
new file mode 100644
index 00000000..7fcd8c2a
Binary files /dev/null and b/docs/1.0.0/modules/images/empty_state_dark.png differ
diff --git a/docs/1.0.0/modules/images/empty_state_light.png b/docs/1.0.0/modules/images/empty_state_light.png
new file mode 100644
index 00000000..2208398f
Binary files /dev/null and b/docs/1.0.0/modules/images/empty_state_light.png differ
diff --git a/docs/1.0.0/modules/images/list_grouped_dark.png b/docs/1.0.0/modules/images/list_grouped_dark.png
new file mode 100644
index 00000000..1cd3da2f
Binary files /dev/null and b/docs/1.0.0/modules/images/list_grouped_dark.png differ
diff --git a/docs/1.0.0/modules/images/list_grouped_light.png b/docs/1.0.0/modules/images/list_grouped_light.png
new file mode 100644
index 00000000..0010570d
Binary files /dev/null and b/docs/1.0.0/modules/images/list_grouped_light.png differ
diff --git a/docs/1.0.0/modules/images/list_inset_dark.png b/docs/1.0.0/modules/images/list_inset_dark.png
new file mode 100644
index 00000000..9edc8c7f
Binary files /dev/null and b/docs/1.0.0/modules/images/list_inset_dark.png differ
diff --git a/docs/1.0.0/modules/images/list_inset_grouped_dark.png b/docs/1.0.0/modules/images/list_inset_grouped_dark.png
new file mode 100644
index 00000000..d7b1959a
Binary files /dev/null and b/docs/1.0.0/modules/images/list_inset_grouped_dark.png differ
diff --git a/docs/1.0.0/modules/images/list_inset_grouped_light.png b/docs/1.0.0/modules/images/list_inset_grouped_light.png
new file mode 100644
index 00000000..f5afcd3f
Binary files /dev/null and b/docs/1.0.0/modules/images/list_inset_grouped_light.png differ
diff --git a/docs/1.0.0/modules/images/list_inset_light.png b/docs/1.0.0/modules/images/list_inset_light.png
new file mode 100644
index 00000000..64c9b21e
Binary files /dev/null and b/docs/1.0.0/modules/images/list_inset_light.png differ
diff --git a/docs/1.0.0/modules/images/list_plain_dark.png b/docs/1.0.0/modules/images/list_plain_dark.png
new file mode 100644
index 00000000..9b189afa
Binary files /dev/null and b/docs/1.0.0/modules/images/list_plain_dark.png differ
diff --git a/docs/1.0.0/modules/images/list_plain_light.png b/docs/1.0.0/modules/images/list_plain_light.png
new file mode 100644
index 00000000..de89eb09
Binary files /dev/null and b/docs/1.0.0/modules/images/list_plain_light.png differ
diff --git a/docs/1.0.0/modules/images/list_sidebar_dark.png b/docs/1.0.0/modules/images/list_sidebar_dark.png
new file mode 100644
index 00000000..12b22797
Binary files /dev/null and b/docs/1.0.0/modules/images/list_sidebar_dark.png differ
diff --git a/docs/1.0.0/modules/images/list_sidebar_light.png b/docs/1.0.0/modules/images/list_sidebar_light.png
new file mode 100644
index 00000000..5ba12f6b
Binary files /dev/null and b/docs/1.0.0/modules/images/list_sidebar_light.png differ
diff --git a/docs/1.0.0/modules/list.md b/docs/1.0.0/modules/list.md
new file mode 100644
index 00000000..d2fa73b9
--- /dev/null
+++ b/docs/1.0.0/modules/list.md
@@ -0,0 +1,194 @@
+---
+layout: detail
+title: List
+description: Lists are continuous, vertical indexes of text or images.
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Lists](https://system.design.orange.com/0c1af118d/p/09a804-lists/b/669743)
+- [Apple guideline - Lists and tables](https://developer.apple.com/design/human-interface-guidelines/components/layout-and-organization/lists-and-tables)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## List styles
+
+List propose the `.listStyle(_:)` modifier to change the style. For ios SwiftUI propose 6 types of style:
+- automatic
+- insetGrouped
+- grouped
+- inset
+- plain
+- sidebar
+
+The folowing code is used for all styles. The only difference is the list style specified in the `.listStyle(_:)` modifier.
+
+```swift
+NavigationStack {
+ List {
+ // Section for recipes contain selected ingredients
+ Section {
+ ODSListItem(
+ title: Text("Summer Salad"),
+ subtitle: Text("21 mn"),
+ leading: .circularImage(source: .image(Image("summerSalad")))
+ )
+ ODSListItem(
+ title: Text("Salmon cury"),
+ subtitle: Text("31 mn"),
+ leading: .circularImage(source: .image(Image("salmonCury")))
+ )
+ ODSListItem(
+ title: Text("Feta Pizza"),
+ subtitle: Text("21 mn"),
+ leading: .circularImage(source: .image(Image("fetaPizza")))
+ )
+ } header: {
+ Text("Recipes")
+ } footer: {
+ Text("A set of recipes made with selected ingredients")
+ }
+
+ // A set of ingredients
+ Section("Ingredients") {
+ ODSListItem(title: Text("tomato"), leading: .circularImage(source: .image(Image("tomato"))))
+ ODSListItem(title: Text("avocado"), leading: .circularImage(source: .image(Image("avocado"))))
+ }
+ }
+ .navigationTitle("List Style")
+ .listStyle(.automatic)
+}
+```
+
+### Automatic style
+
+As mentioned earlier, SwiftUI will use Inset Grouped style when setting automatic (.automatic) or DefaultListStyle on iOS
+
+### Inset Grouped style
+
+Example of Inset Grouped .insetGrouped or InsetGroupedListStyle.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.insetGrouped)
+```
+
+![InsetGroupedLight](images/list_inset_grouped_light.png)
+![InsetGroupedDark](images/list_inset_grouped_dark.png)
+
+### Grouped style
+
+Example of Grouped .grouped or GroupedListStyle.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.grouped)
+```
+
+![GroupedLight](images/list_grouped_light.png)
+![GroupedDark](images/list_grouped_dark.png)
+
+### Inset style
+
+Example of Inset .inset or InsetListStyle.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.inset)
+```
+
+![InsetLight](images/list_inset_light.png)
+![InsetDark](images/list_inset_dark.png)
+
+
+### Plain style
+
+Example of Plain .plain or PlainListStyle.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.plain)
+```
+![PlainLight](images/list_plain_light.png)
+![PlainDark](images/list_plain_dark.png)
+
+### Sidebar style
+
+The sidebar list style displays disclosure indicators in the section headers that allow the user to collapse and expand sections.
+
+Tap on disclosure indicators in the section headers will collapse and expand that section.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.sidebar)
+```
+
+![SideBarLight](images/list_sidebar_light.png)
+![SideBarDark](images/list_sidebar_dark.png)
+
+
+* For iOS 17, a new API is proposed to manage the expandable state.
+
+```swift
+@State var isExpanded = true
+
+List {
+ Section(isExpanded: $isExpanded) {
+ // ...
+ } header: {
+ Text("Recipes")
+ }
+}
+.listStyle(.sidebar)
+```
+
+When you create your Section with `isExpanded`, the chevron will appear as long as the list style is `.sidebar`.
+
+* On previous iOS versions, this interface is not available, so to do the same you can use following code:
+
+```swift
+@State var isExpanded = true
+
+List {
+ Section {
+ if isExpanded {
+ // The content
+ }
+ } header: {
+ HStack {
+ Text("Recipes") // The header
+
+ Spacer()
+ Image(systemName: "chevron.down")
+ .rotationEffect(isExpanded ? .zero : .degrees(-90))
+ .onTapGesture {
+ withAnimation {
+ isExpanded.toggle()
+ }
+ }
+ }
+ }
+}
+.listStyle(.sidebar)
+```
+
diff --git a/docs/1.0.0/modules/list_docs.md b/docs/1.0.0/modules/list_docs.md
new file mode 100644
index 00000000..52f13ec1
--- /dev/null
+++ b/docs/1.0.0/modules/list_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: List
+content_page: list.md
+---
+
diff --git a/docs/modules/recirculation.md b/docs/1.0.0/modules/recirculation.md
similarity index 100%
rename from docs/modules/recirculation.md
rename to docs/1.0.0/modules/recirculation.md
diff --git a/docs/modules/recirculation_docs.md b/docs/1.0.0/modules/recirculation_docs.md
similarity index 100%
rename from docs/modules/recirculation_docs.md
rename to docs/1.0.0/modules/recirculation_docs.md
diff --git a/docs/1.1.0/about/Cookies.md b/docs/1.1.0/about/Cookies.md
new file mode 100644
index 00000000..bbeca85f
--- /dev/null
+++ b/docs/1.1.0/about/Cookies.md
@@ -0,0 +1,7 @@
+---
+layout: detail
+title: "Cookies"
+description: Manage cookies preferences.
+---
+
+At any time, you can manage your cookies preferences for this website from the cookies management panel.
diff --git a/docs/1.1.0/about/Cookies_docs.md b/docs/1.1.0/about/Cookies_docs.md
new file mode 100644
index 00000000..15499adc
--- /dev/null
+++ b/docs/1.1.0/about/Cookies_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Cookies
+content_page: Cookies.md
+---
diff --git a/docs/1.1.0/about/License.md b/docs/1.1.0/about/License.md
new file mode 100644
index 00000000..8eb48c99
--- /dev/null
+++ b/docs/1.1.0/about/License.md
@@ -0,0 +1,35 @@
+---
+layout: detail
+title: License
+description: Commonly asked questions about ODS iOS open source license.
+---
+
+## ODS iOS license
+
+ODS iOS is released under the MIT license and is copyright Orange SA, which is released under MIT license.
+
+## It requires you to:
+
+- Keep the license and copyright notice included in ODS iOS Swift files when you use them in your works
+
+## It permits you to:
+
+- Freely download and use ODS iOS, in whole or in part, for personal, private, company internal, or commercial purposes
+- Use ODS iOS in packages or distributions that you create
+- Modify the source code
+- Grant a sublicense to modify and distribute ODS iOS to third parties not included in the license
+
+## It forbids you to:
+
+- Hold the authors and license owners liable for damages as ODS iOS is provided without warranty
+- Hold the creators or copyright holders of ODS iOS liable
+- Redistribute any piece of ODS iOS without proper attribution
+- Use any marks owned by Orange SA in any way that might state or imply that Orange SA endorses your distribution
+- Use any marks owned by Orange SA in any way that might state or imply that you created the Orange SA software in question
+
+## It does not require you to:
+
+- Include the source of ODS iOS itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it
+- Submit changes that you make to ODS iOS back to its project (though such feedback is encouraged)
+
+For more information, the full ODS iOS license is located [in the project repository](https://github.com/Orange-OpenSource/ods-ios/blob/main/LICENSE).
diff --git a/docs/1.1.0/about/License_docs.md b/docs/1.1.0/about/License_docs.md
new file mode 100644
index 00000000..18b9fd1f
--- /dev/null
+++ b/docs/1.1.0/about/License_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: License
+content_page: License.md
+---
diff --git a/docs/1.1.0/about/Team.md b/docs/1.1.0/about/Team.md
new file mode 100644
index 00000000..71245c47
--- /dev/null
+++ b/docs/1.1.0/about/Team.md
@@ -0,0 +1,22 @@
+---
+layout: detail
+title: Team
+description: An overview of the founding team and core contributors to ODS iOS.
+---
+
+ODS iOS is maintained by the core team and a small group of invaluable core contributors, with the support and involvement of our community.
+
+{% if site.data.team.ODS_iOS[0] %}
+
+{% endif %}
+
+Get involved with ODS iOS development by [opening an issue](https://github.com/Orange-OpenSource/ods-ios/issues/new/choose) or submitting a pull request. Read our [contributing guidelines](https://github.com/Orange-OpenSource/ods-ios/blob/main/CONTRIBUTING.md) for information on how we develop.
diff --git a/docs/1.1.0/about/Team_docs.md b/docs/1.1.0/about/Team_docs.md
new file mode 100644
index 00000000..92cde2e9
--- /dev/null
+++ b/docs/1.1.0/about/Team_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Team
+content_page: Team.md
+---
diff --git a/docs/1.1.0/components/banners.md b/docs/1.1.0/components/banners.md
new file mode 100644
index 00000000..35bd9176
--- /dev/null
+++ b/docs/1.1.0/components/banners.md
@@ -0,0 +1,103 @@
+---
+layout: detail
+title: Banners
+description: A banner displays an important message which requires an action to be dismissed.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+A banner displays an important, succinct message, and provides actions for users to address (or dismiss the banner). It requires a user action to be dismissed.
+
+Banners should be displayed at the top of the screen, below a top app bar. They’re persistent and nonmodal, allowing the user to either ignore them or interact with them at any time. Only one banner should be shown at a time
+
+![Banner light](images/banner-light.png)
+![Banner dark](images/banner-dark.png)
+
+## Specifications references
+
+- [Design System Manager - Banners](https://system.design.orange.com/0c1af118d/p/85a52b-components/b/1497a4)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+### No button
+
+```swift
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)))
+```
+
+### One button
+
+The button is placed under the text.
+
+```swift
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods))) {
+ Button("Button") {
+ // your action here
+ }
+}
+```
+
+### Two buttons
+
+Button are placed under the text.
+
+```swift
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods))) {
+ Button("Button 1") {
+ // your action here
+ }
+} secondButton: {
+ Button("Button 1") {
+ // your action here
+ }
+}
+```
+
+### Without image
+
+```swift
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.") {
+ Button("Button 1") {
+ // your action here
+ }
+} secondButton: {
+ Button("Button 1") {
+ // your action here
+ }
+}
+```
+
+### With image from url
+
+```swift
+
+let placeholder = Image("placeholder", bundle: Bundle.ods)
+let url = URL(string: "https://images.unsplash.com/photo-1615735487485-e52b9af610c1?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=774&q=80")
+
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.",
+ imageSource: .asyncImage(url, placeholder)) {
+ Button("Button 1") {
+ // your action here
+ }
+} secondButton: {
+ Button("Button 1") {
+ // your action here
+ }
+}
+```
+
+
diff --git a/docs/1.1.0/components/banners_docs.md b/docs/1.1.0/components/banners_docs.md
new file mode 100644
index 00000000..9d720197
--- /dev/null
+++ b/docs/1.1.0/components/banners_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Banners
+content_page: banners.md
+---
diff --git a/docs/1.1.0/components/barsNavigation.md b/docs/1.1.0/components/barsNavigation.md
new file mode 100644
index 00000000..79ae42da
--- /dev/null
+++ b/docs/1.1.0/components/barsNavigation.md
@@ -0,0 +1,104 @@
+---
+layout: detail
+title: Bars - navigation
+description: Navigation bar with Orange branding
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Bars: navigation](https://system.design.orange.com/0c1af118d/p/34094d-bars-navigation/b/419eb1)
+- [Apple guideline - Navigation bars](https://developer.apple.com/design/human-interface-guidelines/components/navigation-and-search/navigation-bars/)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Standard navigation bar
+
+![Navigation bar standard light](images/bars_navigation_standard_light.png)
+![Navigation bar standard dark](images/bars_navigation_standard_dark.png)
+
+When using a navigation view, basic navigation is using 'inline' display mode by default.
+
+```swift
+NavigationView {
+ NavigationLink(destination: Text("destination")) {
+ Text("Main view")
+ }
+ .navigationBarTitle("Standard", displayMode: .inline)
+}
+
+```
+
+## Navigation bar with large title
+
+![Navigation bar large light](images/bars_navigation_large_light.png)
+![Navigation bar large dark](images/bars_navigation_large_dark.png)
+
+Use 'large' display mode to enable large titles when scrolling up.
+
+```swift
+NavigationView {
+ NavigationLink(destination: Text("destination")) {
+ Text("Main view")
+ }
+ .navigationBarTitle("Standard", displayMode: .large)
+}
+
+```
+
+## Navigation bar with search bar
+
+![Navigation bar search light](images/bars_navigation_search_light.png)
+![Navigation bar search dark](images/bars_navigation_search_dark.png)
+
+
+Use .searchable modifier to add a search bar in the navigation view.
+
+```swift
+@State var searchQuery = ""
+
+NavigationView {
+ NavigationLink(destination: Text("destination")) {
+ Text("Main view")
+ }
+ .navigationBarTitle("With search bar", displayMode: .inline)
+ .searchable(text: $searchQuery, placement: .navigationBarDrawer(displayMode: .always))
+}
+
+```
+
+## Navigation bar with action item
+
+![Navigation bar items light](images/bars_navigation_items_light.png)
+![Navigation bar items dark](images/bars_navigation_items_dark.png)
+
+You can add one or several buttons (trailing or leading) in the navigation view by using .toolbar modifier
+
+```swift
+NavigationView {
+ NavigationLink(destination: Text("destination")) {
+ Text("Main view")
+ }
+ .navigationBarTitle("Standard", displayMode: .inline)
+ .toolbar {
+ ToolbarItem(placement: .navigationBarTrailing) {
+ Button {
+ print("item action")
+ } label: {
+ Image(systemName: "ant.circle")
+ }
+ }
+ }
+}
+
+```
diff --git a/docs/1.1.0/components/barsNavigation_docs.md b/docs/1.1.0/components/barsNavigation_docs.md
new file mode 100644
index 00000000..11493173
--- /dev/null
+++ b/docs/1.1.0/components/barsNavigation_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Bars - navigation
+content_page: barsNavigation.md
+---
diff --git a/docs/1.1.0/components/barsTab.md b/docs/1.1.0/components/barsTab.md
new file mode 100644
index 00000000..2b95ab3c
--- /dev/null
+++ b/docs/1.1.0/components/barsTab.md
@@ -0,0 +1,57 @@
+---
+layout: detail
+title: Bars - tab
+description: Tab bars with Orange branding
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Bars: tab](https://system.design.orange.com/0c1af118d/p/08dab8-bars-tab/b/778ed0)
+- [Apple guideline - Tab bars](https://developer.apple.com/design/human-interface-guidelines/components/navigation-and-search/tab-bars/)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Standard tab bar
+
+![Tab bar light](images/bars_tab_light.png)
+![Tab bar dark](images/bars_tab_dark.png)
+
+Tab bar is a standard iOS component. It uses bar items to navigate between views.
+Bar Item contains an icon and a title.
+An additonal badge can be also added with a count value or a text.
+
+Example with 4 bar items :
+
+```swift
+TabView {
+ GuidelinesList()
+ .tabItem {
+ Label("Guidelines", image: "Guideline-DNA_32")
+ }
+ .badge("Text")
+ ComponentsList()
+ .tabItem {
+ Label("Components", image: "component-atom_32")
+ }
+ ModulesList()
+ .tabItem {
+ Label("Modules", image: "Module-molecule_32")
+ }
+ .badge(10)
+ ODSDemoAboutView()
+ .tabItem {
+ Label("About", image: "info_32")
+ }
+}
+```
diff --git a/docs/1.1.0/components/barsTab_docs.md b/docs/1.1.0/components/barsTab_docs.md
new file mode 100644
index 00000000..55febdc2
--- /dev/null
+++ b/docs/1.1.0/components/barsTab_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Bars - tab
+content_page: barsTab.md
+---
diff --git a/docs/1.1.0/components/barsTool.md b/docs/1.1.0/components/barsTool.md
new file mode 100644
index 00000000..a229245f
--- /dev/null
+++ b/docs/1.1.0/components/barsTool.md
@@ -0,0 +1,112 @@
+---
+layout: detail
+title: Bars - tool
+description: Tool bars with Orange branding
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Bars: tool](https://system.design.orange.com/0c1af118d/p/06c413-bars-tool/b/951e5c)
+- [Apple guideline - Tool bars](https://developer.apple.com/design/human-interface-guidelines/ios/bars/toolbars/)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+A tool bar allows users to do specific actions regarding the entire page. It is placed at the bottom of the screen. It can display 2 to 5 icon controls or 2 to 3 label entries.
+
+### With label items
+
+![tool bar labels light](images/bars_tool_labels_light.png) ![tool bar labels dark](images/bars_tool_labels_dark.png)
+
+A tool bar can display 2 to 3 label entries.
+
+Example with 3 label entries in toolBar :
+
+```swift
+
+let description1 = ODSToolbarLabelDesription(text: "Action 1") { }
+let description2 = ODSToolbarLabelDesription(text: "Action 2") { }
+let description3 = ODSToolbarLabelDesription(text: "Action 3") { }
+
+let labelItems = ODSToolbarLabeledItems(description1: description1,
+ description2: description2,
+ description3: description3)
+NavigationView {
+ ContentView()
+ .navigationBarTitle("", displayMode: .inline)
+ .navigationBarHidden(true)
+ .odsToolBar(items: labelItems)
+}
+
+// To remove navigation bar, use following modifiers
+// .navigationBarHidden(true)
+
+```
+
+### With icon items
+
+![tool bar icons light](images/bars_tool_icons_light.png) ![tool bar icons dark](images/bars_tool_icons_dark.png)
+
+A tool bar can display 2 to 5 icon controls
+```swift
+
+let description1 = ODSToolbarIconDesription(systemName: "plus") { }
+let description2 = ODSToolbarIconDesription(systemName: "square.and.arrow.up") { }
+let description3 = ODSToolbarIconDesription(systemName: "square.and.pencil") { }
+let description4 = ODSToolbarIconDesription(systemName: "folder") { }
+let description5 = ODSToolbarIconDesription(systemName: "trash") { }
+
+let iconItems = ODSToolbarIconsItems(description1: description1,
+ description2: description2,
+ description3: description3,
+ description4: description4,
+ description5: description5)
+NavigationView {
+ ContentView()
+ .navigationBarTitle("", displayMode: .inline)
+ .navigationBarHidden(true)
+ .odsToolBar(items: iconItems)
+}
+
+// To remove navigation bar, use following modifiers
+// .navigationBarHidden(true)
+
+```
+
+## Remarks
+
+As toolbar colors depends on theme, don't forget to add it to enviroment and call the view modifier __.toolBarColors(for:)__ to apply colors provided by the theme.
+
+Two solutions:
+
+- Directy on the root view
+
+```swift
+let theme = YourTheme()
+
+ContentViewWithToolBar()
+.environment(\.theme, theme)
+.toolBarColors(for: theme)
+```
+
+- Or using __ODSThemeableView__ view as a root view:
+
+```swift
+let theme = YourTheme()
+
+ODSThemeableView(theme: yourTheme) {
+ ContentViewWithToolBar()
+}
+```
diff --git a/docs/1.1.0/components/barsTool_docs.md b/docs/1.1.0/components/barsTool_docs.md
new file mode 100644
index 00000000..a20e98aa
--- /dev/null
+++ b/docs/1.1.0/components/barsTool_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Bars - tool
+content_page: barsTool.md
+---
diff --git a/docs/1.1.0/components/buttons.md b/docs/1.1.0/components/buttons.md
new file mode 100644
index 00000000..86013d1f
--- /dev/null
+++ b/docs/1.1.0/components/buttons.md
@@ -0,0 +1,131 @@
+---
+layout: detail
+title: Buttons
+description: A button allows a user to perform an action or to navigate to another page. It contains a text label and a supporting icon can be displayed.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Buttons](https://system.design.orange.com/0c1af118d/p/278734-buttons-shape/b/536b5f)
+- [Apple guideline - Buttons](https://developer.apple.com/design/human-interface-guidelines/components/menus-and-actions/buttons)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+### Emphasis button
+
+Button variants range in style to denote emphasis. Use different styles and not size to show the preferred choice.
+
+- **Layout**
+
+**Large**
+
+![Buttons high emphasis disabled](images/buttons_layout_large_with_icon.png)
+
+![Buttons high emphasis](images/buttons_layout_large_without_icon.png)
+
+**Small**
+
+![Buttons high emphasis disabled](images/buttons_layout_small_with_icon.png)
+
+![Buttons high emphasis](images/buttons_layout_small_without_icon.png)
+
+
+- **Emphasis**
+
+**High emphasis**
+
+![Buttons high emphasis disabled](images/buttons_functionnal_disabled.png)
+![Buttons high emphasis](images/buttons_emphasis_high.png)
+
+**Medium**
+
+![Buttons medium emphasis disabled](images/buttons_functionnal_disabled.png)
+![Buttons medium emphasis](images/buttons_emphasis_medium.png)
+
+**Low emphasis**
+
+![Buttons low emphasis disabled](images/buttons_functionnal_disabled.png)
+![Buttons low emphasis](images/buttons_emphasis_low.png)
+
+**Lowest emphasis**
+
+![Buttons lowest emphasis disabled](images/buttons_emphasis_lowest_disabled.png)
+![Buttons lowest emphasis](images/buttons_emphasis_lowest.png)
+
+- **Implementation**
+
+```swift
+// High emphasis
+ODSButton(text: Text("Some text"),
+ image: Image("Add"),
+ emphasis: .high) {}
+
+// Lowest emphasis
+ODSButton(text: Text("Some text"),
+ image: Image("Add"),
+ emphasis: .lowest) {}
+```
+
+### Functional button
+
+If required, colour versions can also be used to inform users of positive or negative destructive actions.
+
+**Positive**
+
+![Buttons functional positive disabled](images/buttons_functionnal_disabled.png)
+![Buttons functional positive](images/buttons_functional_positive.png)
+
+**Negative**
+
+![Buttons functional negative disabled](images/buttons_functionnal_disabled.png)
+![Buttons functional negative](images/buttons_functional_negative.png)
+
+```swift
+ // Negative button
+ ODSFunctionalButton(text: Text("Some text"), style: .negative)
+ { /* action: Do something */ }
+
+ ODSFunctionalButton(text: Text("Some text"), image: Image("Add"), style: .negative)
+ { /* action: Do something */ }
+
+ // Positive button
+ ODSFunctionalButton(text: Text("Some text") style: .positive)
+ { /* action: Do something */ }
+
+ ODSFunctionalButton(text: Text("Some text"), image: Image("Add"), style: .positive)
+ { /* action: Do something */ }
+
+ // To disable the button
+ ODSFunctionalButton(text: Text("Some text"), style: .positive) { /* action: Do something */ }
+ .disabled(true)
+```
+
+### Icon button
+
+Plain buttons are the most ubiquitous component found throughout applications. Consisting an icon, they are the most simple button style.
+
+![Buttons icon](images/buttons_icon.png)
+
+```swift
+// icon with system asset
+ODSIconButton(image: Image(systemName: "info.circle")) {}
+
+// icon with Solaris asset
+ODSIconButton(image: Image("Add")) {}
+```
+
+
+
diff --git a/docs/1.1.0/components/buttons_docs.md b/docs/1.1.0/components/buttons_docs.md
new file mode 100644
index 00000000..085cbe10
--- /dev/null
+++ b/docs/1.1.0/components/buttons_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Buttons
+content_page: buttons.md
+---
diff --git a/docs/1.1.0/components/cards.md b/docs/1.1.0/components/cards.md
new file mode 100644
index 00000000..633a1e92
--- /dev/null
+++ b/docs/1.1.0/components/cards.md
@@ -0,0 +1,209 @@
+---
+layout: detail
+title: Cards
+description: Cards contain content and actions about a single subject.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Cards](https://system.design.orange.com/0c1af118d/p/66bac5-cards/b/1591fb)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+Images in cards are considered as decorative, so they are ignored by Voice Over.
+
+## Variants
+
+Cards are a contained and independent element that can display content and actions on a single topic.
+
+There are a few ways cards can be presented. Ranging from a single title on its own for a simple card view or with more information shown in a subtitle and supporting text and actions at the bottom of the card.
+
+
+### Vertical Image First Card
+
+This is a full width card displayed with an image as first element.
+
+This card is composed of two parts:
+- Media: (today an image)
+- Content: with a title, an optional subtitle an optional supporting text and optional buttons (zero up to two)
+
+![Vertical image first card light](images/card_vertical_image_first_light.png) ![Vertical image first card dark](images/card_vertical_image_first_dark.png)
+
+> **Implementation**
+
+Card is configured like this:
+
+```swift
+ODSCardVerticalImageFirst(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: Text("Subtitle"),
+ text: Text("A supporting text to describe something")
+) {
+ Button("Button 1") {
+ // do something here
+ }
+} secondButton: {
+ Button("Button 2") {
+ // do something here
+ }
+}
+```
+
+### Vertical Header First Card
+
+This is a full width card displaying with a title and a thumbnail on top as first element.
+
+This card is composed of three parts:
+- Header: with a title, an optional subtitle and an optional thmubnail
+- Media: (today an image)
+- Content: with an optional supporting text and optional buttons (zero up to two)
+
+![Vertical header first card light](images/card_vertical_header_first_light.png) ![Vertical header first card dark](images/card_vertical_header_first_dark.png)
+
+> **Implementation**
+
+Card is configured like this:
+
+```swift
+
+ODSCardVerticalHeaderFirst(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: Text("Subtitle"),
+ thumbnailSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ text: Text("A supporting text to describe something")
+) {
+ Button("Button 1") {
+ // do something here
+ }
+} secondButton: {
+ Button("Button 2") {
+ // do something here
+ }
+}
+```
+
+### Horizontal Card
+
+This is a full width card displaying with image on left and content with texts on the right. Additonal action buttons can be added at the bottom of the card.
+
+Thes content is composed by:
+- a title
+- an optional subtitle
+- an optional text for larger description
+
+![Horizontal card light](images/card_horizontal_light.png) ![Horizontal card dark](images/card_horizontal_dark.png)
+
+> **Implementation**
+
+Card is configured like this:
+
+```swift
+ODSCardHorizontal(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ imagePosition: .leading,
+ subtitle: Text("Subtitle"),
+ text: Text("A supporting text to describe something")
+) {
+
+ Button("Button 1") {
+ // do something here
+ }
+} secondButton : {
+ Button("Button 1") {
+ // do something here
+ }
+}
+```
+
+### Small Card
+
+The small card if prefered for two-column portrait mobile screen display.
+As it is smaller than full-width cards, it contains only title and subtitle (optional) in one line (Truncated tail).
+
+![Small card light](images/card_small_light.png) ![Small card dark](images/card_small_dark.png)
+
+> **Implementation**
+
+Card is configured like this:
+
+```swift
+ODSCardSmall(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: Text("Subtitle")
+)
+```
+
+How to add Small Card in Grid
+
+```swift
+class Model {
+ let title: String
+ let subtitle: String?
+ let imageSource: ODSImage.Source
+
+ init(title: String, imageSource: ODSImage.Source, subtitle: String? = nil) {
+ self.title = title
+ self.imageSource = imageSource
+ self.subtitle = subtitle
+ }
+}
+
+
+let models = [
+ Model(
+ title: "Title 1",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: "Subtitle 1"
+ )
+ Model(
+ title: "Title 2",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: "Subtitle 2"
+ )
+ //...
+]
+
+/// /!\ Don't forget to put the grid into a scrollview
+ScrollView {
+ LazyVGrid(columns: columns, spacing: ODSSpacing.none) {
+ ForEach(models, id:\.title) { model in
+ ODSCardSmall(
+ title: Text(model.title),
+ imageSource: model.imageSource,
+ subtitle: Text(model.subtitle)
+ )
+ }
+ }
+ .padding(.all, ODSSpacing.m)
+}
+
+```
+
+However for accessibility edge cases, like when text sizes are accessibility sizes, the behaviour is different for such components. They won't be displayed in one truncated line because the text will be too truncated and difficult to read.
+If this choice is too impacting for your UI, it is possible to define the limit number of lines to use if a11y size are used
+
+```swift
+ODSCardSmall(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: Text("Subtitle"),
+ // Here 3 is the number of lines you want for such edge cases
+ titleAccessibleLineLimit: 3,
+ subtitleAccessibleLineLimit: 3
+)
+```
diff --git a/docs/1.1.0/components/cards_docs.md b/docs/1.1.0/components/cards_docs.md
new file mode 100644
index 00000000..193969dd
--- /dev/null
+++ b/docs/1.1.0/components/cards_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Cards
+content_page: cards.md
+---
diff --git a/docs/1.1.0/components/chips.md b/docs/1.1.0/components/chips.md
new file mode 100644
index 00000000..264df252
--- /dev/null
+++ b/docs/1.1.0/components/chips.md
@@ -0,0 +1,162 @@
+---
+layout: detail
+title: Chips
+description: Chips are compact elements that represent an input, attribute, or action.
+---
+
+---
+
+**Page summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager](https://system.design.orange.com/0c1af118d/p/85a52b-components/b/1497a4)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+Chips support dynamic types for accessibility.
+
+Chips support content labeling for accessibility and are readable by most screen readers. Text rendered in chips is automatically provided to accessibility services. Additional content labels are usually unnecessary.
+
+## Variants
+
+### Action chip
+
+Action chips offer actions related to primary content. They should appear dynamically and contextually in a UI.
+An alternative to action chips are buttons, which should appear persistently and consistently.
+
+![Light action chip](images/chips_action_light.png)
+![Dark action chip](images/chips_action_dark.png)
+
+``` swift
+ODSActionChip(
+ text: Text("chip text"),
+ Image(systemname: "heart")
+ action: { doSomething() }
+)
+```
+
+To disable the chip call the `.disabled` on View.
+
+### Input chip
+
+Input chips represent a complex piece of information in compact form, such as an entity (person, place, or thing) or text. They enable user input and verify that input by converting text into chips.
+
+![Light input chip](images/chips_input_light.png)
+![Dark input chip](images/chips_input_dark.png)
+
+``` swift
+// Input chip with leading filled with icon or image for resources
+
+ODSInputChip(
+ text: Text(vhip text),
+ leadingAvatar: .image(Image("Avatar")),
+ action: { doSomething() },
+ removeAction: { doSomething() }
+)
+```
+
+### Choice chip
+
+Choice chips allow selection of a single chip from a set of options. Choice chips clearly delineate and display options in a compact area.
+
+**Note: To display a set of choice chips please see ODSChoiceChipsPicker**
+
+![Light input chip](images/chips_choice_light.png)
+![Dark input chip](images/chips_choice_dark.png)
+
+``` swift
+enum Ingredient: String, CaseIterable {
+ case chocolate, vanilla, strawberry
+}
+
+ODSChoiceChipView(
+ chip: ODSChoiceChip(text: Text("Chocolate"), value: .chocolate),
+ selected: false:
+ action: { doSomething() }
+)
+ODSChoiceChipView(
+ chip: ODSChoiceChip(text: Text("Vanilla"), value: .vanilla),
+ selected: true:
+ action: { doSomething() }
+)
+```
+
+In order to display a set of choice chips you can follow this example:
+
+``` swift
+@State var selection: Ingredient
+
+var body: some View {
+ ScrollView(.horizontal) {
+ ForEach(Ingredient.allCases, id: \.rawValue) { ingredient in
+ ODSChoiceChipView(
+ model: ODSChoiceChip(text: Text(ingredient.rawValue), value: ingredient),
+ selected: selection == ingredient,
+ action: { selection = ingredient }
+ )
+ }
+ }
+}
+```
+
+To simplify the chips placement and alignment, you can also use the __ODSChoiceChipsPicker__ like this:
+
+``` swift
+@State var selection: Ingredient
+
+ODSChoiceChipPicker(
+ title: Text("Select your ingredient"),
+ chips: Ingredient.allCases.map { ODSChoiceChip(text: Text($0.rawValue), value: $0)
+ selection: $selection,
+ placement: .carousel
+)
+```
+
+### Filter chip
+
+Filter chips use tags or descriptive words to filter content. Filter chips allow selection of a set of chips from a set of options. Its usage is usefull to apply a filtering on a list of elmeents.
+
+**Note: To display a set of filter chips please see ODSFilterChipsPicker**
+
+![Light filter chips](images/chips_filter_light.png) ![Dark filter chips](images/chips_filter_dark.png)
+
+![Light filter chips with avatar](images/chips_filter_avatar_light.png) ![Dark filter chips with avatar](images/chips_filter_avatar_dark.png)
+
+
+``` swift
+enum Ingredient: String, CaseIterable {
+ case chocolate, vanilla, strawberry
+
+ var image: Image {
+ Image("self.rawValue")
+ }
+}
+
+ODSFilterChipView(
+ chip: ODSFilterChip(text: Text("Chocolate"), leading: .image(Image("avatar")), value: .chocolate),
+ selected: false:
+ action: { doSomething() }
+)
+```
+
+As the choice chip, to simplify the chips placement and alignment, you can also use the __ODSFilterChipsPicker__ like this:
+
+``` swift
+@State var selection: [Ingredient]
+
+ODSFilterChipPicker(
+ title: Text("Select your ingredients"),
+ chips: Ingredient.allCases.map { ODSFilterChip(text: Text($0.rawValue), leading(.image($0.image)), value: $0)
+ selection: $selection,
+ placement: .carousel
+)
+```
+
diff --git a/docs/1.1.0/components/chips_docs.md b/docs/1.1.0/components/chips_docs.md
new file mode 100644
index 00000000..51287dad
--- /dev/null
+++ b/docs/1.1.0/components/chips_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Chips
+content_page: chips.md
+---
diff --git a/docs/1.1.0/components/images/activity_indicator.png b/docs/1.1.0/components/images/activity_indicator.png
new file mode 100644
index 00000000..5567e614
Binary files /dev/null and b/docs/1.1.0/components/images/activity_indicator.png differ
diff --git a/docs/1.1.0/components/images/banner-dark.png b/docs/1.1.0/components/images/banner-dark.png
new file mode 100644
index 00000000..769144eb
Binary files /dev/null and b/docs/1.1.0/components/images/banner-dark.png differ
diff --git a/docs/1.1.0/components/images/banner-light.png b/docs/1.1.0/components/images/banner-light.png
new file mode 100644
index 00000000..ec84c11f
Binary files /dev/null and b/docs/1.1.0/components/images/banner-light.png differ
diff --git a/docs/1.1.0/components/images/bars_navigation_items_dark.png b/docs/1.1.0/components/images/bars_navigation_items_dark.png
new file mode 100644
index 00000000..e7124a46
Binary files /dev/null and b/docs/1.1.0/components/images/bars_navigation_items_dark.png differ
diff --git a/docs/1.1.0/components/images/bars_navigation_items_light.png b/docs/1.1.0/components/images/bars_navigation_items_light.png
new file mode 100644
index 00000000..8cc70e0d
Binary files /dev/null and b/docs/1.1.0/components/images/bars_navigation_items_light.png differ
diff --git a/docs/1.1.0/components/images/bars_navigation_large_dark.png b/docs/1.1.0/components/images/bars_navigation_large_dark.png
new file mode 100644
index 00000000..97e823e5
Binary files /dev/null and b/docs/1.1.0/components/images/bars_navigation_large_dark.png differ
diff --git a/docs/1.1.0/components/images/bars_navigation_large_light.png b/docs/1.1.0/components/images/bars_navigation_large_light.png
new file mode 100644
index 00000000..320fcae0
Binary files /dev/null and b/docs/1.1.0/components/images/bars_navigation_large_light.png differ
diff --git a/docs/1.1.0/components/images/bars_navigation_search_dark.png b/docs/1.1.0/components/images/bars_navigation_search_dark.png
new file mode 100644
index 00000000..b5c851e4
Binary files /dev/null and b/docs/1.1.0/components/images/bars_navigation_search_dark.png differ
diff --git a/docs/1.1.0/components/images/bars_navigation_search_light.png b/docs/1.1.0/components/images/bars_navigation_search_light.png
new file mode 100644
index 00000000..915a2029
Binary files /dev/null and b/docs/1.1.0/components/images/bars_navigation_search_light.png differ
diff --git a/docs/1.1.0/components/images/bars_navigation_standard_dark.png b/docs/1.1.0/components/images/bars_navigation_standard_dark.png
new file mode 100644
index 00000000..d20b5a7a
Binary files /dev/null and b/docs/1.1.0/components/images/bars_navigation_standard_dark.png differ
diff --git a/docs/1.1.0/components/images/bars_navigation_standard_light.png b/docs/1.1.0/components/images/bars_navigation_standard_light.png
new file mode 100644
index 00000000..9b9f93db
Binary files /dev/null and b/docs/1.1.0/components/images/bars_navigation_standard_light.png differ
diff --git a/docs/1.1.0/components/images/bars_tab_dark.png b/docs/1.1.0/components/images/bars_tab_dark.png
new file mode 100644
index 00000000..25a09787
Binary files /dev/null and b/docs/1.1.0/components/images/bars_tab_dark.png differ
diff --git a/docs/1.1.0/components/images/bars_tab_light.png b/docs/1.1.0/components/images/bars_tab_light.png
new file mode 100644
index 00000000..da7e46bf
Binary files /dev/null and b/docs/1.1.0/components/images/bars_tab_light.png differ
diff --git a/docs/1.1.0/components/images/bars_tool_icons_dark.png b/docs/1.1.0/components/images/bars_tool_icons_dark.png
new file mode 100644
index 00000000..3be894a5
Binary files /dev/null and b/docs/1.1.0/components/images/bars_tool_icons_dark.png differ
diff --git a/docs/1.1.0/components/images/bars_tool_icons_light.png b/docs/1.1.0/components/images/bars_tool_icons_light.png
new file mode 100644
index 00000000..758ecd9f
Binary files /dev/null and b/docs/1.1.0/components/images/bars_tool_icons_light.png differ
diff --git a/docs/1.1.0/components/images/bars_tool_labels_dark.png b/docs/1.1.0/components/images/bars_tool_labels_dark.png
new file mode 100644
index 00000000..dda57849
Binary files /dev/null and b/docs/1.1.0/components/images/bars_tool_labels_dark.png differ
diff --git a/docs/1.1.0/components/images/bars_tool_labels_light.png b/docs/1.1.0/components/images/bars_tool_labels_light.png
new file mode 100644
index 00000000..d46cfe54
Binary files /dev/null and b/docs/1.1.0/components/images/bars_tool_labels_light.png differ
diff --git a/docs/1.1.0/components/images/buttons_emphasis_high.png b/docs/1.1.0/components/images/buttons_emphasis_high.png
new file mode 100644
index 00000000..c0a98b7f
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_emphasis_high.png differ
diff --git a/docs/1.1.0/components/images/buttons_emphasis_low.png b/docs/1.1.0/components/images/buttons_emphasis_low.png
new file mode 100644
index 00000000..e306cb0e
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_emphasis_low.png differ
diff --git a/docs/1.1.0/components/images/buttons_emphasis_lowest.png b/docs/1.1.0/components/images/buttons_emphasis_lowest.png
new file mode 100644
index 00000000..317dae96
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_emphasis_lowest.png differ
diff --git a/docs/1.1.0/components/images/buttons_emphasis_lowest_disabled.png b/docs/1.1.0/components/images/buttons_emphasis_lowest_disabled.png
new file mode 100644
index 00000000..c9931849
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_emphasis_lowest_disabled.png differ
diff --git a/docs/1.1.0/components/images/buttons_emphasis_medium.png b/docs/1.1.0/components/images/buttons_emphasis_medium.png
new file mode 100644
index 00000000..ef148b6e
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_emphasis_medium.png differ
diff --git a/docs/1.1.0/components/images/buttons_functional_negative.png b/docs/1.1.0/components/images/buttons_functional_negative.png
new file mode 100644
index 00000000..5d88a0fc
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_functional_negative.png differ
diff --git a/docs/1.1.0/components/images/buttons_functional_positive.png b/docs/1.1.0/components/images/buttons_functional_positive.png
new file mode 100644
index 00000000..330ef3d6
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_functional_positive.png differ
diff --git a/docs/1.1.0/components/images/buttons_functionnal_disabled.png b/docs/1.1.0/components/images/buttons_functionnal_disabled.png
new file mode 100644
index 00000000..803d1200
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_functionnal_disabled.png differ
diff --git a/docs/1.1.0/components/images/buttons_icon.png b/docs/1.1.0/components/images/buttons_icon.png
new file mode 100644
index 00000000..552dc955
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_icon.png differ
diff --git a/docs/1.1.0/components/images/buttons_layout_large_with_icon.png b/docs/1.1.0/components/images/buttons_layout_large_with_icon.png
new file mode 100644
index 00000000..29d586ac
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_layout_large_with_icon.png differ
diff --git a/docs/1.1.0/components/images/buttons_layout_large_without_icon.png b/docs/1.1.0/components/images/buttons_layout_large_without_icon.png
new file mode 100644
index 00000000..e6f378d7
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_layout_large_without_icon.png differ
diff --git a/docs/1.1.0/components/images/buttons_layout_small_with_icon.png b/docs/1.1.0/components/images/buttons_layout_small_with_icon.png
new file mode 100644
index 00000000..a0b7ae5c
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_layout_small_with_icon.png differ
diff --git a/docs/1.1.0/components/images/buttons_layout_small_without_icon.png b/docs/1.1.0/components/images/buttons_layout_small_without_icon.png
new file mode 100644
index 00000000..93ae02fd
Binary files /dev/null and b/docs/1.1.0/components/images/buttons_layout_small_without_icon.png differ
diff --git a/docs/1.1.0/components/images/card_horizontal_dark.png b/docs/1.1.0/components/images/card_horizontal_dark.png
new file mode 100644
index 00000000..7fe518b8
Binary files /dev/null and b/docs/1.1.0/components/images/card_horizontal_dark.png differ
diff --git a/docs/1.1.0/components/images/card_horizontal_light.png b/docs/1.1.0/components/images/card_horizontal_light.png
new file mode 100644
index 00000000..fdd1bdb3
Binary files /dev/null and b/docs/1.1.0/components/images/card_horizontal_light.png differ
diff --git a/docs/1.1.0/components/images/card_small_dark.png b/docs/1.1.0/components/images/card_small_dark.png
new file mode 100644
index 00000000..211a72a9
Binary files /dev/null and b/docs/1.1.0/components/images/card_small_dark.png differ
diff --git a/docs/1.1.0/components/images/card_small_light.png b/docs/1.1.0/components/images/card_small_light.png
new file mode 100644
index 00000000..e2b9949b
Binary files /dev/null and b/docs/1.1.0/components/images/card_small_light.png differ
diff --git a/docs/1.1.0/components/images/card_vertical_header_first_dark.png b/docs/1.1.0/components/images/card_vertical_header_first_dark.png
new file mode 100644
index 00000000..542c62eb
Binary files /dev/null and b/docs/1.1.0/components/images/card_vertical_header_first_dark.png differ
diff --git a/docs/1.1.0/components/images/card_vertical_header_first_light.png b/docs/1.1.0/components/images/card_vertical_header_first_light.png
new file mode 100644
index 00000000..66460143
Binary files /dev/null and b/docs/1.1.0/components/images/card_vertical_header_first_light.png differ
diff --git a/docs/1.1.0/components/images/card_vertical_image_first_dark.png b/docs/1.1.0/components/images/card_vertical_image_first_dark.png
new file mode 100644
index 00000000..f9a5299d
Binary files /dev/null and b/docs/1.1.0/components/images/card_vertical_image_first_dark.png differ
diff --git a/docs/1.1.0/components/images/card_vertical_image_first_light.png b/docs/1.1.0/components/images/card_vertical_image_first_light.png
new file mode 100644
index 00000000..58ee1f75
Binary files /dev/null and b/docs/1.1.0/components/images/card_vertical_image_first_light.png differ
diff --git a/docs/1.1.0/components/images/chips_action_dark.png b/docs/1.1.0/components/images/chips_action_dark.png
new file mode 100644
index 00000000..e0a50458
Binary files /dev/null and b/docs/1.1.0/components/images/chips_action_dark.png differ
diff --git a/docs/1.1.0/components/images/chips_action_light.png b/docs/1.1.0/components/images/chips_action_light.png
new file mode 100644
index 00000000..e2d8a9d6
Binary files /dev/null and b/docs/1.1.0/components/images/chips_action_light.png differ
diff --git a/docs/1.1.0/components/images/chips_choice_dark.png b/docs/1.1.0/components/images/chips_choice_dark.png
new file mode 100644
index 00000000..d848d8ad
Binary files /dev/null and b/docs/1.1.0/components/images/chips_choice_dark.png differ
diff --git a/docs/1.1.0/components/images/chips_choice_light.png b/docs/1.1.0/components/images/chips_choice_light.png
new file mode 100644
index 00000000..37781814
Binary files /dev/null and b/docs/1.1.0/components/images/chips_choice_light.png differ
diff --git a/docs/1.1.0/components/images/chips_filter_avatar_dark.png b/docs/1.1.0/components/images/chips_filter_avatar_dark.png
new file mode 100644
index 00000000..e4269dcc
Binary files /dev/null and b/docs/1.1.0/components/images/chips_filter_avatar_dark.png differ
diff --git a/docs/1.1.0/components/images/chips_filter_avatar_light.png b/docs/1.1.0/components/images/chips_filter_avatar_light.png
new file mode 100644
index 00000000..56857458
Binary files /dev/null and b/docs/1.1.0/components/images/chips_filter_avatar_light.png differ
diff --git a/docs/1.1.0/components/images/chips_filter_dark.png b/docs/1.1.0/components/images/chips_filter_dark.png
new file mode 100644
index 00000000..45fe2cf0
Binary files /dev/null and b/docs/1.1.0/components/images/chips_filter_dark.png differ
diff --git a/docs/1.1.0/components/images/chips_filter_light.png b/docs/1.1.0/components/images/chips_filter_light.png
new file mode 100644
index 00000000..d9c57620
Binary files /dev/null and b/docs/1.1.0/components/images/chips_filter_light.png differ
diff --git a/docs/1.1.0/components/images/chips_input_dark.png b/docs/1.1.0/components/images/chips_input_dark.png
new file mode 100644
index 00000000..315167eb
Binary files /dev/null and b/docs/1.1.0/components/images/chips_input_dark.png differ
diff --git a/docs/1.1.0/components/images/chips_input_light.png b/docs/1.1.0/components/images/chips_input_light.png
new file mode 100644
index 00000000..6e928d1d
Binary files /dev/null and b/docs/1.1.0/components/images/chips_input_light.png differ
diff --git a/docs/1.1.0/components/images/list_items_selection_circle_dark.png b/docs/1.1.0/components/images/list_items_selection_circle_dark.png
new file mode 100644
index 00000000..cef8cafe
Binary files /dev/null and b/docs/1.1.0/components/images/list_items_selection_circle_dark.png differ
diff --git a/docs/1.1.0/components/images/list_items_selection_circle_light.png b/docs/1.1.0/components/images/list_items_selection_circle_light.png
new file mode 100644
index 00000000..871e26a4
Binary files /dev/null and b/docs/1.1.0/components/images/list_items_selection_circle_light.png differ
diff --git a/docs/1.1.0/components/images/list_items_standard_square_dark.png b/docs/1.1.0/components/images/list_items_standard_square_dark.png
new file mode 100644
index 00000000..7e6d2994
Binary files /dev/null and b/docs/1.1.0/components/images/list_items_standard_square_dark.png differ
diff --git a/docs/1.1.0/components/images/list_items_standard_square_light.png b/docs/1.1.0/components/images/list_items_standard_square_light.png
new file mode 100644
index 00000000..03dc9d15
Binary files /dev/null and b/docs/1.1.0/components/images/list_items_standard_square_light.png differ
diff --git a/docs/1.1.0/components/images/progress_bar.png b/docs/1.1.0/components/images/progress_bar.png
new file mode 100644
index 00000000..d571477e
Binary files /dev/null and b/docs/1.1.0/components/images/progress_bar.png differ
diff --git a/docs/1.1.0/components/images/sliders.png b/docs/1.1.0/components/images/sliders.png
new file mode 100644
index 00000000..1a5c9c81
Binary files /dev/null and b/docs/1.1.0/components/images/sliders.png differ
diff --git a/docs/1.1.0/components/listItem.md b/docs/1.1.0/components/listItem.md
new file mode 100644
index 00000000..a56d4d25
--- /dev/null
+++ b/docs/1.1.0/components/listItem.md
@@ -0,0 +1,132 @@
+---
+layout: detail
+title: List item
+description: Lists are continuous, vertical indexes of text or images.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Lists](https://system.design.orange.com/0c1af118d/p/09a804-lists/b/669743)
+- [Apple guideline - Lists and tables](https://developer.apple.com/design/human-interface-guidelines/components/layout-and-organization/lists-and-tables)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+Here we just propose a configuration for two types of list items:
+- Standard with trailing actions
+- Selection with trailing icons (selection indicators)
+
+All items are composed of:
+- Title
+- Subtitle (optional)
+- Leading icon (optional)
+
+The leading icon is :
+- icon or image from resources
+- Image from url. During image loading a placeholder Image is needed. Three kinds of shape are proposed (circular, square or wide).
+
+
+### Standard list item
+
+For standard items, trailing icons can be added. Two types of icons are proposed:
+- with text
+- with text and info button to make an action
+
+![List item standard square light](images/list_items_standard_square_light.png)
+![List item standard square dark](images/list_items_standard_square_dark.png)
+
+The standard item can be used in a `NavigationLink` (for example, display more details)
+
+```swift
+
+// Build the List view using ODSListItem withount navigation
+List {
+ // Items without navigation
+ ODSListItem(title: Text("Title Only")).odsListItemStyle()
+ ODSListItem(title: Text("Title with subtitle"), subtitle: Text("subtitle")).odsListItemStyle()
+ ODSListItem(title: Text("Title with leading icon"), leading: .icon(Image(systemName: "heart"))).odsListItemStyle()
+ ODSListItem(title: Text("Title with trailing text"), trailingText: Text("Details")).odsListItemStyle()
+ ODSListItem(title: Text("Title with trailing text and info button"), trailingText: Text("Details")) {
+ // Add info button action here
+ }.odsListItemStyle()
+
+ // Item with navigation
+ NavigationLink {
+ Text("The destination view")
+ } label: {
+ ODSListItem(title: Text("Title without trailing element"))
+ }.odsListItemStyle()
+
+ NavigationLink {
+ Text("The destination view")
+ } label: {
+ ODSListItem(title: Text("Title with trailing text"), trailingText: Text("Details"))
+ }.odsListItemStyle()
+
+ NavigationLink {
+ Text("The destination view")
+ } label: {
+ ODSListItem(title: Text("Title with trailing text and info button"), trailingText: Text("Details")) {
+ // Add info button action here
+ }
+ }.odsListItemStyle()
+}
+```
+
+### Selection list item
+
+![List item slection circle light](images/list_items_selection_circle_light.png)
+![List item slection circle dark](images/list_items_selection_circle_dark.png)
+
+The selection list items can be used to enumerate data as list in order to select elements.
+
+```swift
+struct MyMultipleOptionsSelection: View {
+
+ @State private var optionA: Bool = false
+ @State private var optionB: Bool = false
+
+ var body: some View {
+ List {
+ ODSListItem(
+ title: Text("Option A"),
+ subtitle: Text("Option A description"),
+ trailingCheckmarkIsSelected: optionA
+ )
+ .odsListItemStyle()
+ .onTapGesture {
+ optionA.toggle()
+ }
+
+ ODSListItem(
+ title: Text("Option B"),
+ subtitle: Text("Option B description"),
+ trailingCheckmarkIsSelected: optionB
+ )
+ .odsListItemStyle()
+ .onTapGesture {
+ optionB.toggle()
+ }
+ }
+ }
+}
+```
+
+**Note 1:** Don’t forget, if item is used in a `NavigationLink`, a chevron is automatically added by the system. For design purpose it is NOT recommended to add item with `trailingCheckmarkIsSelected` and `trailingToggleIsOn` parameters in a `NavigationLink`.
+
+**Note 2:**Don’t forget to apply the style on:
+- __ODSListItem__ if it is not used with NavigationLink.
+- NavigationLink if __ODSListItem__ is its label.
+
diff --git a/docs/1.1.0/components/listItem_docs.md b/docs/1.1.0/components/listItem_docs.md
new file mode 100644
index 00000000..9caa65f1
--- /dev/null
+++ b/docs/1.1.0/components/listItem_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: List item
+content_page: listItem.md
+---
diff --git a/docs/1.1.0/components/progressIndicator.md b/docs/1.1.0/components/progressIndicator.md
new file mode 100644
index 00000000..4271e5d7
--- /dev/null
+++ b/docs/1.1.0/components/progressIndicator.md
@@ -0,0 +1,72 @@
+---
+layout: detail
+title: Progress indicator
+description: Progress indicators show users that elements or pages are loading
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Progress indicators](https://system.design.orange.com/0c1af118d/p/5969ab-progress-indicator)
+- [Apple guideline - Progress indicators](https://developer.apple.com/design/human-interface-guidelines/components/status/progress-indicators)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+Progress indicators show users that elements or pages are loading.
+
+### Progress bar
+
+Progres bar is used to display **determinate** operations. It display the indicator increasing in width from 0 to 100% of the track, in sync with the process’s progress.
+
+To display the indicator as progress bar with a specific color use the `tint`.
+
+![Progress bar](images/progress_bar.png)
+
+We recommend to use the theme for that using the accent color as shown in following exemple.
+
+```swift
+ProgressView("Downloading...", value: value, total: 100)
+ .tint(theme.componentColors.accent)
+```
+
+It is possible to display the current value to provide more context.
+
+```swift
+ProgressView(value: value, total: 100) {
+ Text("Downloading...")
+} currentValueLabel: {
+ let percent = String(format: "%0.2f", value)
+ Text("\(percent) %").frame(maxWidth: .infinity, alignment: .trailing)
+}
+.tint(theme.componentColors.accent)
+```
+
+### Activity indicators
+
+Activity indicator is used to display **Indeterminate** operations. It spins while a task is performed.
+
+![Activity indicator](images/activity_indicator.png)
+
+```swift
+ProgressView()
+```
+
+An additional label can be added to provide more context.
+
+```swift
+ProgressView {
+ Text("Loading...")
+}
+```
diff --git a/docs/1.1.0/components/progressIndicator_docs.md b/docs/1.1.0/components/progressIndicator_docs.md
new file mode 100644
index 00000000..17b0c0b6
--- /dev/null
+++ b/docs/1.1.0/components/progressIndicator_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Progress indicator
+content_page: progressIndicator.md
+---
diff --git a/docs/1.1.0/components/sheetsBottom.md b/docs/1.1.0/components/sheetsBottom.md
new file mode 100644
index 00000000..552072e8
--- /dev/null
+++ b/docs/1.1.0/components/sheetsBottom.md
@@ -0,0 +1,85 @@
+---
+layout: detail
+title: Bottom sheets
+description: Bottom Sheets are surfaces anchored to the bottom of the screen that present users supplement content.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Bottom sheets](https://system.design.orange.com/0c1af118d/p/3347ca-sheets-bottom/b/83b619)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+Bottom sheets are surfaces anchored to the bottom of the screen that present users supplemental content.
+It is useful for requesting a specific information or enabling a simple task related to the current context
+of the current view or more globaly the application context.
+
+### Standard
+
+The standard bottom sheet must be used only with a "simple, basic" content. If a more complex content (scrollable) must be added prefer the Expanding variant.
+
+It defines two states:
+- **closed**: The content is hidden
+- **opened**: The content is visible (above the main view)
+
+A taps on the header, opens or closes the bottom sheet.
+
+```swift
+struct BottomSheetPresentation: View {
+ @State private var isOpen = false
+
+ var body: some View {
+ VStack {
+ // Main content goes here.
+ Text("Bottom sheet is \(isOpen ? "Opened": "Closed")")
+ }
+ .odsBottomSheetStandard(isOpen: $isOpen, title: "Customize") {
+ // Bottom sheet content goes here
+ }
+ }
+}
+```
+
+You can also define accessibility hints and labels for this standard bottom sheet so as to make VoiceOver vocalize the state of this sheet (opended or closed) or to vocalize some hints to make it be opened or not.
+
+### Expanding
+
+The type of bottom must be used if the content is more complex and perhaps need to be scrollable.
+
+It defines three size:
+- **small**: (closed) The content is hidden, only the header is visible
+- **medium**: (parcially opened) The content is parcially visible (half screen above the main view) but not scrollable
+- **large**: (opened) The content is visible and scrollable
+
+User can resize by tapping on dimming area (close), drag the content, or tap on the header to cycle through the available sizes.
+
+```swift
+ struct BottomSheetPresentation: View {
+ @State private var bottomSheetSize: ODSBottomSheetSize = .large
+ var body: some View {
+ VStack {
+ // Main content goes here.
+ Text("Bottom sheet size \(bottomSheetSize.rawValue)")
+ }
+ .odsBottomSheetExpanding(title: "Customize", bottomSheetSize: $bottomSheetSize) {
+ // Bottom sheet content goes here
+ }
+ }
+ }
+```
+
+**Remark**: In order to compute the resizing when user scrolls the content, the bottom sheet automatically adds the provided content is a scrollView.
+
diff --git a/docs/1.1.0/components/sheetsBottom_docs.md b/docs/1.1.0/components/sheetsBottom_docs.md
new file mode 100644
index 00000000..03d56ceb
--- /dev/null
+++ b/docs/1.1.0/components/sheetsBottom_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Sheets - Bottom
+content_page: sheetsBottom.md
+---
diff --git a/docs/1.1.0/components/slider.md b/docs/1.1.0/components/slider.md
new file mode 100644
index 00000000..9bb3f76f
--- /dev/null
+++ b/docs/1.1.0/components/slider.md
@@ -0,0 +1,105 @@
+---
+layout: detail
+title: Sliders
+description: Sliders allow users to make selections from a range of values.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Sliders](https://system.design.orange.com/0c1af118d/p/7559da-sliders/b/253eea)
+- [Apple guideline - Sliders](https://developer.apple.com/design/human-interface-guidelines/components/selection-and-input/sliders)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+As the `ODSSlider` is based on the native `Slider`, Voice Over is able to vocalize
+However, if you want to set a description you need to add it using `.accessibilityLabel` on the `ODSSlider`.
+
+We recommend to not set information on `minimumValueLabel` and `maximumValueLabel` view using `.accessibilityHidden(true)`
+
+## Variants
+
+Slider is a system Slider component with accent color set to coreOrange.
+
+![Sliders](images/sliders.png)
+
+### Unlabeled slider
+
+Unlabelled sliders allow users to make easy selections that do not require any details or context.
+
+```swift
+struct UnlabeledSlider: View {
+
+ @State private var value = 50.0
+
+ var body: some View {
+ ODSSlider(value: $value, in: 0 ... 100)
+ }
+}
+```
+
+### Labeled slider (with images)
+
+We recommand to not set information on `minimumValueLabel` and `maximumValueLabel` view using `.accessibilityHidden(true)`. You can do it like this:
+
+```swift
+struct LabeledSlider: View {
+
+ @State private var value = 50.0
+
+ var body: some View {
+ ODSSlider(value: $value, in: 0 ... 100) {
+ Text("Volume")
+ } minimumValueLabel: {
+ Image(systemName: "speaker.wave.1.fill").accessibilityHidden(true)
+ } maximumValueLabel: {
+ Image(systemName: "speaker.wave.3.fill").accessibilityHidden(true)
+ }
+ }
+}
+```
+
+### Labeled slider (with text)
+
+We recommand to not set information on `minimumValueLabel` and `maximumValueLabel` view using `.accessibilityHidden(true)`. You can do it like this:
+
+```swift
+ODSSlider(value: $value, in: 0 ... 100) {
+ Text("Volume")
+} minimumValueLabel: {
+ Text("0").accessibilityHidden(true)
+} maximumValueLabel: {
+ Text("100").accessibilityHidden(true)
+}
+```
+
+### Stepped slider (with text and value display)
+
+We recommand to not set information on `minimumValueLabel` and `maximumValueLabel` view using `.accessibilityHidden(true)`. You can do it like this:
+
+```swift
+struct SteppedSlider: View {
+
+ @State private var value = 50.0
+
+ var body: some View {
+ ODSSlider(value: $value, in: 0 ... 100.0, step: 0.5) {
+ Text("Volume")
+ } minimumValueLabel: {
+ Image(systemName: "speaker.wave.1.fill").accessibilityHidden(true)
+ } maximumValueLabel: {
+ Image(systemName: "speaker.wave.3.fill").accessibilityHidden(true)
+ }
+ }
+}
+```
diff --git a/docs/1.1.0/components/slider_docs.md b/docs/1.1.0/components/slider_docs.md
new file mode 100644
index 00000000..29743fb1
--- /dev/null
+++ b/docs/1.1.0/components/slider_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Slider
+content_page: slider.md
+---
diff --git a/docs/1.1.0/components/textInput.md b/docs/1.1.0/components/textInput.md
new file mode 100644
index 00000000..a57f46df
--- /dev/null
+++ b/docs/1.1.0/components/textInput.md
@@ -0,0 +1,64 @@
+---
+layout: detail
+title: Text fields and text editor
+description: Text fields and text editor let users enter and edit text.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Text fields](https://system.design.orange.com/0c1af118d/p/47d389-text-fields/b/461794)
+- [Apple guideline - Text fields](https://developer.apple.com/design/human-interface-guidelines/components/selection-and-input/text-fields)
+- [Apple guideline - Edit Menu](https://developer.apple.com/design/human-interface-guidelines/components/menus-and-actions/edit-menus)
+- [Apple doc - Text input](https://developer.apple.com/documentation/swiftui/text-input-and-output)
+- [Apple doc - Text Field](https://developer.apple.com/documentation/swiftui/textfield)
+- [Apple doc - Secure Text Field](https://developer.apple.com/documentation/swiftui/securefield)
+- [Apple doc - Text Editor](https://developer.apple.com/documentation/swiftui/i/texteditor)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+For all variants, we provide the `odsTextFieldStyle` view modifier to apply font, collors (background, tint) provided by the theme.
+
+### Text field
+
+A control that displays an editable text interface.
+
+```swift
+TextField("A text field", text: $textToEdit)
+ .odsTextFieldStyle()
+```
+
+ ### Secure text field
+
+Use a `SecureField` when you want behavior similar to a ``TextField``, but you don't want the user's text to be visible. Typically, you use this for entering passwords and other sensitive information.
+
+```swift
+SecureField("Secure text", text: $textToEdit)
+ .odsTextFieldStyle()
+```
+
+### Text editor
+
+A text editor view allows you to display and edit multiline, scrollable text in your app's user interface.
+
+```swift
+TextEditor(text: $textToEdit)
+ .odsTextFieldStyle()
+```
+
+## Text selection
+
+Text selection is available when text field or text editor is entering in edition mode. This is not a custom component but just a way to apply right style (customize with colors, font provided by theme).
+
diff --git a/docs/1.1.0/components/textInput_docs.md b/docs/1.1.0/components/textInput_docs.md
new file mode 100644
index 00000000..fabdf10a
--- /dev/null
+++ b/docs/1.1.0/components/textInput_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Text fields
+content_page: textInput.md
+---
diff --git a/docs/1.1.0/guidelines/colors.md b/docs/1.1.0/guidelines/colors.md
new file mode 100644
index 00000000..601c632d
--- /dev/null
+++ b/docs/1.1.0/guidelines/colors.md
@@ -0,0 +1,56 @@
+---
+layout: detail
+title: Colors
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Colour](https://system.design.orange.com/0c1af118d/p/73fa17-colour/b/025652)
+- [Apple guideline - The color system](https://developer.apple.com/design/human-interface-guidelines/foundations/color)
+
+## Theme colors
+
+Colors are defined in theme and described using `ODSColorDecription`, by setting :
+- the asset name,
+- the bundle containing the asset
+- the color names for light and dark modes (used by demo application)
+
+Colors will be different depending on whether they are displayed in light or in dark mode.
+
+## How to use
+
+### Using the color name
+
+You can get color in theme using its name like this:
+
+``` swift
+ // Don't forget get theme from environment
+ @Environment(\.theme) var theme
+
+ Image(systemName: "checkmark").foregroundColor(theme.color("coreOrange"))
+ MyView().background(theme.color("functionalInfo"))
+```
+
+### Using components token
+
+You can get color in theme using components token like this:
+
+``` swift
+// Don't forget get theme from environment
+@Environment(\.theme) var theme
+
+Button {
+} label: {
+ Text("Cancel")
+ .padding(ODSSpacing.m)
+}
+.background(theme.componentColors.functionalNegative)
+```
diff --git a/docs/1.1.0/guidelines/colors_docs.md b/docs/1.1.0/guidelines/colors_docs.md
new file mode 100644
index 00000000..c2c79e6f
--- /dev/null
+++ b/docs/1.1.0/guidelines/colors_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Colors
+content_page: colors.md
+---
diff --git a/docs/1.1.0/guidelines/spacings.md b/docs/1.1.0/guidelines/spacings.md
new file mode 100644
index 00000000..485f004a
--- /dev/null
+++ b/docs/1.1.0/guidelines/spacings.md
@@ -0,0 +1,56 @@
+---
+layout: detail
+title: Spacings
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Spacings](https://system.design.orange.com/0c1af118d/p/375be7-spacing)
+- [Apple guideline - Layout](https://developer.apple.com/design/human-interface-guidelines/foundations/layout)
+
+## Usage
+
+The spacing scale increases in small increments needed to describe both internal and external spacing relationships. Spacing tokens can be applied as padding and margins.
+
+### Apply spacing for magin
+
+Apply the spacing to get magin arround element like this:
+
+``` swift
+// Add a padding of 16px arround the text in the button
+
+Button {
+ // Add your action here
+} label: {
+ Text("ButtonText")
+ .padding(.all, ODSSpacing.m)
+}
+
+
+// Add a magin of 16px (leading and trailing)
+VStack {
+ Text("Title")
+ Text("A very long text for description in the main view")
+}
+.padding(.horizontal: ODSSpacing.m) // Add a margin to the
+
+```
+
+### Apply spacing for padding
+
+Apply the spacing to separate elements like this:
+
+``` swift
+HStack(spacing: ODSSpacing.m) {
+ Image(systemname: "heart")
+ Text("Some text")
+}
+```
diff --git a/docs/1.1.0/guidelines/spacings_docs.md b/docs/1.1.0/guidelines/spacings_docs.md
new file mode 100644
index 00000000..9f829894
--- /dev/null
+++ b/docs/1.1.0/guidelines/spacings_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Spacings
+content_page: spacings.md
+---
diff --git a/docs/1.1.0/guidelines/typography.md b/docs/1.1.0/guidelines/typography.md
new file mode 100644
index 00000000..1e52d8d9
--- /dev/null
+++ b/docs/1.1.0/guidelines/typography.md
@@ -0,0 +1,48 @@
+---
+layout: detail
+title: Typography
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Typography](https://system.design.orange.com/0c1af118d/p/54fe27-typography)
+- [Apple guideline - Typography](https://developer.apple.com/design/human-interface-guidelines/foundations/typography/)
+
+## Implementation
+
+ODS library defines its own font style. The font associated to the style is defined in the theme set in the environment.
+
+### Apply font style on text
+
+Apply the font style on text like this:
+
+``` swift
+ Text("Sample").odsFont(.titleS)
+ TextField("A text field", text: $textToEdit).odsFont(.titleS)
+```
+
+### Apply font style on view
+
+In the example below, the first text field has a font style set directly, while the font applied to the following container applies to all of the text views inside that container.
+
+``` swift
+VStack {
+ Text("Font applied to a text view.")
+ .odsFont(.headlineL)
+
+ VStack {
+ Text("These two text views have the same font")
+ Text("applied to their parent view.")
+ }
+ .odsFont(.titleS)
+}
+```
+
diff --git a/docs/1.1.0/guidelines/typography_docs.md b/docs/1.1.0/guidelines/typography_docs.md
new file mode 100644
index 00000000..da3bdf9a
--- /dev/null
+++ b/docs/1.1.0/guidelines/typography_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Typography
+content_page: typography.md
+---
diff --git a/docs/1.1.0/home_content.md b/docs/1.1.0/home_content.md
new file mode 100644
index 00000000..c85da878
--- /dev/null
+++ b/docs/1.1.0/home_content.md
@@ -0,0 +1,27 @@
+## Introduction
+
+Orange is providing a full Design System to build Orange Mobile Application. The objective of the [Orange Design System](https://system.design.orange.com/0c1af118d/p/95b685-ios/) (ODS) is to propose a set of guidelines on how to apply the Orange Brand on mobile applications. The Orange design System also provides a series of components and modules that show in details how to use this in the Orange apps.
+
+The Orange Design System has been implemented in a code library that provides:
+- a SwiftUI code library
+- a demo app that can be launched to show the guidelines, components and modules
+- this demo app also shows how to use the lib or style existing components
+
+Using these resources will allow you to create Orange branded applications faster and will inherit all the work that was done to make sure that all presented codes are fully tested regarding the brand and the accessibility compliance.
+
+The Orange Design System framework supports iOS 15 and later.
+
+## Instructions
+
+### Swift Package Manager
+
+The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler.
+
+Once you have your Swift package set up, adding ODS as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`.
+
+```swift
+dependencies: [
+ .package(url: "https://github.com/Orange-OpenSource/ods-ios.git", .upToNextMajor(from: "1.1.0"))
+]
+```
+
diff --git a/docs/1.1.0/index.md b/docs/1.1.0/index.md
new file mode 100644
index 00000000..ef70b2b0
--- /dev/null
+++ b/docs/1.1.0/index.md
@@ -0,0 +1,7 @@
+---
+layout: main
+title: Integration
+description: Getting started with Orange Design System for iOS
+---
+
+{% include_relative home_content.md %}
diff --git a/docs/1.1.0/index_content.md b/docs/1.1.0/index_content.md
new file mode 100644
index 00000000..8c4b2b1e
--- /dev/null
+++ b/docs/1.1.0/index_content.md
@@ -0,0 +1,7 @@
+---
+layout: detail
+title: Integration
+description: Getting started with Orange Design System for iOS
+---
+
+{% include_relative home_content.md %}
diff --git a/docs/1.1.0/modules/about.md b/docs/1.1.0/modules/about.md
new file mode 100644
index 00000000..584e9acd
--- /dev/null
+++ b/docs/1.1.0/modules/about.md
@@ -0,0 +1,310 @@
+---
+layout: detail
+title: About
+description: An about screen should be displayed in all Orange applications to display the application name, software version as well as all legal data protection, privacy, and terms of service compliance information.
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Modules - About](https://system.design.orange.com/0c1af118d/p/39538b-about/b/55a5d2)
+
+## Overview
+
+This module should be added in all applications to display general application information (name, software version, description, privacy policy, terms of service, ...), to offer user actions (Rate the app, send feedbacks, ...), to get informaioon linked to the service (Application recirculation, App news ...).
+
+It is also possible to add to the module some specifc features linked to the service provided by the application (Suppport, How to, settings, ...)
+
+In order to have consistant prsentation of those elemnts in all applications, the __About__ module offers a structured and configrable layout.
+
+![AboutScreen](images/about_screen.png)
+
+
+## About screen layout
+
+The main about screen is divided to three areas.
+
+### Illustration area
+
+The first area (at the top of the screen) allows you to set an image illustrating the about screen linked to the service. If no image is provided the default one is inserted automatically.
+
+### Application information area
+
+The second area is dedicated for the application description with various elements:
+- The name (mandatory)
+- The version (optional)
+- A description in sevral lines (optional)
+
+
+It is also possible to activate two buttons to offer to the user to:
+
+- _share the application_ via email, via sms, via social networks... This button opens the default system share sheet that presents a range of actions to share the application. To activate this button, the developper needs to prvide the url of the application on the store and a short text describing the context of the sharing.
+- _send feedback_ to the support of the service. This button is displayed if the developper provides a callback called when button is clicked. This callback can do what it is expected (send email, send sms, open form, open web site, ...).
+
+
+### List items area
+
+The last area (at the bottom) is a list of items that propose to the user to make actions or navigate to additionnal feetures.
+All items have the same layout (icon and text). They are ordered in the list according to their priority set into the configuration.
+
+#### Mandatory items
+
+Some items are provided with the module. Three of them are mandatory and allways available in the list:
+- Item to present the __Privacy Policy__ (only html content supported today)
+- Item to display __Terms of Service__ (View provided by developper)
+- Item to show the __Accessibility Statement__ of the application (not available yet)
+As those items must be grouped in the list, their priority are fixed and can not be changed.
+
+#### Optionnal items
+
+As most of applications propose the same additonnal features (Rate the app, App News, ...), and in order to have consitency in about screens of all applications, additional items are proposed with the module.
+
+* Rate the app
+
+This item can be added in the list to redirect the user to the app page on the Apple Store to rate the application.
+
+* Apps news
+
+This item enumerates the application versions with small text describing new features available.
+
+* Legal inofrmation
+
+This item is used to display legal infomration. Today, there is not recomandation on the presentation.
+
+#### Custom items
+
+In addition, it is also possible to add into the list some custom items. Like previous ones, they must respect the layout and can set their own priority to be inserted in the right place in the list.
+
+
+## How to configure the module
+
+To display the about screen, initialize the module using the __ODSAboutModule__ stucture. During the initialization, a set of configuration must to be provided.
+
+### Illustration area
+
+If the about page needs to display a specific illustration, set it like this:
+
+```swft
+ODSAboutModule(headerIllustration: Image("AboutImage"), ...)
+```
+
+To keep the default illustration, initialize the module without overriding the `headerIllustration` parameter.
+
+
+### Application section area
+
+To configure the application, fill out the `ODSAboutApplicationInformation` structure and provide it to the module initialization.
+
+- With name only
+
+```swift
+let nameOnly = ODSAboutApplicationInformation(name: "Orange Design System Demo")
+ODSAboutModule(applicationInformation: nameOnly, ...)
+```
+
+- With description
+
+```swift
+let withDescription = ODSAboutApplicationInformation(
+ name: "Orange Design System Demo"
+ description: "In this app you'll find implemented code examples of the guidelines, components and modules, for the themes of the Orange Design System.")
+ODSAboutModule(applicationInformation: withDescription, ...)
+```
+
+- With version
+
+```swift
+let version = ODSApplicationVersion(
+ marketingVersion: Bundle.main.marketingVersion, // Mandatory
+ buildNumber: Bundle.main.buildNumber ?? "", // Optional
+ buildType: Bundle.main.buildType // Optional
+)
+
+let withVersion = ODSAboutApplicationInformation(
+ name: "Orange Design System Demo",
+ version: version
+)
+
+ODSAboutModule(applicationInformation: withVersion, ...)
+```
+
+- To activate the Share the application action
+
+```swift
+ler shareTheApplicationConfiguration = ODSAboutShareTheApplication(
+ storeUrl: URL(string: "http://oran.ge/dsapp")!,
+ subject: "The Orange Design System",
+ description: "Here you will find the Orange Design System Mobile App that provides examples of design implementations"
+)
+
+let withShareTheApp = ODSAboutApplicationInformation(
+ name: "Orange Design System Demo",
+ shareConfiguration: shareTheApplicationConfiguration
+)
+ODSAboutModule(applicationInformation: withShareTheApp, ...)
+```
+
+- To activate the feedback action
+
+```swift
+
+let withFeedback = ODSAboutApplicationInformation(
+ name: "Orange Design System Demo",
+ onFeedbackClicked: {
+ UIApplication.shared.open(URL(string: "https://github.com/Orange-OpenSource/ods-ios/issues/new/choose")!)
+ }
+)
+
+ODSAboutModule(applicationInformation: withFeedback, ...)
+```
+
+### Lits items area
+
+#### Use mandatory items
+
+For the privacy policy display, only HTML content is supported today. A more structured content will be added soon.
+
+- Privacy policy
+
+```swift
+// Initializes the privacy policy page with URL of the HTML file stored in resources.
+let privacyPolicy = ODSPrivacyPolicy.webview(.url(Bundle.main.url(forResource: "PrivacyNotice", withExtension: "html")!))
+```
+
+- The accessibility statement
+
+```swift
+// Defines an item displaying as a title the "conformity status" text, parsing the file named "fileName" and sending user elsewhere for further details
+let accessibilityStatement = ODSAboutAccessibilityStatement(
+ conformityStatus: "Accessibility: partially conform",
+ fileName: "AccessibilityStatement",
+ reportDetail: URL(string: "https://la-va11ydette.orange.com/")!)
+```
+
+- The Terms of service
+
+```swift
+// Today, there is no recomandation how to display the content, so the module provides a view builder
+// to build a native screen or a webview
+
+@ViewBuilder
+private func termsOfService() -> some View {
+ Text("Add terms of service here")
+}
+```
+
+Then initialize the module with those mandatory elements:
+
+```swift
+ODSAboutModule(...,
+ privacyPolicy: privacyPolicy,
+ acessibilityStatement: accessibilityStatement,
+ termsOfService: termOfService
+)
+```
+
+#### Add items to the list
+
+To insert additionnal items into the list, initialize the __listItemConfigurations__ array adding items following the __ODSAboutListItemConfig__ protocol.
+To order the items in the list, initialize the items with the right priority.
+
+```swift
+// Add all items in list
+ODSAboutModule(...,
+ listItemConfigurations: [legalInfoItem, rateTheAppItem, appsNewItem]
+)
+
+// see items description below
+```
+
+#### Use optional items
+
+- Rate the app
+
+To create this item, define the url of the application on the store and the priority (position) of the item in the list:
+
+```swift
+// This item opens the store in the external browser
+let rateTheAppItem = ODSAboutRateTheAppItemConfig(
+ priority: 501,
+ storeUrl: URL(string: "https://www.apple.com/app-store/")!
+)
+```
+
+- Apps news
+
+To create this item, define the path to the json file containing the news. This file is embeded in the resources of the application.
+
+The model of the json file is:
+
+```json
+[
+ {
+ "version": "0.12.0",
+ "date": "2023-04-14",
+ "news": "A short description of news"
+ },
+ ...
+]
+```
+
+This is the code to create the item:
+
+```swift
+// - Display the app News
+let appNewFilePath = Bundle.main.path(forResource: "AppNews", ofType: "json")!
+let appsNewItem = ODSAboutAppNewsItemConfig(
+ priorty: 502,
+ path: appNewFilePath
+)
+```
+
+- Legal information
+
+Still there is not recomandation on the format of the presentation, this item needs a view builder to display the legal information.
+
+```swift
+// Here, the legal information are displayed in a view with a single Text.
+
+let legalInformationItem = ODSAboutLegalInformationItemConfig(priority: 500) {
+ Text("This is Legal information content")
+}
+```
+
+- Apps recirculation
+
+You can also add an item to let people discover other apps of Orange, by using the following item:
+
+```swift
+let appsRecirculation = ODSRecirculationItemConfig(dataSource: yourDataSource)
+```
+
+The __dataSource__ can contain the URL of the backend to get the list of apps, (today the only supported backend is Orange proprietary backend _Apps Plus_) or a local json file. (for more details see the __Recirculation Module__.
+
+#### Create a custom item
+
+To create a custom item and associate a target, follow this example:
+
+```swift
+public struct MyItemToDisplayText: ODSAboutListItemConfig {
+ public private(set) var title: String
+ public private(set) var icon: Image
+ public private(set) var target: ODSAboutListItemTarget
+ public private(set) var priority: ODSAboutListItemPriority
+
+ public init(priority: ODSAboutListItemPriority = 100) {
+ self.priority = priority
+ self.title = "Fake Item"
+ self.icon = Image(systemName: "heart"),
+ self.target = .destination(AnyView(Text("This is the destination screen")))
+ }
+}
+```
+
diff --git a/docs/1.1.0/modules/about_docs.md b/docs/1.1.0/modules/about_docs.md
new file mode 100644
index 00000000..68f62b7e
--- /dev/null
+++ b/docs/1.1.0/modules/about_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: About
+content_page: about.md
+---
+
diff --git a/docs/1.1.0/modules/emptyState.md b/docs/1.1.0/modules/emptyState.md
new file mode 100644
index 00000000..e7061cfe
--- /dev/null
+++ b/docs/1.1.0/modules/emptyState.md
@@ -0,0 +1,52 @@
+---
+layout: detail
+title: Empty states
+description: An empty state can occur when no content or data is available to display in the UI. Avoid displaying completely empty screens.
+---
+
+An empty state display should inform the user of what is happening, why it's happening and what to do about it.
+
+ **On this page**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Empty states](https://system.design.orange.com/0c1af118d/p/177496-empty-states/b/454547)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/).
+
+The ODS Empty states module is built to support accessibility criteria and is readable by most screen readers, such as VoiceOver.
+
+## Integration
+
+![Empty state light](images/empty_state_light.png) ![Empty state dark](images/empty_state_dark.png)
+
+### SwiftUI
+
+To integrate an ODS Empty state into your app, you can use `ODSEmptyStateView` as shown below:
+
+```swift
+ODSEmptyStateView(
+ title: Text("No result"),
+ text: Text("Try a new search"),
+ image: Image("il_emptyStateNoData"),
+ button: Button("Search") {
+ // Do something
+ }
+)
+```
+
+#### ODSEmptyStateView API
+
+| Parameter | Default value | Description |
+|-------------------------------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
+| `title: Text` | | The title of the screen displayed below the image. For example "File is missing". |
+| `text: Text?` | `null` | Text displayed below the title |
+| `image: Image` | `Image("il_emptyStateUserCleared", bundle: Bundle.ods)` | Image displayed centered in the composable |
+| `button: Button?` | `null` | The button to add below the text |
diff --git a/docs/1.1.0/modules/emptyState_docs.md b/docs/1.1.0/modules/emptyState_docs.md
new file mode 100644
index 00000000..15db0e38
--- /dev/null
+++ b/docs/1.1.0/modules/emptyState_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: Empty states
+content_page: emptyState.md
+---
+
diff --git a/docs/1.1.0/modules/images/about_screen.png b/docs/1.1.0/modules/images/about_screen.png
new file mode 100644
index 00000000..ea0628be
Binary files /dev/null and b/docs/1.1.0/modules/images/about_screen.png differ
diff --git a/docs/1.1.0/modules/images/empty_state_dark.png b/docs/1.1.0/modules/images/empty_state_dark.png
new file mode 100644
index 00000000..7fcd8c2a
Binary files /dev/null and b/docs/1.1.0/modules/images/empty_state_dark.png differ
diff --git a/docs/1.1.0/modules/images/empty_state_light.png b/docs/1.1.0/modules/images/empty_state_light.png
new file mode 100644
index 00000000..2208398f
Binary files /dev/null and b/docs/1.1.0/modules/images/empty_state_light.png differ
diff --git a/docs/1.1.0/modules/images/list_grouped_dark.png b/docs/1.1.0/modules/images/list_grouped_dark.png
new file mode 100644
index 00000000..1cd3da2f
Binary files /dev/null and b/docs/1.1.0/modules/images/list_grouped_dark.png differ
diff --git a/docs/1.1.0/modules/images/list_grouped_light.png b/docs/1.1.0/modules/images/list_grouped_light.png
new file mode 100644
index 00000000..0010570d
Binary files /dev/null and b/docs/1.1.0/modules/images/list_grouped_light.png differ
diff --git a/docs/1.1.0/modules/images/list_inset_dark.png b/docs/1.1.0/modules/images/list_inset_dark.png
new file mode 100644
index 00000000..9edc8c7f
Binary files /dev/null and b/docs/1.1.0/modules/images/list_inset_dark.png differ
diff --git a/docs/1.1.0/modules/images/list_inset_grouped_dark.png b/docs/1.1.0/modules/images/list_inset_grouped_dark.png
new file mode 100644
index 00000000..d7b1959a
Binary files /dev/null and b/docs/1.1.0/modules/images/list_inset_grouped_dark.png differ
diff --git a/docs/1.1.0/modules/images/list_inset_grouped_light.png b/docs/1.1.0/modules/images/list_inset_grouped_light.png
new file mode 100644
index 00000000..f5afcd3f
Binary files /dev/null and b/docs/1.1.0/modules/images/list_inset_grouped_light.png differ
diff --git a/docs/1.1.0/modules/images/list_inset_light.png b/docs/1.1.0/modules/images/list_inset_light.png
new file mode 100644
index 00000000..64c9b21e
Binary files /dev/null and b/docs/1.1.0/modules/images/list_inset_light.png differ
diff --git a/docs/1.1.0/modules/images/list_plain_dark.png b/docs/1.1.0/modules/images/list_plain_dark.png
new file mode 100644
index 00000000..9b189afa
Binary files /dev/null and b/docs/1.1.0/modules/images/list_plain_dark.png differ
diff --git a/docs/1.1.0/modules/images/list_plain_light.png b/docs/1.1.0/modules/images/list_plain_light.png
new file mode 100644
index 00000000..de89eb09
Binary files /dev/null and b/docs/1.1.0/modules/images/list_plain_light.png differ
diff --git a/docs/1.1.0/modules/images/list_sidebar_dark.png b/docs/1.1.0/modules/images/list_sidebar_dark.png
new file mode 100644
index 00000000..12b22797
Binary files /dev/null and b/docs/1.1.0/modules/images/list_sidebar_dark.png differ
diff --git a/docs/1.1.0/modules/images/list_sidebar_light.png b/docs/1.1.0/modules/images/list_sidebar_light.png
new file mode 100644
index 00000000..5ba12f6b
Binary files /dev/null and b/docs/1.1.0/modules/images/list_sidebar_light.png differ
diff --git a/docs/1.1.0/modules/list.md b/docs/1.1.0/modules/list.md
new file mode 100644
index 00000000..d2fa73b9
--- /dev/null
+++ b/docs/1.1.0/modules/list.md
@@ -0,0 +1,194 @@
+---
+layout: detail
+title: List
+description: Lists are continuous, vertical indexes of text or images.
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Lists](https://system.design.orange.com/0c1af118d/p/09a804-lists/b/669743)
+- [Apple guideline - Lists and tables](https://developer.apple.com/design/human-interface-guidelines/components/layout-and-organization/lists-and-tables)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## List styles
+
+List propose the `.listStyle(_:)` modifier to change the style. For ios SwiftUI propose 6 types of style:
+- automatic
+- insetGrouped
+- grouped
+- inset
+- plain
+- sidebar
+
+The folowing code is used for all styles. The only difference is the list style specified in the `.listStyle(_:)` modifier.
+
+```swift
+NavigationStack {
+ List {
+ // Section for recipes contain selected ingredients
+ Section {
+ ODSListItem(
+ title: Text("Summer Salad"),
+ subtitle: Text("21 mn"),
+ leading: .circularImage(source: .image(Image("summerSalad")))
+ )
+ ODSListItem(
+ title: Text("Salmon cury"),
+ subtitle: Text("31 mn"),
+ leading: .circularImage(source: .image(Image("salmonCury")))
+ )
+ ODSListItem(
+ title: Text("Feta Pizza"),
+ subtitle: Text("21 mn"),
+ leading: .circularImage(source: .image(Image("fetaPizza")))
+ )
+ } header: {
+ Text("Recipes")
+ } footer: {
+ Text("A set of recipes made with selected ingredients")
+ }
+
+ // A set of ingredients
+ Section("Ingredients") {
+ ODSListItem(title: Text("tomato"), leading: .circularImage(source: .image(Image("tomato"))))
+ ODSListItem(title: Text("avocado"), leading: .circularImage(source: .image(Image("avocado"))))
+ }
+ }
+ .navigationTitle("List Style")
+ .listStyle(.automatic)
+}
+```
+
+### Automatic style
+
+As mentioned earlier, SwiftUI will use Inset Grouped style when setting automatic (.automatic) or DefaultListStyle on iOS
+
+### Inset Grouped style
+
+Example of Inset Grouped .insetGrouped or InsetGroupedListStyle.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.insetGrouped)
+```
+
+![InsetGroupedLight](images/list_inset_grouped_light.png)
+![InsetGroupedDark](images/list_inset_grouped_dark.png)
+
+### Grouped style
+
+Example of Grouped .grouped or GroupedListStyle.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.grouped)
+```
+
+![GroupedLight](images/list_grouped_light.png)
+![GroupedDark](images/list_grouped_dark.png)
+
+### Inset style
+
+Example of Inset .inset or InsetListStyle.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.inset)
+```
+
+![InsetLight](images/list_inset_light.png)
+![InsetDark](images/list_inset_dark.png)
+
+
+### Plain style
+
+Example of Plain .plain or PlainListStyle.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.plain)
+```
+![PlainLight](images/list_plain_light.png)
+![PlainDark](images/list_plain_dark.png)
+
+### Sidebar style
+
+The sidebar list style displays disclosure indicators in the section headers that allow the user to collapse and expand sections.
+
+Tap on disclosure indicators in the section headers will collapse and expand that section.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.sidebar)
+```
+
+![SideBarLight](images/list_sidebar_light.png)
+![SideBarDark](images/list_sidebar_dark.png)
+
+
+* For iOS 17, a new API is proposed to manage the expandable state.
+
+```swift
+@State var isExpanded = true
+
+List {
+ Section(isExpanded: $isExpanded) {
+ // ...
+ } header: {
+ Text("Recipes")
+ }
+}
+.listStyle(.sidebar)
+```
+
+When you create your Section with `isExpanded`, the chevron will appear as long as the list style is `.sidebar`.
+
+* On previous iOS versions, this interface is not available, so to do the same you can use following code:
+
+```swift
+@State var isExpanded = true
+
+List {
+ Section {
+ if isExpanded {
+ // The content
+ }
+ } header: {
+ HStack {
+ Text("Recipes") // The header
+
+ Spacer()
+ Image(systemName: "chevron.down")
+ .rotationEffect(isExpanded ? .zero : .degrees(-90))
+ .onTapGesture {
+ withAnimation {
+ isExpanded.toggle()
+ }
+ }
+ }
+ }
+}
+.listStyle(.sidebar)
+```
+
diff --git a/docs/1.1.0/modules/list_docs.md b/docs/1.1.0/modules/list_docs.md
new file mode 100644
index 00000000..52f13ec1
--- /dev/null
+++ b/docs/1.1.0/modules/list_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: List
+content_page: list.md
+---
+
diff --git a/docs/1.1.0/modules/recirculation.md b/docs/1.1.0/modules/recirculation.md
new file mode 100644
index 00000000..abbecf8c
--- /dev/null
+++ b/docs/1.1.0/modules/recirculation.md
@@ -0,0 +1,109 @@
+---
+layout: detail
+title: Recirculation
+description: Displays a list of applications can be downloaded and used by user.
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Modules - Recirculation](https://system.design.orange.com/0c1af118d/p/37aa79-recirculation)
+
+## Overview
+
+The _Recirculation_ module exposes a feature allowing the final users to get the available apps they can use.
+This feature is based today only on the Orange proprietary _Apps Plus_ backend which provides a JSON file with list of apps and sections of apps.
+This service today is based on a simple URL containing both a lang parameter and an API key.
+
+**This API key will define the type of data returned by the backend ; maybe you should have your own API key which matches the suitable filters to get only a subgroup of apps.**
+
+## Implementation
+
+To be able to call this service and display the list of available apps, you have to use the `ODSRecirculation`.
+This _View_ has a `dataSource` parameter of type `ODSRecirculationDataSource` which must contain the type of source of data to display the apps:
+
+```swift
+ // Get data from the Apps Plus backend
+ ODSRecirculationView(dataSource: .remote(url: "https://url-to-appsplus-backend/get?apikey=SomeKey&lang=fr"))
+
+ // Get data for some local files
+ ODSRecirculationView(dataSource: .local(path: somePathToJSONFileInResources))
+```
+
+Note also that the data picked from the _Apps Plus_ service is saved in cache directory so as to be used if the device is offline
+or if an error occured.
+
+If you want to flatten the list of apps without displaying categories, set the _flattenApps_ flag in the configuration:
+
+```swift
+ ODSRecirculationView(dataSource: ..., flattenApps: true)
+```
+
+The apps icons displayed in the list of apps can also be cached.
+If you do not want to see these values put in cache, meaning e.g. displaying instead a placeholder if no network, use:
+
+```swift
+ ODSRecirculationView(dataSource: ..., cacheAppsIcons: false)
+```
+
+The list of apps can trigger also haptic notifications, e.g. vibrations when the data have been lodaded or if an error occured.
+By default this feature is enabled, but it can be disabled:
+
+```swift
+ ODSRecirculationView(dataSource: ..., enableHaptics: false)
+```
+
+### Example about definiton of Apps Plus credentials
+
+You can for example for your app use a _.xcconfig_ configuration settings file to store such credentials.
+A key named **APPS_PLUS_URL** can be defined with the URL (containing the API key) to call.
+Then the **Info.plist** file of your app must have an entry with the same name.
+Of course the _.xcconfig_ file should not be versionned in Git, ensure this with [Gitleaks](https://github.com/gitleaks/gitleaks) for example.
+
+See the example for the _.xcconfig_:
+
+```text
+// Configuration settings file format documentation can be found at:
+// https://help.apple.com/xcode/#/dev745c5c974
+// See also https://medium.com/swift-india/secure-secrets-in-ios-app-9f66085800b4
+
+APPS_PLUS_API_KEY = SoMeApIkEy
+APPS_PLUS_URL = https:/$()/url-to-api?apikey=$(APPS_PLUS_API_KEY)
+
+// Here $() prevents the // to be interpreted as comment, we suppose the URL has an apikey parameter and is GET only
+```
+
+And the entry for the _Info.plist_:
+
+```text
+ APPS_PLUS_URL
+ ${APPS_PLUS_URL}
+```
+
+Then in your code you can read the URL, get the locale, and forge the final URL to give to `ODSMoreAppsItemConfig`.
+We could have choosen this implemention deeper in the repository but wanted to let ODS lib users choose their own way to deal with the URL.
+
+```swift
+ private func buildAppsPlusURL() -> URL {
+ guard let appsPlusURL = Bundle.main.infoDictionary?["APPS_PLUS_URL"] else {
+ fatalError("No Apps Plus URL found in app settings")
+ }
+ let currentLocale = Bundle.main.preferredLocalizations[0]
+ let requestURL = "\(appsPlusURL)&lang=\(currentLocale)"
+ guard let feedURL = URL(string: requestURL) else {
+ fatalError("Failed to forge the service URL to get more apps")
+ }
+ return feedURL
+ }
+
+ // And then ODSRecirculationView(dataSource: .remote(url: buildAppsPlusURL()))
+```
+
+In some CI/CD chain like our GitLab CI runner, we can use a _Fastlane_ lane to read some previously environment variable and fill the _Info.Plist_ file in the suitable row.
diff --git a/docs/1.1.0/modules/recirculation_docs.md b/docs/1.1.0/modules/recirculation_docs.md
new file mode 100644
index 00000000..b1cb97c8
--- /dev/null
+++ b/docs/1.1.0/modules/recirculation_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: Recirculation
+content_page: recirculation.md
+---
+
diff --git a/docs/1.2.0/about/Cookies.md b/docs/1.2.0/about/Cookies.md
new file mode 100644
index 00000000..bbeca85f
--- /dev/null
+++ b/docs/1.2.0/about/Cookies.md
@@ -0,0 +1,7 @@
+---
+layout: detail
+title: "Cookies"
+description: Manage cookies preferences.
+---
+
+At any time, you can manage your cookies preferences for this website from the cookies management panel.
diff --git a/docs/1.2.0/about/Cookies_docs.md b/docs/1.2.0/about/Cookies_docs.md
new file mode 100644
index 00000000..d0a88dd9
--- /dev/null
+++ b/docs/1.2.0/about/Cookies_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: Cookies
+content_page: Cookies.md
+back-to-top: false
+---
diff --git a/docs/1.2.0/about/License.md b/docs/1.2.0/about/License.md
new file mode 100644
index 00000000..8eb48c99
--- /dev/null
+++ b/docs/1.2.0/about/License.md
@@ -0,0 +1,35 @@
+---
+layout: detail
+title: License
+description: Commonly asked questions about ODS iOS open source license.
+---
+
+## ODS iOS license
+
+ODS iOS is released under the MIT license and is copyright Orange SA, which is released under MIT license.
+
+## It requires you to:
+
+- Keep the license and copyright notice included in ODS iOS Swift files when you use them in your works
+
+## It permits you to:
+
+- Freely download and use ODS iOS, in whole or in part, for personal, private, company internal, or commercial purposes
+- Use ODS iOS in packages or distributions that you create
+- Modify the source code
+- Grant a sublicense to modify and distribute ODS iOS to third parties not included in the license
+
+## It forbids you to:
+
+- Hold the authors and license owners liable for damages as ODS iOS is provided without warranty
+- Hold the creators or copyright holders of ODS iOS liable
+- Redistribute any piece of ODS iOS without proper attribution
+- Use any marks owned by Orange SA in any way that might state or imply that Orange SA endorses your distribution
+- Use any marks owned by Orange SA in any way that might state or imply that you created the Orange SA software in question
+
+## It does not require you to:
+
+- Include the source of ODS iOS itself, or of any modifications you may have made to it, in any redistribution you may assemble that includes it
+- Submit changes that you make to ODS iOS back to its project (though such feedback is encouraged)
+
+For more information, the full ODS iOS license is located [in the project repository](https://github.com/Orange-OpenSource/ods-ios/blob/main/LICENSE).
diff --git a/docs/1.2.0/about/License_docs.md b/docs/1.2.0/about/License_docs.md
new file mode 100644
index 00000000..0948a327
--- /dev/null
+++ b/docs/1.2.0/about/License_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: License
+content_page: License.md
+back-to-top: false
+---
diff --git a/docs/1.2.0/about/Team.md b/docs/1.2.0/about/Team.md
new file mode 100644
index 00000000..28e0ca7c
--- /dev/null
+++ b/docs/1.2.0/about/Team.md
@@ -0,0 +1,29 @@
+---
+layout: detail
+title: Team
+description: An overview of the founding team and core contributors to ODS iOS.
+---
+
+ODS iOS is maintained by the core team and a small group of invaluable core contributors, with the support and involvement of our community.
+
+{% if page.version == "" %}
+{% assign key_suffix = "" %}
+{% else %}
+{% capture key_suffix %}_{{ page.version | replace: '.', '_' }}{% endcapture %}
+{% endif %}
+{% capture team_key %}team{{ key_suffix }}{% endcapture %}
+{% assign team = site.data[team_key] %}
+{% if team.ODS_iOS[0] %}
+
[Name of the organization] undertakes to make its websites internet, intranet, extranet and its mobile applications accessible in accordance with article 47 of Law No. 2005-102 of February 11, 2005.
+
To this end, it implements the following strategy and actions :
Pages which have been the subject of compliance verification
+
The verification audit was performed on the following pages using the Orange va11ydette:
+
+
+
Guidelines :
+
Components :
+
Modules :
+
About :
+
Guidelines-Colour :
+
Guidelines-Typography :
+
Guidelines-Spacing :
+
Components - Banner :
+
Components - Bars Navigation :
+
Components - Bars tools :
+
Components - Bars tabs :
+
Components - Button :
+
Components - Cards :
+
Components - Chips :
+
Components - Lists :
+
Components - Progress indicators :
+
Components - Sheets :
+
Components - Sliders :
+
Components - Text field :
+
Modules - List :
+
Modules - About :
+
Modules - Card collections :
+
+
+
+
+
+
+
Feedback and contact information
+
If you are unable to access content or a service, you can contact the site manager to be directed to an accessible alternative or obtain the content in another form.
+
+
We welcome your feedback on the accessibility of this site. Please let us know if you encounter accessibility problems by sending an email to XXX@orange.com.
+
+
+
+
+
+
+
+
+
Legal remedies
+
You have reported to the website manager an accessibility problem that prevents you from accessing content or one of the portal's services and you have not received a satisfactory response, in this case:
Or send a letter by post (free of charge, do not put a stamp) Défenseur des droits Libre réponse 71120 75342 Paris CEDEX 07
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/1.2.0/accessibilityStatement/orange-logo.svg b/docs/1.2.0/accessibilityStatement/orange-logo.svg
new file mode 100644
index 00000000..a0cd3f28
--- /dev/null
+++ b/docs/1.2.0/accessibilityStatement/orange-logo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/1.2.0/accessibilityStatement/pie.css b/docs/1.2.0/accessibilityStatement/pie.css
new file mode 100644
index 00000000..40b1478d
--- /dev/null
+++ b/docs/1.2.0/accessibilityStatement/pie.css
@@ -0,0 +1,236 @@
+.pie {
+ position: relative;
+ width: 200px;
+ height: 200px;
+ border-radius: 50%;
+ background: #eee;
+ background-image: linear-gradient(to right, transparent 50%, #F16E00 0);
+}
+
+.pie:after,
+.pie:before {
+ content: '';
+ position: absolute;
+ display: block;
+ margin-left: 50%;
+ width: 50%;
+ height: 100%;
+ border-radius: 0 100% 100% 0 / 50%;
+ background-color: inherit;
+ transform-origin: left;
+}
+
+.pie:after { background-color: #F16E00 }
+
+.pie-val {
+ position: absolute;
+ top: 15px;
+ bottom: 15px;
+ left: 15px;
+ right: 15px;
+ z-index: 2;
+ border-radius: 50%;
+ background-color: #fff;
+ padding-top: 25%;
+}
+
+.pie[data-value="1"]:before { transform: rotate(3.6deg) }
+.pie[data-value="1"]:after { display: none }
+.pie[data-value="2"]:before { transform: rotate(7.2deg) }
+.pie[data-value="2"]:after { display: none }
+.pie[data-value="3"]:before { transform: rotate(10.8deg) }
+.pie[data-value="3"]:after { display: none }
+.pie[data-value="4"]:before { transform: rotate(14.4deg) }
+.pie[data-value="4"]:after { display: none }
+.pie[data-value="5"]:before { transform: rotate(18deg) }
+.pie[data-value="5"]:after { display: none }
+.pie[data-value="6"]:before { transform: rotate(21.6deg) }
+.pie[data-value="6"]:after { display: none }
+.pie[data-value="7"]:before { transform: rotate(25.2deg) }
+.pie[data-value="7"]:after { display: none }
+.pie[data-value="8"]:before { transform: rotate(28.8deg) }
+.pie[data-value="8"]:after { display: none }
+.pie[data-value="9"]:before { transform: rotate(32.4deg) }
+.pie[data-value="9"]:after { display: none }
+.pie[data-value="10"]:before { transform: rotate(36deg) }
+.pie[data-value="10"]:after { display: none }
+.pie[data-value="11"]:before { transform: rotate(39.6deg) }
+.pie[data-value="11"]:after { display: none }
+.pie[data-value="12"]:before { transform: rotate(43.2deg) }
+.pie[data-value="12"]:after { display: none }
+.pie[data-value="13"]:before { transform: rotate(46.8deg) }
+.pie[data-value="13"]:after { display: none }
+.pie[data-value="14"]:before { transform: rotate(50.4deg) }
+.pie[data-value="14"]:after { display: none }
+.pie[data-value="15"]:before { transform: rotate(54deg) }
+.pie[data-value="15"]:after { display: none }
+.pie[data-value="16"]:before { transform: rotate(57.6deg) }
+.pie[data-value="16"]:after { display: none }
+.pie[data-value="17"]:before { transform: rotate(61.2deg) }
+.pie[data-value="17"]:after { display: none }
+.pie[data-value="18"]:before { transform: rotate(64.8deg) }
+.pie[data-value="18"]:after { display: none }
+.pie[data-value="19"]:before { transform: rotate(68.4deg) }
+.pie[data-value="19"]:after { display: none }
+.pie[data-value="20"]:before { transform: rotate(72deg) }
+.pie[data-value="20"]:after { display: none }
+.pie[data-value="21"]:before { transform: rotate(75.6deg) }
+.pie[data-value="21"]:after { display: none }
+.pie[data-value="22"]:before { transform: rotate(79.2deg) }
+.pie[data-value="22"]:after { display: none }
+.pie[data-value="23"]:before { transform: rotate(82.8deg) }
+.pie[data-value="23"]:after { display: none }
+.pie[data-value="24"]:before { transform: rotate(86.4deg) }
+.pie[data-value="24"]:after { display: none }
+.pie[data-value="25"]:before { transform: rotate(90deg) }
+.pie[data-value="25"]:after { display: none }
+.pie[data-value="26"]:before { transform: rotate(93.6deg) }
+.pie[data-value="26"]:after { display: none }
+.pie[data-value="27"]:before { transform: rotate(97.2deg) }
+.pie[data-value="27"]:after { display: none }
+.pie[data-value="28"]:before { transform: rotate(100.8deg) }
+.pie[data-value="28"]:after { display: none }
+.pie[data-value="29"]:before { transform: rotate(104.4deg) }
+.pie[data-value="29"]:after { display: none }
+.pie[data-value="30"]:before { transform: rotate(108deg) }
+.pie[data-value="30"]:after { display: none }
+.pie[data-value="31"]:before { transform: rotate(111.6deg) }
+.pie[data-value="31"]:after { display: none }
+.pie[data-value="32"]:before { transform: rotate(115.2deg) }
+.pie[data-value="32"]:after { display: none }
+.pie[data-value="33"]:before { transform: rotate(118.8deg) }
+.pie[data-value="33"]:after { display: none }
+.pie[data-value="34"]:before { transform: rotate(122.4deg) }
+.pie[data-value="34"]:after { display: none }
+.pie[data-value="35"]:before { transform: rotate(126deg) }
+.pie[data-value="35"]:after { display: none }
+.pie[data-value="36"]:before { transform: rotate(129.6deg) }
+.pie[data-value="36"]:after { display: none }
+.pie[data-value="37"]:before { transform: rotate(133.2deg) }
+.pie[data-value="37"]:after { display: none }
+.pie[data-value="38"]:before { transform: rotate(136.8deg) }
+.pie[data-value="38"]:after { display: none }
+.pie[data-value="39"]:before { transform: rotate(140.4deg) }
+.pie[data-value="39"]:after { display: none }
+.pie[data-value="40"]:before { transform: rotate(144deg) }
+.pie[data-value="40"]:after { display: none }
+.pie[data-value="41"]:before { transform: rotate(147.6deg) }
+.pie[data-value="41"]:after { display: none }
+.pie[data-value="42"]:before { transform: rotate(151.2deg) }
+.pie[data-value="42"]:after { display: none }
+.pie[data-value="43"]:before { transform: rotate(154.8deg) }
+.pie[data-value="43"]:after { display: none }
+.pie[data-value="44"]:before { transform: rotate(158.4deg) }
+.pie[data-value="44"]:after { display: none }
+.pie[data-value="45"]:before { transform: rotate(162deg) }
+.pie[data-value="45"]:after { display: none }
+.pie[data-value="46"]:before { transform: rotate(165.6deg) }
+.pie[data-value="46"]:after { display: none }
+.pie[data-value="47"]:before { transform: rotate(169.2deg) }
+.pie[data-value="47"]:after { display: none }
+.pie[data-value="48"]:before { transform: rotate(172.8deg) }
+.pie[data-value="48"]:after { display: none }
+.pie[data-value="49"]:before { transform: rotate(176.4deg) }
+.pie[data-value="49"]:after { display: none }
+.pie[data-value="50"]:before { transform: rotate(180deg) }
+.pie[data-value="50"]:after { display: none }
+.pie[data-value="51"]:after { transform: rotate(3.6deg) }
+.pie[data-value="51"]:before { display: none }
+.pie[data-value="52"]:after { transform: rotate(7.2deg) }
+.pie[data-value="52"]:before { display: none }
+.pie[data-value="53"]:after { transform: rotate(10.8deg) }
+.pie[data-value="53"]:before { display: none }
+.pie[data-value="54"]:after { transform: rotate(14.4deg) }
+.pie[data-value="54"]:before { display: none }
+.pie[data-value="55"]:after { transform: rotate(18deg) }
+.pie[data-value="55"]:before { display: none }
+.pie[data-value="56"]:after { transform: rotate(21.6deg) }
+.pie[data-value="56"]:before { display: none }
+.pie[data-value="57"]:after { transform: rotate(25.2deg) }
+.pie[data-value="57"]:before { display: none }
+.pie[data-value="58"]:after { transform: rotate(28.8deg) }
+.pie[data-value="58"]:before { display: none }
+.pie[data-value="59"]:after { transform: rotate(32.4deg) }
+.pie[data-value="59"]:before { display: none }
+.pie[data-value="60"]:after { transform: rotate(36deg) }
+.pie[data-value="60"]:before { display: none }
+.pie[data-value="61"]:after { transform: rotate(39.6deg) }
+.pie[data-value="61"]:before { display: none }
+.pie[data-value="62"]:after { transform: rotate(43.2deg) }
+.pie[data-value="62"]:before { display: none }
+.pie[data-value="63"]:after { transform: rotate(46.8deg) }
+.pie[data-value="63"]:before { display: none }
+.pie[data-value="64"]:after { transform: rotate(50.4deg) }
+.pie[data-value="64"]:before { display: none }
+.pie[data-value="65"]:after { transform: rotate(54deg) }
+.pie[data-value="65"]:before { display: none }
+.pie[data-value="66"]:after { transform: rotate(57.6deg) }
+.pie[data-value="66"]:before { display: none }
+.pie[data-value="67"]:after { transform: rotate(61.2deg) }
+.pie[data-value="67"]:before { display: none }
+.pie[data-value="68"]:after { transform: rotate(64.8deg) }
+.pie[data-value="68"]:before { display: none }
+.pie[data-value="69"]:after { transform: rotate(68.4deg) }
+.pie[data-value="69"]:before { display: none }
+.pie[data-value="70"]:after { transform: rotate(72deg) }
+.pie[data-value="70"]:before { display: none }
+.pie[data-value="71"]:after { transform: rotate(75.6deg) }
+.pie[data-value="71"]:before { display: none }
+.pie[data-value="72"]:after { transform: rotate(79.2deg) }
+.pie[data-value="72"]:before { display: none }
+.pie[data-value="73"]:after { transform: rotate(82.8deg) }
+.pie[data-value="73"]:before { display: none }
+.pie[data-value="74"]:after { transform: rotate(86.4deg) }
+.pie[data-value="74"]:before { display: none }
+.pie[data-value="75"]:after { transform: rotate(90deg) }
+.pie[data-value="75"]:before { display: none }
+.pie[data-value="76"]:after { transform: rotate(93.6deg) }
+.pie[data-value="76"]:before { display: none }
+.pie[data-value="77"]:after { transform: rotate(97.2deg) }
+.pie[data-value="77"]:before { display: none }
+.pie[data-value="78"]:after { transform: rotate(100.8deg) }
+.pie[data-value="78"]:before { display: none }
+.pie[data-value="79"]:after { transform: rotate(104.4deg) }
+.pie[data-value="79"]:before { display: none }
+.pie[data-value="80"]:after { transform: rotate(108deg) }
+.pie[data-value="80"]:before { display: none }
+.pie[data-value="81"]:after { transform: rotate(111.6deg) }
+.pie[data-value="81"]:before { display: none }
+.pie[data-value="82"]:after { transform: rotate(115.2deg) }
+.pie[data-value="82"]:before { display: none }
+.pie[data-value="83"]:after { transform: rotate(118.8deg) }
+.pie[data-value="83"]:before { display: none }
+.pie[data-value="84"]:after { transform: rotate(122.4deg) }
+.pie[data-value="84"]:before { display: none }
+.pie[data-value="85"]:after { transform: rotate(126deg) }
+.pie[data-value="85"]:before { display: none }
+.pie[data-value="86"]:after { transform: rotate(129.6deg) }
+.pie[data-value="86"]:before { display: none }
+.pie[data-value="87"]:after { transform: rotate(133.2deg) }
+.pie[data-value="87"]:before { display: none }
+.pie[data-value="88"]:after { transform: rotate(136.8deg) }
+.pie[data-value="88"]:before { display: none }
+.pie[data-value="89"]:after { transform: rotate(140.4deg) }
+.pie[data-value="89"]:before { display: none }
+.pie[data-value="90"]:after { transform: rotate(144deg) }
+.pie[data-value="90"]:before { display: none }
+.pie[data-value="91"]:after { transform: rotate(147.6deg) }
+.pie[data-value="91"]:before { display: none }
+.pie[data-value="92"]:after { transform: rotate(151.2deg) }
+.pie[data-value="92"]:before { display: none }
+.pie[data-value="93"]:after { transform: rotate(154.8deg) }
+.pie[data-value="93"]:before { display: none }
+.pie[data-value="94"]:after { transform: rotate(158.4deg) }
+.pie[data-value="94"]:before { display: none }
+.pie[data-value="95"]:after { transform: rotate(162deg) }
+.pie[data-value="95"]:before { display: none }
+.pie[data-value="96"]:after { transform: rotate(165.6deg) }
+.pie[data-value="96"]:before { display: none }
+.pie[data-value="97"]:after { transform: rotate(169.2deg) }
+.pie[data-value="97"]:before { display: none }
+.pie[data-value="98"]:after { transform: rotate(172.8deg) }
+.pie[data-value="98"]:before { display: none }
+.pie[data-value="99"]:after { transform: rotate(176.4deg) }
+.pie[data-value="99"]:before { display: none }
+.pie[data-value="100"]:after { transform: rotate(180deg) }
+.pie[data-value="100"]:before { display: none }
diff --git a/docs/1.2.0/accessibilityStatement/style.css b/docs/1.2.0/accessibilityStatement/style.css
new file mode 100644
index 00000000..dd162300
--- /dev/null
+++ b/docs/1.2.0/accessibilityStatement/style.css
@@ -0,0 +1,117 @@
+body {
+ font-family: "Arial";
+ color: #000000;
+ background: #eee;
+ margin: 0;
+}
+
+.content {
+ background-color: #fff;
+ padding-bottom: 3em;
+}
+
+em {
+ color: #e00;
+ font-weight: bold;
+ font-style: normal;
+}
+
+.underover {
+ text-decoration: underline overline #FF3028;
+}
+
+.lead {
+ font-weight: bold;
+}
+
+.row > [class*="col-"] {
+ padding-right: 30px;
+ padding-left: 30px;
+}
+
+h1 {
+ background-image: url(orange-logo.svg);
+ background-size: 3.5rem 3.5rem;
+ background-repeat: no-repeat;
+ background-position: 1rem 1.5rem;
+ margin: 0;
+ padding: 2rem 2rem 2rem 8rem;
+}
+
+h2 {
+ font-size: 1.2em;
+ margin-top: 3rem;
+}
+
+.summary h4 {
+ text-align: center;
+ font-size: 1em;
+ border-bottom: 0;
+}
+
+.summary h4 span {
+ font-size: 3em;
+}
+
+.pie-noncompliant{
+ font-size: 1.75em !important;
+}
+
+h3 {
+ margin-top: 1.5rem;
+ font-size: 1em;
+}
+
+.table-responsive{
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+table {
+ width: 100%;
+ margin-bottom: 1.25rem;
+ border-collapse: collapse;
+ text-align: center;
+ overflow-x:auto;
+}
+
+
+table tr {
+ border-bottom: 1px solid #ccc;
+}
+
+table th {
+ font-size: .875rem;
+ font-weight: bold;
+ padding: .5rem;
+}
+
+table td {
+ padding: .5rem;
+ font-size: .875rem;
+ line-height: 1rem;
+}
+
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap; /* added line */
+ border: 0;
+}
+
+.visually-hidden {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap; /* added line */
+ border: 0;
+}
\ No newline at end of file
diff --git a/docs/1.2.0/components/banners.md b/docs/1.2.0/components/banners.md
new file mode 100644
index 00000000..68a05df0
--- /dev/null
+++ b/docs/1.2.0/components/banners.md
@@ -0,0 +1,136 @@
+---
+layout: detail
+title: Banners
+description: A banner displays an important message which requires an action to be dismissed.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+A banner displays an important, succinct message, and provides actions for users to address (or dismiss the banner). It requires a user action to be dismissed.
+
+Banners should be displayed at the top of the screen, below a top app bar. They’re persistent and nonmodal, allowing the user to either ignore them or interact with them at any time. Only one banner should be shown at a time
+
+![Banner light](images/banner-light.png)
+![Banner dark](images/banner-dark.png)
+
+## Specifications references
+
+- [Design System Manager - Banners](https://system.design.orange.com/0c1af118d/p/85a52b-components/b/1497a4)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+### Two buttons
+
+Button are placed under the text.
+
+#### SwiftUI examples
+
+- Without image
+
+```swift
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.") {
+ Button("Button 1") {
+ // your action here
+ }
+} secondButton: {
+ Button("Button 1") {
+ // your action here
+ }
+}
+```
+
+- With image from resourcess
+
+```swift
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods))) {
+ Button("Button 1") {
+ // your action here
+ }
+} secondButton: {
+ Button("Button 1") {
+ // your action here
+ }
+}
+```
+
+
+- With image from URL
+
+```swift
+
+let placeholder = Image("placeholder", bundle: Bundle.ods)
+let url = URL(string: "https://images.unsplash.com/photo-1615735487485-e52b9af610c1?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=774&q=80")
+
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.",
+ imageSource: .asyncImage(url, placeholder)) {
+ Button("Button 1") {
+ // your action here
+ }
+} secondButton: {
+ Button("Button 1") {
+ // your action here
+ }
+}
+```
+
+#### ODSBanner API
+
+| Parameter | Default value | Description |
+|-------------------------------- |---------------------|------------------------------------------------------------------------------- |
+| `text: Text` | | Text displayed into the banner. |
+| `imageSource: ODSImage.Source?` | `nil` | Image displayed in the banner in a circle shape. |
+| `firstButton: Button` | | Primary (leading) button displayed in the banner. |
+| `secondButton: Button` | | Secondary (trailing) button displayed into the banner next to the primary one. |
+
+### One button
+
+The button is placed under the text.
+
+#### SwiftUI example
+
+```swift
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods))) {
+ Button("Button") {
+ // your action here
+ }
+}
+```
+
+#### ODSBanner API
+
+| Parameter | Default value | Description |
+|---------------------------------|--------------------|--------------------------------------------------|
+| `text: Text` | | Text displayed into the banner. |
+| `imageSource: ODSImage.Source?` | `nil` | Image displayed in the banner in a circle shape. |
+| `button: Button` | | Primary button displayed in the banner. |
+
+
+### No button
+
+#### SwiftUI example
+
+```swift
+ODSBanner(text: "One to two lines is preferable on mobile and tablet.",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)))
+```
+
+#### ODSBanner API
+
+| Parameter | Default value | Description |
+|---------------------------------|--------------------|--------------------------------------------------|
+| `text: Text` | | Text displayed into the banner. |
+| `imageSource: ODSImage.Source?` | `nil` | Image displayed in the banner in a circle shape. |
+
diff --git a/docs/1.2.0/components/banners_docs.md b/docs/1.2.0/components/banners_docs.md
new file mode 100644
index 00000000..9d720197
--- /dev/null
+++ b/docs/1.2.0/components/banners_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Banners
+content_page: banners.md
+---
diff --git a/docs/1.2.0/components/barsNavigation.md b/docs/1.2.0/components/barsNavigation.md
new file mode 100644
index 00000000..79ae42da
--- /dev/null
+++ b/docs/1.2.0/components/barsNavigation.md
@@ -0,0 +1,104 @@
+---
+layout: detail
+title: Bars - navigation
+description: Navigation bar with Orange branding
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Bars: navigation](https://system.design.orange.com/0c1af118d/p/34094d-bars-navigation/b/419eb1)
+- [Apple guideline - Navigation bars](https://developer.apple.com/design/human-interface-guidelines/components/navigation-and-search/navigation-bars/)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Standard navigation bar
+
+![Navigation bar standard light](images/bars_navigation_standard_light.png)
+![Navigation bar standard dark](images/bars_navigation_standard_dark.png)
+
+When using a navigation view, basic navigation is using 'inline' display mode by default.
+
+```swift
+NavigationView {
+ NavigationLink(destination: Text("destination")) {
+ Text("Main view")
+ }
+ .navigationBarTitle("Standard", displayMode: .inline)
+}
+
+```
+
+## Navigation bar with large title
+
+![Navigation bar large light](images/bars_navigation_large_light.png)
+![Navigation bar large dark](images/bars_navigation_large_dark.png)
+
+Use 'large' display mode to enable large titles when scrolling up.
+
+```swift
+NavigationView {
+ NavigationLink(destination: Text("destination")) {
+ Text("Main view")
+ }
+ .navigationBarTitle("Standard", displayMode: .large)
+}
+
+```
+
+## Navigation bar with search bar
+
+![Navigation bar search light](images/bars_navigation_search_light.png)
+![Navigation bar search dark](images/bars_navigation_search_dark.png)
+
+
+Use .searchable modifier to add a search bar in the navigation view.
+
+```swift
+@State var searchQuery = ""
+
+NavigationView {
+ NavigationLink(destination: Text("destination")) {
+ Text("Main view")
+ }
+ .navigationBarTitle("With search bar", displayMode: .inline)
+ .searchable(text: $searchQuery, placement: .navigationBarDrawer(displayMode: .always))
+}
+
+```
+
+## Navigation bar with action item
+
+![Navigation bar items light](images/bars_navigation_items_light.png)
+![Navigation bar items dark](images/bars_navigation_items_dark.png)
+
+You can add one or several buttons (trailing or leading) in the navigation view by using .toolbar modifier
+
+```swift
+NavigationView {
+ NavigationLink(destination: Text("destination")) {
+ Text("Main view")
+ }
+ .navigationBarTitle("Standard", displayMode: .inline)
+ .toolbar {
+ ToolbarItem(placement: .navigationBarTrailing) {
+ Button {
+ print("item action")
+ } label: {
+ Image(systemName: "ant.circle")
+ }
+ }
+ }
+}
+
+```
diff --git a/docs/1.2.0/components/barsNavigation_docs.md b/docs/1.2.0/components/barsNavigation_docs.md
new file mode 100644
index 00000000..11493173
--- /dev/null
+++ b/docs/1.2.0/components/barsNavigation_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Bars - navigation
+content_page: barsNavigation.md
+---
diff --git a/docs/1.2.0/components/barsTab.md b/docs/1.2.0/components/barsTab.md
new file mode 100644
index 00000000..2b95ab3c
--- /dev/null
+++ b/docs/1.2.0/components/barsTab.md
@@ -0,0 +1,57 @@
+---
+layout: detail
+title: Bars - tab
+description: Tab bars with Orange branding
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Bars: tab](https://system.design.orange.com/0c1af118d/p/08dab8-bars-tab/b/778ed0)
+- [Apple guideline - Tab bars](https://developer.apple.com/design/human-interface-guidelines/components/navigation-and-search/tab-bars/)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Standard tab bar
+
+![Tab bar light](images/bars_tab_light.png)
+![Tab bar dark](images/bars_tab_dark.png)
+
+Tab bar is a standard iOS component. It uses bar items to navigate between views.
+Bar Item contains an icon and a title.
+An additonal badge can be also added with a count value or a text.
+
+Example with 4 bar items :
+
+```swift
+TabView {
+ GuidelinesList()
+ .tabItem {
+ Label("Guidelines", image: "Guideline-DNA_32")
+ }
+ .badge("Text")
+ ComponentsList()
+ .tabItem {
+ Label("Components", image: "component-atom_32")
+ }
+ ModulesList()
+ .tabItem {
+ Label("Modules", image: "Module-molecule_32")
+ }
+ .badge(10)
+ ODSDemoAboutView()
+ .tabItem {
+ Label("About", image: "info_32")
+ }
+}
+```
diff --git a/docs/1.2.0/components/barsTab_docs.md b/docs/1.2.0/components/barsTab_docs.md
new file mode 100644
index 00000000..9ae1d60d
--- /dev/null
+++ b/docs/1.2.0/components/barsTab_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: Bars - tab
+content_page: barsTab.md
+back-to-top: false
+---
diff --git a/docs/1.2.0/components/barsTool.md b/docs/1.2.0/components/barsTool.md
new file mode 100644
index 00000000..f0c848c0
--- /dev/null
+++ b/docs/1.2.0/components/barsTool.md
@@ -0,0 +1,162 @@
+---
+layout: detail
+title: Bars - tool
+description: Tool bars with Orange branding
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Bars: tool](https://system.design.orange.com/0c1af118d/p/06c413-bars-tool/b/951e5c)
+- [Apple guideline - Tool bars](https://developer.apple.com/design/human-interface-guidelines/ios/bars/toolbars/)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+A tool bar allows users to do specific actions regarding the entire page. It is placed at the bottom of the screen. It can display 2 to 5 icon controls or 2 to 3 label entries.
+
+### With label items
+
+![tool bar labels light](images/bars_tool_labels_light.png) ![tool bar labels dark](images/bars_tool_labels_dark.png)
+
+A tool bar can display 2 to 3 label entries.
+
+Example with 3 label entries in toolBar :
+
+```swift
+
+let description1 = ODSToolbarLabelDesription(text: "Action 1") { }
+let description2 = ODSToolbarLabelDesription(text: "Action 2") { }
+let description3 = ODSToolbarLabelDesription(text: "Action 3") { }
+
+let labelItems = ODSToolbarLabeledItems(description1: description1,
+ description2: description2,
+ description3: description3)
+NavigationView {
+ ContentView()
+ .navigationBarTitle("", displayMode: .inline)
+ .navigationBarHidden(true)
+ .odsToolBar(items: labelItems)
+}
+
+// To remove navigation bar, use following modifiers
+// .navigationBarHidden(true)
+
+```
+
+#### odsToolBar Modifier API
+
+| Parameter | Default value | Description |
+|---------------------------------|--------------------|---------------------------------------|
+| `items: ODSToolbarLabeledItems` | | Text items displayed into the banner. |
+
+
+#### ODSToolbarLabeledItems API
+
+| Parameter | Default value | Description |
+|-------------------------------------------|--------------------|---------------------------------------------------- |
+| `description1: ODSToolbarLabelDesription` | | Primary description of item in tool bar |
+| `description2: ODSToolbarLabelDesription` | | Secondary description of item in tool bar |
+| `description3: ODSToolbarLabelDesription?`| `nil` | Terciary (optional) description of item in tool bar |
+
+#### ODSToolbarLabelDesriptionF API
+
+| Parameter | Default value | Description |
+|--------------------------------|--------------------|-----------------------------|
+| `text: String | | Text displayed in the item |
+| `action: @escaping () -> Void` | | Action when item is clicked |
+
+
+### With icon items
+
+![tool bar icons light](images/bars_tool_icons_light.png) ![tool bar icons dark](images/bars_tool_icons_dark.png)
+
+A tool bar can display 2 to 5 icon controls
+```swift
+
+let description1 = ODSToolbarIconDesription(systemName: "plus") { }
+let description2 = ODSToolbarIconDesription(systemName: "square.and.arrow.up") { }
+let description3 = ODSToolbarIconDesription(systemName: "square.and.pencil") { }
+let description4 = ODSToolbarIconDesription(systemName: "folder") { }
+let description5 = ODSToolbarIconDesription(systemName: "trash") { }
+
+let iconItems = ODSToolbarIconsItems(description1: description1,
+ description2: description2,
+ description3: description3,
+ description4: description4,
+ description5: description5)
+NavigationView {
+ ContentView()
+ .navigationBarTitle("", displayMode: .inline)
+ .navigationBarHidden(true)
+ .odsToolBar(items: iconItems)
+}
+
+// To remove navigation bar, use following modifiers
+// .navigationBarHidden(true)
+
+```
+
+#### odsToolBar Modifier API
+
+| Parameter | Default value | Description |
+|------------------------------|----------------|---------------------------------------|
+| `items: ODSToolbarIconItems` | | Icon items displayed into the banner. |
+
+
+#### ODSToolbarIconsItems API
+
+| Parameter | Default value | Description |
+|------------------------------------------|---------------|----------------------------------------------------|
+| `description1: ODSToolbarIconDesription` | | First description of item in tool bar |
+| `description2: ODSToolbarIconDesription` | | Second description of item in tool bar |
+| `description3: ODSToolbarIconDesription?`| `nil` | Third (optional) description of item in tool bar |
+| `description4: ODSToolbarIconDesription?`| `nil` | Fourth (optional) description of item in tool bar |
+| `description5: ODSToolbarIconDesription?`| `nil` | Fifth (optional) description of item in tool bar |
+
+
+#### ODSToolbarIconDesription API
+
+| Parameter | Default value | Description |
+|--------------------------------|---------------|-----------------------------|
+| `systemName: String | | System name of the image |
+| `action: @escaping () -> Void` | | Action when item is clicked |
+
+
+
+## Remarks
+
+As toolbar colors depends on theme, don't forget to add it to enviroment and call the view modifier __.toolBarColors(for:)__ to apply colors provided by the theme.
+
+Two solutions:
+
+- Directy on the root view
+
+```swift
+let theme = YourTheme()
+
+ContentViewWithToolBar()
+.environment(\.theme, theme)
+.toolBarColors(for: theme)
+```
+
+- Or using __ODSThemeableView__ view as a root view:
+
+```swift
+let theme = YourTheme()
+
+ODSThemeableView(theme: yourTheme) {
+ ContentViewWithToolBar()
+}
+```
diff --git a/docs/1.2.0/components/barsTool_docs.md b/docs/1.2.0/components/barsTool_docs.md
new file mode 100644
index 00000000..a20e98aa
--- /dev/null
+++ b/docs/1.2.0/components/barsTool_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Bars - tool
+content_page: barsTool.md
+---
diff --git a/docs/1.2.0/components/buttons.md b/docs/1.2.0/components/buttons.md
new file mode 100644
index 00000000..e37ef536
--- /dev/null
+++ b/docs/1.2.0/components/buttons.md
@@ -0,0 +1,164 @@
+---
+layout: detail
+title: Buttons
+description: A button allows a user to perform an action or to navigate to another page. It contains a text label and a supporting icon can be displayed.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Buttons](https://system.design.orange.com/0c1af118d/p/278734-buttons-shape/b/536b5f)
+- [Apple guideline - Buttons](https://developer.apple.com/design/human-interface-guidelines/components/menus-and-actions/buttons)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+### Emphasis button
+
+Button variants range in style to denote emphasis. Use different styles and not size to show the preferred choice.
+
+- **Layout**
+
+**Large**
+
+![Buttons high emphasis disabled](images/buttons_layout_large_with_icon.png)
+
+![Buttons high emphasis](images/buttons_layout_large_without_icon.png)
+
+**Small**
+
+![Buttons high emphasis disabled](images/buttons_layout_small_with_icon.png)
+
+![Buttons high emphasis](images/buttons_layout_small_without_icon.png)
+
+
+- **Emphasis**
+
+**High emphasis**
+
+![Buttons high emphasis disabled](images/buttons_functionnal_disabled.png)
+![Buttons high emphasis](images/buttons_emphasis_high.png)
+
+**Medium**
+
+![Buttons medium emphasis disabled](images/buttons_functionnal_disabled.png)
+![Buttons medium emphasis](images/buttons_emphasis_medium.png)
+
+**Low emphasis**
+
+![Buttons low emphasis disabled](images/buttons_functionnal_disabled.png)
+![Buttons low emphasis](images/buttons_emphasis_low.png)
+
+**Lowest emphasis**
+
+![Buttons lowest emphasis disabled](images/buttons_emphasis_lowest_disabled.png)
+![Buttons lowest emphasis](images/buttons_emphasis_lowest.png)
+
+#### SwiftUI example
+
+```swift
+// High emphasis
+ODSButton(text: Text("Some text"),
+ image: Image("Add"),
+ emphasis: .high) {}
+
+// Lowest emphasis
+ODSButton(text: Text("Some text"),
+ image: Image("Add"),
+ emphasis: .lowest) {}
+```
+
+#### ODSButton API
+
+| Parameter | Default value | Description |
+|-----------------------------|--------------------|-----------------------------------------------------------------------------------|
+| `text: Text` | | Text displayed into the banner. |
+| `image: Image?` | `nil` | Icon displayed in the button before the text. |
+| `emphasis: Emphasis` | | The button's emphasis'. |
+| `fullWidth: Bool` | `false` | Defines the size of the button layout. Set to `true` means button takes all available space horizontally. Set to `false`, the size of the button is limited to the size of the text added by a padding round it.
+| `action: () -> Void` | | Callback invoked on button click. |
+
+
+
+### Functional button
+
+If required, colour versions can also be used to inform users of positive or negative destructive actions.
+
+**Positive**
+
+![Buttons functional positive disabled](images/buttons_functionnal_disabled.png)
+![Buttons functional positive](images/buttons_functional_positive.png)
+
+**Negative**
+
+![Buttons functional negative disabled](images/buttons_functionnal_disabled.png)
+![Buttons functional negative](images/buttons_functional_negative.png)
+
+#### SwiftUI example
+
+```swift
+ // Negative button
+ ODSFunctionalButton(text: Text("Some text"), style: .negative)
+ { /* action: Do something */ }
+
+ ODSFunctionalButton(text: Text("Some text"), image: Image("Add"), style: .negative)
+ { /* action: Do something */ }
+
+ // Positive button
+ ODSFunctionalButton(text: Text("Some text") style: .positive)
+ { /* action: Do something */ }
+
+ ODSFunctionalButton(text: Text("Some text"), image: Image("Add"), style: .positive)
+ { /* action: Do something */ }
+
+ // To disable the button
+ ODSFunctionalButton(text: Text("Some text"), style: .positive) { /* action: Do something */ }
+ .disabled(true)
+```
+
+#### ODSFunctionalButton API
+
+
+| Parameter | Default value | Description |
+|-------------------------------------------|--------------------|-----------------------------------------------------------------------------------|
+| `text: Text` | | Text displayed into the banner. |
+| `image: Image?` | `nil` | Icon displayed in the button before the text. |
+| `style: ODSFunctionalButton.Style` | | Controls the style of the button. Use `ODSFunctionalButton.Style.positive`/`ODSFunctionalButton.Style.negative` to get a green/red button.
+| `fullWidth: Bool` | `false` | Defines the size of the button layout. Set to `true` means button takes all available space horizontally. Set to `false`, the size of the button is limited to the size of the text added by a padding round it.
+| `action: () -> Void` | | Callback invoked on button click. |
+
+
+
+### Icon button
+
+Plain buttons are the most ubiquitous component found throughout applications. Consisting an icon, they are the most simple button style.
+
+![Buttons icon](images/buttons_icon.png)
+
+#### SwiftUI example
+
+```swift
+// icon with system asset
+ODSIconButton(image: Image(systemName: "info.circle")) {}
+
+// icon with Solaris asset
+ODSIconButton(image: Image("Add")) {}
+```
+
+#### ODSIconButton API
+
+| Parameter | Default value | Description |
+|-----------------------------|---------------|-----------------------------------|
+| `image: Image` | | Icon displayed in the button. |
+| `action: () -> Void` | | Callback invoked on button click. |
diff --git a/docs/1.2.0/components/buttons_docs.md b/docs/1.2.0/components/buttons_docs.md
new file mode 100644
index 00000000..085cbe10
--- /dev/null
+++ b/docs/1.2.0/components/buttons_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Buttons
+content_page: buttons.md
+---
diff --git a/docs/1.2.0/components/cards.md b/docs/1.2.0/components/cards.md
new file mode 100644
index 00000000..056ccef4
--- /dev/null
+++ b/docs/1.2.0/components/cards.md
@@ -0,0 +1,273 @@
+---
+layout: detail
+title: Cards
+description: Cards contain content and actions about a single subject.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Cards](https://system.design.orange.com/0c1af118d/p/66bac5-cards/b/1591fb)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+Images in cards are considered as decorative, so they are ignored by Voice Over.
+
+## Variants
+
+Cards are a contained and independent element that can display content and actions on a single topic.
+
+There are a few ways cards can be presented. Ranging from a single title on its own for a simple card view or with more information shown in a subtitle and supporting text and actions at the bottom of the card.
+
+
+### Vertical Image First Card
+
+This is a full width card displayed with an image as first element.
+
+This card is composed of two parts:
+- Media: (today an image)
+- Content: with a title, an optional subtitle an optional supporting text and optional buttons (zero up to two)
+
+![Vertical image first card light](images/card_vertical_image_first_light.png) ![Vertical image first card dark](images/card_vertical_image_first_dark.png)
+
+#### SwiftUI example
+
+Card is configured like this:
+
+```swift
+ODSCardVerticalImageFirst(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: Text("Subtitle"),
+ text: Text("A supporting text to describe something")
+) {
+ Button("Button 1") {
+ // do something here
+ }
+} secondButton: {
+ Button("Button 2") {
+ // do something here
+ }
+}
+```
+
+#### ODSCardVerticalImageFirst API
+
+| Parameter | Default value | Description |
+|-------------------------------------|--------------------|-----------------------------------------------------------------------------------|
+| `title: Text` | | Title displayed into the card. |
+| `imageSource: ODSImage.Source` | | Image displayed in the card. |
+| `subtitle: Text?` | `nil` | Subtitle (optional) displayed into the card. |
+| `text: Text` | `nil` | Text (optional) displayed into the card. |
+| `firstButton: Button` | | Primary (leading) button displayed in the card. |
+| `secondButton: Button` | | Secondary (trailing) button displayed into the card next to the first one. |
+
+**Remarks:**
+- To get a card without button, use the right initializer without `firstButton` and `secondButton`.
+- To handle action when card is clicked, add it into a `Button` or in `NnavigationLink` or add a `.onTapGesture` modifier.
+
+
+### Vertical Header First Card
+
+This is a full width card displaying with a title and a thumbnail on top as first element.
+
+This card is composed of three parts:
+- Header: with a title, an optional subtitle and an optional thmubnail
+- Media: (today an image)
+- Content: with an optional supporting text and optional buttons (zero up to two)
+
+![Vertical header first card light](images/card_vertical_header_first_light.png) ![Vertical header first card dark](images/card_vertical_header_first_dark.png)
+
+#### SwiftUI example
+
+Card is configured like this:
+
+```swift
+
+ODSCardVerticalHeaderFirst(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: Text("Subtitle"),
+ thumbnailSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ text: Text("A supporting text to describe something")
+) {
+ Button("Button 1") {
+ // do something here
+ }
+} secondButton: {
+ Button("Button 2") {
+ // do something here
+ }
+}
+```
+
+#### ODSCardVerticalHeaderFirst API
+
+| Parameter | Default value | Description |
+|-------------------------------------|------------------- |-----------------------------------------------------------------------------------|
+| `title: Text` | | Title displayed into the card. |
+| `imageSource: ODSImage.Source` | | Image displayed in the card. |
+| `subtitle: Text?` | `nil` | Subtitle (optional) displayed into the card. |
+| `thumbnailSource: ODSImage.Source?` | `nil` | Thumbnail displayed into the card next to the title: avatar, logo or icon. |
+| `text: Text` | `nil` | Text (optional) displayed into the card. |
+| `firstButton: Button` | | Primary (leading) button displayed in the card. |
+| `secondButton: Button` | | Secondary (trailing) button displayed into the card next to the first one. |
+
+**Remarks:**
+- To get a card without button, use the right initializer without `firstButton` and `secondButton`.
+- To handle action when card is clicked, add it into a `Button` or in `NnavigationLink` or add a `.onTapGesture` modifier.
+
+
+### Horizontal Card
+
+This is a full width card displaying with image on left and content with texts on the right. Additonal action buttons can be added at the bottom of the card.
+
+Thes content is composed by:
+- a title
+- an optional subtitle
+- an optional text for larger description
+
+![Horizontal card light](images/card_horizontal_light.png) ![Horizontal card dark](images/card_horizontal_dark.png)
+
+#### SwiftUI example
+
+Card is configured like this:
+
+```swift
+ODSCardHorizontal(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ imagePosition: .leading,
+ subtitle: Text("Subtitle"),
+ text: Text("A supporting text to describe something")
+) {
+
+ Button("Button 1") {
+ // do something here
+ }
+} secondButton : {
+ Button("Button 1") {
+ // do something here
+ }
+}
+```
+
+#### ODSCardHorizontal API
+
+| Parameter | Default value | Description |
+|-------------------------------------|--------------------|-----------------------------------------------------------------------------------|
+| `title: Text` | | Title displayed into the card. |
+| `imageSource: ODSImage.Source` | | Image displayed in the card. |
+| `imagePosition: Self.ImagePosition` | `.leading` | The side where image is placed. |
+| `subtitle: Text?` | `nil` | Subtitle (optional) displayed into the card. |
+| `text: Text` | `nil` | Text (optional) displayed into the card. |
+| `firstButton: Button` | | Primary (leading) button displayed in the card. |
+| `secondButton: Button` | | Secondary (trailing) button displayed into the card next to the first one. |
+
+**Remarks:**
+- To get a card without button, use the right initializer without `firstButton` and `secondButton`.
+- To handle action when card is clicked, add it into a `Button` or in `NnavigationLink` or add a `.onTapGesture` modifier.
+
+
+### Small Card
+
+The small card if prefered for two-column portrait mobile screen display.
+As it is smaller than full-width cards, it contains only title and subtitle (optional) in one line (Truncated tail).
+
+![Small card light](images/card_small_light.png) ![Small card dark](images/card_small_dark.png)
+
+#### SwiftUI example
+
+Card is configured like this:
+
+```swift
+ODSCardSmall(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: Text("Subtitle")
+)
+```
+
+#### ODSCardSmall API
+
+| Parameter | Default value | Description |
+|-------------------------------------|--------------------|------------------------------------------------------------------------------------|
+| `title: Text` | | Title displayed into the card. |
+| `imageSource: ODSImage.Source` | | Image displayed in the card. |
+| `subtitle: Text?` | `nil` | Subtitle (optional) displayed into the card. |
+| `titleAccessibleLineLimit: Int?` | `nil` | The line limit to apply to the title if size category is accessibility category |
+| `subtitleAccessibleLineLimit: Int?` | `nil` | The line limit to apply to the subtitle if size category is accessibility category |
+
+**Remark:**
+- To handle action when card is clicked, add it into a `Button` or in `NnavigationLink` or add a `.onTapGesture` modifier.
+
+
+#### How to add Small Card in Grid
+
+```swift
+class Model {
+ let title: String
+ let subtitle: String?
+ let imageSource: ODSImage.Source
+
+ init(title: String, imageSource: ODSImage.Source, subtitle: String? = nil) {
+ self.title = title
+ self.imageSource = imageSource
+ self.subtitle = subtitle
+ }
+}
+
+
+let models = [
+ Model(
+ title: "Title 1",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: "Subtitle 1"
+ )
+ Model(
+ title: "Title 2",
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: "Subtitle 2"
+ )
+ //...
+]
+
+/// /!\ Don't forget to put the grid into a scrollview
+ScrollView {
+ LazyVGrid(columns: columns, spacing: ODSSpacing.none) {
+ ForEach(models, id:\.title) { model in
+ ODSCardSmall(
+ title: Text(model.title),
+ imageSource: model.imageSource,
+ subtitle: Text(model.subtitle)
+ )
+ }
+ }
+ .padding(.all, ODSSpacing.m)
+}
+
+```
+
+However for accessibility edge cases, like when text sizes are accessibility sizes, the behaviour is different for such components. They won't be displayed in one truncated line because the text will be too truncated and difficult to read.
+If this choice is too impacting for your UI, it is possible to define the limit number of lines to use if a11y size are used
+
+```swift
+ODSCardSmall(
+ title: Text("Title"),
+ imageSource: .image(Image("placeholder", bundle: Bundle.ods)),
+ subtitle: Text("Subtitle"),
+ // Here 3 is the number of lines you want for such edge cases
+ titleAccessibleLineLimit: 3,
+ subtitleAccessibleLineLimit: 3
+)
+```
diff --git a/docs/1.2.0/components/cards_docs.md b/docs/1.2.0/components/cards_docs.md
new file mode 100644
index 00000000..193969dd
--- /dev/null
+++ b/docs/1.2.0/components/cards_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Cards
+content_page: cards.md
+---
diff --git a/docs/1.2.0/components/chips.md b/docs/1.2.0/components/chips.md
new file mode 100644
index 00000000..65ebb912
--- /dev/null
+++ b/docs/1.2.0/components/chips.md
@@ -0,0 +1,227 @@
+---
+layout: detail
+title: Chips
+description: Chips are compact elements that represent an input, attribute, or action.
+---
+
+---
+
+**Page summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager](https://system.design.orange.com/0c1af118d/p/85a52b-components/b/1497a4)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+Chips support dynamic types for accessibility.
+
+Chips support content labeling for accessibility and are readable by most screen readers. Text rendered in chips is automatically provided to accessibility services. Additional content labels are usually unnecessary.
+
+## Variants
+
+### Action chip
+
+Action chips offer actions related to primary content. They should appear dynamically and contextually in a UI.
+An alternative to action chips are buttons, which should appear persistently and consistently.
+
+![Light action chip](images/chips_action_light.png)
+![Dark action chip](images/chips_action_dark.png)
+
+#### SwiftUI example
+
+``` swift
+ODSActionChip(
+ text: Text("chip text"),
+ Image(systemname: "heart")
+ action: { doSomething() }
+)
+```
+
+
+#### ODSActionChip API
+
+| Parameter | Default value | Description |
+|-----------------------------|--------------------|---------------------------------------------------------------------------------------------|
+| `text: Text` | | Text to be displayed into the chip. |
+| `leadingIcon: Image?` | `nil` | Optional leading icon to be displayed at the start of the chip, preceding the content text. |
+| `action: () -> Void` | | The action when chip is clicked. |
+
+**Remarks:**
+- To disable the chip call the `.disabled` on View.
+
+
+### Input chip
+
+Input chips represent a complex piece of information in compact form, such as an entity (person, place, or thing) or text. They enable user input and verify that input by converting text into chips.
+
+![Light input chip](images/chips_input_light.png)
+![Dark input chip](images/chips_input_dark.png)
+
+#### SwiftUI example
+
+``` swift
+// Input chip with leading filled with icon or image for resources
+
+ODSInputChip(
+ text: Text(vhip text),
+ leadingAvatar: .image(Image("Avatar")),
+ action: { doSomething() },
+ removeAction: { doSomething() }
+)
+```
+
+#### ODSInputChip API
+
+| Parameter | Default value | Description |
+|-----------------------------------|--------------------|-----------------------------------------------------------------------------------------------------------------|
+| `text: Text` | | Text to be displayed into the chip. |
+| `leadingAvatar: ODSImage.Source?` | `nil` | Optional leading avatar to be displayed in a circle shape at the start of the chip, preceding the content text. |
+| `action: () -> Void` | | The action when chip is clicked. |
+| `removeAction: () -> Void` | | The action when cross is clicked. |
+
+
+
+
+### Choice chip
+
+Choice chips allow selection of a single chip from a set of options. Choice chips clearly delineate and display options in a compact area.
+
+**Note: To display a set of choice chips please see ODSChoiceChipsPicker**
+
+![Light input chip](images/chips_choice_light.png)
+![Dark input chip](images/chips_choice_dark.png)
+
+#### SwiftUI example
+
+``` swift
+enum Ingredient: String, CaseIterable {
+ case chocolate, vanilla, strawberry
+}
+
+ODSChoiceChipView(
+ chip: ODSChoiceChip(text: Text("Chocolate"), value: .chocolate),
+ selected: false:
+ action: { doSomething() }
+)
+ODSChoiceChipView(
+ chip: ODSChoiceChip(text: Text("Vanilla"), value: .vanilla),
+ selected: true:
+ action: { doSomething() }
+)
+```
+
+#### ODSChoiceChipView API
+
+| Parameter | Default value | Description |
+|-----------------------------------|--------------------|-------------------------------------------------|
+| `ODSChoiceChip` | | The chip value and associated text description. |
+| `selected: Bool` | | Controls the selected state of the chip. |
+| `action: () -> Void` | | The action when chip is clicked. |
+
+
+**ODSChoiceChipPicker**
+
+In order to display a set of choice chips you can follow this example:
+
+``` swift
+@State var selection: Ingredient
+
+var body: some View {
+ ScrollView(.horizontal) {
+ ForEach(Ingredient.allCases, id: \.rawValue) { ingredient in
+ ODSChoiceChipView(
+ model: ODSChoiceChip(text: Text(ingredient.rawValue), value: ingredient),
+ selected: selection == ingredient,
+ action: { selection = ingredient }
+ )
+ }
+ }
+}
+```
+
+To simplify the chips placement and alignment, you can also use the __ODSChoiceChipsPicker__ like this:
+
+``` swift
+@State var selection: Ingredient
+
+ODSChoiceChipPicker(
+ title: Text("Select your ingredient"),
+ chips: Ingredient.allCases.map { ODSChoiceChip(text: Text($0.rawValue), value: $0)
+ selection: $selection,
+ placement: .carousel
+)
+```
+
+
+
+### Filter chip
+
+Filter chips use tags or descriptive words to filter content. Filter chips allow selection of a set of chips from a set of options. Its usage is usefull to apply a filtering on a list of elmeents.
+
+**Note: To display a set of filter chips please see ODSFilterChipsPicker**
+
+![Light filter chips](images/chips_filter_light.png) ![Dark filter chips](images/chips_filter_dark.png)
+
+![Light filter chips with avatar](images/chips_filter_avatar_light.png) ![Dark filter chips with avatar](images/chips_filter_avatar_dark.png)
+
+
+#### SwiftUI example
+
+``` swift
+enum Ingredient: String, CaseIterable {
+ case chocolate, vanilla, strawberry
+
+ var image: Image {
+ Image("self.rawValue")
+ }
+}
+
+ODSFilterChipView(
+ chip: ODSFilterChip(text: Text("Chocolate"), leading: .image(Image("avatar")), value: .chocolate),
+ selected: false:
+ action: { doSomething() }
+)
+```
+
+#### ODSFilterChipView API
+
+| Parameter | Default value | Description |
+|-----------------------------------|--------------------|--------------------------------------------------------------------|
+| `chip: ODSFilterChip` | | The chip value and associated text description and leading avatar. |
+| `selected: Bool` | | Controls the selected state of the chip. |
+| `action: () -> Void` | | The action when chip is clicked. |
+
+
+#### ODSFilterChip API
+
+| Parameter | Default value | Description |
+|--------------------------------|--------------------|---------------------------------------------------------------|
+| `text: Text` | | Text to be displayed into the chip |
+| `leading: ODSImage.Source?` | `nil` | Avatar to be displayed in a circle shape, preceding the text. |
+| `value: Value` | | The value associated to the chip. |
+| `disabled: Bool` | `false` | Controls the disbaled state of the chip. |
+
+
+**ODSFilterChipPicker**
+
+As the choice chip, to simplify the chips placement and alignment, you can also use the __ODSFilterChipsPicker__ like this:
+
+``` swift
+@State var selection: [Ingredient]
+
+ODSFilterChipPicker(
+ title: Text("Select your ingredients"),
+ chips: Ingredient.allCases.map { ODSFilterChip(text: Text($0.rawValue), leading(.image($0.image)), value: $0)
+ selection: $selection,
+ placement: .carousel
+)
+```
+
diff --git a/docs/1.2.0/components/chips_docs.md b/docs/1.2.0/components/chips_docs.md
new file mode 100644
index 00000000..51287dad
--- /dev/null
+++ b/docs/1.2.0/components/chips_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Chips
+content_page: chips.md
+---
diff --git a/docs/1.2.0/components/images/activity_indicator.png b/docs/1.2.0/components/images/activity_indicator.png
new file mode 100644
index 00000000..5567e614
Binary files /dev/null and b/docs/1.2.0/components/images/activity_indicator.png differ
diff --git a/docs/1.2.0/components/images/banner-dark.png b/docs/1.2.0/components/images/banner-dark.png
new file mode 100644
index 00000000..769144eb
Binary files /dev/null and b/docs/1.2.0/components/images/banner-dark.png differ
diff --git a/docs/1.2.0/components/images/banner-light.png b/docs/1.2.0/components/images/banner-light.png
new file mode 100644
index 00000000..ec84c11f
Binary files /dev/null and b/docs/1.2.0/components/images/banner-light.png differ
diff --git a/docs/1.2.0/components/images/bars_navigation_items_dark.png b/docs/1.2.0/components/images/bars_navigation_items_dark.png
new file mode 100644
index 00000000..e7124a46
Binary files /dev/null and b/docs/1.2.0/components/images/bars_navigation_items_dark.png differ
diff --git a/docs/1.2.0/components/images/bars_navigation_items_light.png b/docs/1.2.0/components/images/bars_navigation_items_light.png
new file mode 100644
index 00000000..8cc70e0d
Binary files /dev/null and b/docs/1.2.0/components/images/bars_navigation_items_light.png differ
diff --git a/docs/1.2.0/components/images/bars_navigation_large_dark.png b/docs/1.2.0/components/images/bars_navigation_large_dark.png
new file mode 100644
index 00000000..97e823e5
Binary files /dev/null and b/docs/1.2.0/components/images/bars_navigation_large_dark.png differ
diff --git a/docs/1.2.0/components/images/bars_navigation_large_light.png b/docs/1.2.0/components/images/bars_navigation_large_light.png
new file mode 100644
index 00000000..320fcae0
Binary files /dev/null and b/docs/1.2.0/components/images/bars_navigation_large_light.png differ
diff --git a/docs/1.2.0/components/images/bars_navigation_search_dark.png b/docs/1.2.0/components/images/bars_navigation_search_dark.png
new file mode 100644
index 00000000..b5c851e4
Binary files /dev/null and b/docs/1.2.0/components/images/bars_navigation_search_dark.png differ
diff --git a/docs/1.2.0/components/images/bars_navigation_search_light.png b/docs/1.2.0/components/images/bars_navigation_search_light.png
new file mode 100644
index 00000000..915a2029
Binary files /dev/null and b/docs/1.2.0/components/images/bars_navigation_search_light.png differ
diff --git a/docs/1.2.0/components/images/bars_navigation_standard_dark.png b/docs/1.2.0/components/images/bars_navigation_standard_dark.png
new file mode 100644
index 00000000..d20b5a7a
Binary files /dev/null and b/docs/1.2.0/components/images/bars_navigation_standard_dark.png differ
diff --git a/docs/1.2.0/components/images/bars_navigation_standard_light.png b/docs/1.2.0/components/images/bars_navigation_standard_light.png
new file mode 100644
index 00000000..9b9f93db
Binary files /dev/null and b/docs/1.2.0/components/images/bars_navigation_standard_light.png differ
diff --git a/docs/1.2.0/components/images/bars_tab_dark.png b/docs/1.2.0/components/images/bars_tab_dark.png
new file mode 100644
index 00000000..25a09787
Binary files /dev/null and b/docs/1.2.0/components/images/bars_tab_dark.png differ
diff --git a/docs/1.2.0/components/images/bars_tab_light.png b/docs/1.2.0/components/images/bars_tab_light.png
new file mode 100644
index 00000000..da7e46bf
Binary files /dev/null and b/docs/1.2.0/components/images/bars_tab_light.png differ
diff --git a/docs/1.2.0/components/images/bars_tool_icons_dark.png b/docs/1.2.0/components/images/bars_tool_icons_dark.png
new file mode 100644
index 00000000..3be894a5
Binary files /dev/null and b/docs/1.2.0/components/images/bars_tool_icons_dark.png differ
diff --git a/docs/1.2.0/components/images/bars_tool_icons_light.png b/docs/1.2.0/components/images/bars_tool_icons_light.png
new file mode 100644
index 00000000..758ecd9f
Binary files /dev/null and b/docs/1.2.0/components/images/bars_tool_icons_light.png differ
diff --git a/docs/1.2.0/components/images/bars_tool_labels_dark.png b/docs/1.2.0/components/images/bars_tool_labels_dark.png
new file mode 100644
index 00000000..dda57849
Binary files /dev/null and b/docs/1.2.0/components/images/bars_tool_labels_dark.png differ
diff --git a/docs/1.2.0/components/images/bars_tool_labels_light.png b/docs/1.2.0/components/images/bars_tool_labels_light.png
new file mode 100644
index 00000000..d46cfe54
Binary files /dev/null and b/docs/1.2.0/components/images/bars_tool_labels_light.png differ
diff --git a/docs/1.2.0/components/images/buttons_emphasis_high.png b/docs/1.2.0/components/images/buttons_emphasis_high.png
new file mode 100644
index 00000000..c0a98b7f
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_emphasis_high.png differ
diff --git a/docs/1.2.0/components/images/buttons_emphasis_low.png b/docs/1.2.0/components/images/buttons_emphasis_low.png
new file mode 100644
index 00000000..e306cb0e
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_emphasis_low.png differ
diff --git a/docs/1.2.0/components/images/buttons_emphasis_lowest.png b/docs/1.2.0/components/images/buttons_emphasis_lowest.png
new file mode 100644
index 00000000..317dae96
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_emphasis_lowest.png differ
diff --git a/docs/1.2.0/components/images/buttons_emphasis_lowest_disabled.png b/docs/1.2.0/components/images/buttons_emphasis_lowest_disabled.png
new file mode 100644
index 00000000..c9931849
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_emphasis_lowest_disabled.png differ
diff --git a/docs/1.2.0/components/images/buttons_emphasis_medium.png b/docs/1.2.0/components/images/buttons_emphasis_medium.png
new file mode 100644
index 00000000..ef148b6e
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_emphasis_medium.png differ
diff --git a/docs/1.2.0/components/images/buttons_functional_negative.png b/docs/1.2.0/components/images/buttons_functional_negative.png
new file mode 100644
index 00000000..5d88a0fc
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_functional_negative.png differ
diff --git a/docs/1.2.0/components/images/buttons_functional_positive.png b/docs/1.2.0/components/images/buttons_functional_positive.png
new file mode 100644
index 00000000..330ef3d6
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_functional_positive.png differ
diff --git a/docs/1.2.0/components/images/buttons_functionnal_disabled.png b/docs/1.2.0/components/images/buttons_functionnal_disabled.png
new file mode 100644
index 00000000..803d1200
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_functionnal_disabled.png differ
diff --git a/docs/1.2.0/components/images/buttons_icon.png b/docs/1.2.0/components/images/buttons_icon.png
new file mode 100644
index 00000000..552dc955
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_icon.png differ
diff --git a/docs/1.2.0/components/images/buttons_layout_large_with_icon.png b/docs/1.2.0/components/images/buttons_layout_large_with_icon.png
new file mode 100644
index 00000000..29d586ac
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_layout_large_with_icon.png differ
diff --git a/docs/1.2.0/components/images/buttons_layout_large_without_icon.png b/docs/1.2.0/components/images/buttons_layout_large_without_icon.png
new file mode 100644
index 00000000..e6f378d7
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_layout_large_without_icon.png differ
diff --git a/docs/1.2.0/components/images/buttons_layout_small_with_icon.png b/docs/1.2.0/components/images/buttons_layout_small_with_icon.png
new file mode 100644
index 00000000..a0b7ae5c
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_layout_small_with_icon.png differ
diff --git a/docs/1.2.0/components/images/buttons_layout_small_without_icon.png b/docs/1.2.0/components/images/buttons_layout_small_without_icon.png
new file mode 100644
index 00000000..93ae02fd
Binary files /dev/null and b/docs/1.2.0/components/images/buttons_layout_small_without_icon.png differ
diff --git a/docs/1.2.0/components/images/card_horizontal_dark.png b/docs/1.2.0/components/images/card_horizontal_dark.png
new file mode 100644
index 00000000..7fe518b8
Binary files /dev/null and b/docs/1.2.0/components/images/card_horizontal_dark.png differ
diff --git a/docs/1.2.0/components/images/card_horizontal_light.png b/docs/1.2.0/components/images/card_horizontal_light.png
new file mode 100644
index 00000000..fdd1bdb3
Binary files /dev/null and b/docs/1.2.0/components/images/card_horizontal_light.png differ
diff --git a/docs/1.2.0/components/images/card_small_dark.png b/docs/1.2.0/components/images/card_small_dark.png
new file mode 100644
index 00000000..211a72a9
Binary files /dev/null and b/docs/1.2.0/components/images/card_small_dark.png differ
diff --git a/docs/1.2.0/components/images/card_small_light.png b/docs/1.2.0/components/images/card_small_light.png
new file mode 100644
index 00000000..e2b9949b
Binary files /dev/null and b/docs/1.2.0/components/images/card_small_light.png differ
diff --git a/docs/1.2.0/components/images/card_vertical_header_first_dark.png b/docs/1.2.0/components/images/card_vertical_header_first_dark.png
new file mode 100644
index 00000000..542c62eb
Binary files /dev/null and b/docs/1.2.0/components/images/card_vertical_header_first_dark.png differ
diff --git a/docs/1.2.0/components/images/card_vertical_header_first_light.png b/docs/1.2.0/components/images/card_vertical_header_first_light.png
new file mode 100644
index 00000000..66460143
Binary files /dev/null and b/docs/1.2.0/components/images/card_vertical_header_first_light.png differ
diff --git a/docs/1.2.0/components/images/card_vertical_image_first_dark.png b/docs/1.2.0/components/images/card_vertical_image_first_dark.png
new file mode 100644
index 00000000..f9a5299d
Binary files /dev/null and b/docs/1.2.0/components/images/card_vertical_image_first_dark.png differ
diff --git a/docs/1.2.0/components/images/card_vertical_image_first_light.png b/docs/1.2.0/components/images/card_vertical_image_first_light.png
new file mode 100644
index 00000000..58ee1f75
Binary files /dev/null and b/docs/1.2.0/components/images/card_vertical_image_first_light.png differ
diff --git a/docs/1.2.0/components/images/chips_action_dark.png b/docs/1.2.0/components/images/chips_action_dark.png
new file mode 100644
index 00000000..e0a50458
Binary files /dev/null and b/docs/1.2.0/components/images/chips_action_dark.png differ
diff --git a/docs/1.2.0/components/images/chips_action_light.png b/docs/1.2.0/components/images/chips_action_light.png
new file mode 100644
index 00000000..e2d8a9d6
Binary files /dev/null and b/docs/1.2.0/components/images/chips_action_light.png differ
diff --git a/docs/1.2.0/components/images/chips_choice_dark.png b/docs/1.2.0/components/images/chips_choice_dark.png
new file mode 100644
index 00000000..d848d8ad
Binary files /dev/null and b/docs/1.2.0/components/images/chips_choice_dark.png differ
diff --git a/docs/1.2.0/components/images/chips_choice_light.png b/docs/1.2.0/components/images/chips_choice_light.png
new file mode 100644
index 00000000..37781814
Binary files /dev/null and b/docs/1.2.0/components/images/chips_choice_light.png differ
diff --git a/docs/1.2.0/components/images/chips_filter_avatar_dark.png b/docs/1.2.0/components/images/chips_filter_avatar_dark.png
new file mode 100644
index 00000000..e4269dcc
Binary files /dev/null and b/docs/1.2.0/components/images/chips_filter_avatar_dark.png differ
diff --git a/docs/1.2.0/components/images/chips_filter_avatar_light.png b/docs/1.2.0/components/images/chips_filter_avatar_light.png
new file mode 100644
index 00000000..56857458
Binary files /dev/null and b/docs/1.2.0/components/images/chips_filter_avatar_light.png differ
diff --git a/docs/1.2.0/components/images/chips_filter_dark.png b/docs/1.2.0/components/images/chips_filter_dark.png
new file mode 100644
index 00000000..45fe2cf0
Binary files /dev/null and b/docs/1.2.0/components/images/chips_filter_dark.png differ
diff --git a/docs/1.2.0/components/images/chips_filter_light.png b/docs/1.2.0/components/images/chips_filter_light.png
new file mode 100644
index 00000000..d9c57620
Binary files /dev/null and b/docs/1.2.0/components/images/chips_filter_light.png differ
diff --git a/docs/1.2.0/components/images/chips_input_dark.png b/docs/1.2.0/components/images/chips_input_dark.png
new file mode 100644
index 00000000..315167eb
Binary files /dev/null and b/docs/1.2.0/components/images/chips_input_dark.png differ
diff --git a/docs/1.2.0/components/images/chips_input_light.png b/docs/1.2.0/components/images/chips_input_light.png
new file mode 100644
index 00000000..6e928d1d
Binary files /dev/null and b/docs/1.2.0/components/images/chips_input_light.png differ
diff --git a/docs/1.2.0/components/images/list_items_selection_circle_dark.png b/docs/1.2.0/components/images/list_items_selection_circle_dark.png
new file mode 100644
index 00000000..cef8cafe
Binary files /dev/null and b/docs/1.2.0/components/images/list_items_selection_circle_dark.png differ
diff --git a/docs/1.2.0/components/images/list_items_selection_circle_light.png b/docs/1.2.0/components/images/list_items_selection_circle_light.png
new file mode 100644
index 00000000..871e26a4
Binary files /dev/null and b/docs/1.2.0/components/images/list_items_selection_circle_light.png differ
diff --git a/docs/1.2.0/components/images/list_items_standard_square_dark.png b/docs/1.2.0/components/images/list_items_standard_square_dark.png
new file mode 100644
index 00000000..7e6d2994
Binary files /dev/null and b/docs/1.2.0/components/images/list_items_standard_square_dark.png differ
diff --git a/docs/1.2.0/components/images/list_items_standard_square_light.png b/docs/1.2.0/components/images/list_items_standard_square_light.png
new file mode 100644
index 00000000..03dc9d15
Binary files /dev/null and b/docs/1.2.0/components/images/list_items_standard_square_light.png differ
diff --git a/docs/1.2.0/components/images/progress_bar.png b/docs/1.2.0/components/images/progress_bar.png
new file mode 100644
index 00000000..d571477e
Binary files /dev/null and b/docs/1.2.0/components/images/progress_bar.png differ
diff --git a/docs/1.2.0/components/images/sliders.png b/docs/1.2.0/components/images/sliders.png
new file mode 100644
index 00000000..1a5c9c81
Binary files /dev/null and b/docs/1.2.0/components/images/sliders.png differ
diff --git a/docs/1.2.0/components/listItem.md b/docs/1.2.0/components/listItem.md
new file mode 100644
index 00000000..287d2539
--- /dev/null
+++ b/docs/1.2.0/components/listItem.md
@@ -0,0 +1,147 @@
+---
+layout: detail
+title: List item
+description: Lists are continuous, vertical indexes of text or images.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Lists](https://system.design.orange.com/0c1af118d/p/09a804-lists/b/669743)
+- [Apple guideline - Lists and tables](https://developer.apple.com/design/human-interface-guidelines/components/layout-and-organization/lists-and-tables)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+Here we just propose a configuration for two types of list items:
+- Standard with trailing actions
+- Selection with trailing icons (selection indicators)
+
+All items are composed of:
+- Title
+- Subtitle (optional)
+- Leading icon (optional)
+
+The leading icon is :
+- icon or image from resources
+- Image from url. During image loading a placeholder Image is needed. Three kinds of shape are proposed (circular, square or wide).
+
+
+### Standard list item
+
+For standard items, trailing icons can be added. Two types of icons are proposed:
+- with text
+- with text and info button to make an action
+
+![List item standard square light](images/list_items_standard_square_light.png)
+![List item standard square dark](images/list_items_standard_square_dark.png)
+
+The standard item can be used in a `NavigationLink` (for example, display more details)
+
+#### SwiftUI example
+
+```swift
+
+// Build the List view using ODSListItem withount navigation
+List {
+ // Items without navigation
+ ODSListItem(title: Text("Title Only")).odsListItemStyle()
+ ODSListItem(title: Text("Title with subtitle"), subtitle: Text("subtitle")).odsListItemStyle()
+ ODSListItem(title: Text("Title with leading icon"), leading: .icon(Image(systemName: "heart"))).odsListItemStyle()
+ ODSListItem(title: Text("Title with trailing text"), trailingText: Text("Details")).odsListItemStyle()
+ ODSListItem(title: Text("Title with trailing text and info button"), trailingText: Text("Details")) {
+ // Add info button action here
+ }.odsListItemStyle()
+
+ // Item with navigation
+ NavigationLink {
+ Text("The destination view")
+ } label: {
+ ODSListItem(title: Text("Title without trailing element"))
+ }.odsListItemStyle()
+
+ NavigationLink {
+ Text("The destination view")
+ } label: {
+ ODSListItem(title: Text("Title with trailing text"), trailingText: Text("Details"))
+ }.odsListItemStyle()
+
+ NavigationLink {
+ Text("The destination view")
+ } label: {
+ ODSListItem(title: Text("Title with trailing text and info button"), trailingText: Text("Details")) {
+ // Add info button action here
+ }
+ }.odsListItemStyle()
+}
+```
+
+### Selection list item
+
+![List item slection circle light](images/list_items_selection_circle_light.png)
+![List item slection circle dark](images/list_items_selection_circle_dark.png)
+
+The selection list items can be used to enumerate data as list in order to select elements.
+
+#### SwiftUI example
+
+```swift
+struct MyMultipleOptionsSelection: View {
+
+ @State private var optionA: Bool = false
+ @State private var optionB: Bool = false
+
+ var body: some View {
+ List {
+ ODSListItem(
+ title: Text("Option A"),
+ subtitle: Text("Option A description"),
+ trailingCheckmarkIsSelected: optionA
+ )
+ .odsListItemStyle()
+ .onTapGesture {
+ optionA.toggle()
+ }
+
+ ODSListItem(
+ title: Text("Option B"),
+ subtitle: Text("Option B description"),
+ trailingCheckmarkIsSelected: optionB
+ )
+ .odsListItemStyle()
+ .onTapGesture {
+ optionB.toggle()
+ }
+ }
+ }
+}
+```
+
+
+#### ODSListItem API
+
+| Parameter | Default value | Description |
+|-------------------------------------------------|--------------------|---------------------------------------------------|
+| `title: Text` | | The primary text of the list item. |
+| `subtitle: Text?` | `nil` | The secondary (optional) text of the list item. |
+| `subtitleNumberOfLines: SubtitleNumberOfLines?` | `.one` | To limit the subtitle text to 1 or 2 lines. |
+| `leading: Self.Leading?` | `nil` | The leading icon (optional) of the list item. |
+| `trailing: Self.Trailing?` | `nil` | The trailing element (optional) of the list item. |
+
+**Note 1:** Don’t forget, if item is used in a `NavigationLink`, a chevron is automatically added by the system. For design purpose it is NOT recommended to add item with `trailingCheckmarkIsSelected` and `trailingToggleIsOn` parameters in a `NavigationLink`.
+
+**Note 2:**Don’t forget to apply the style on:
+- __ODSListItem__ if it is not used with NavigationLink.
+- NavigationLink if __ODSListItem__ is its label.
+
diff --git a/docs/1.2.0/components/listItem_docs.md b/docs/1.2.0/components/listItem_docs.md
new file mode 100644
index 00000000..9caa65f1
--- /dev/null
+++ b/docs/1.2.0/components/listItem_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: List item
+content_page: listItem.md
+---
diff --git a/docs/1.2.0/components/progressIndicator.md b/docs/1.2.0/components/progressIndicator.md
new file mode 100644
index 00000000..4271e5d7
--- /dev/null
+++ b/docs/1.2.0/components/progressIndicator.md
@@ -0,0 +1,72 @@
+---
+layout: detail
+title: Progress indicator
+description: Progress indicators show users that elements or pages are loading
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Progress indicators](https://system.design.orange.com/0c1af118d/p/5969ab-progress-indicator)
+- [Apple guideline - Progress indicators](https://developer.apple.com/design/human-interface-guidelines/components/status/progress-indicators)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+Progress indicators show users that elements or pages are loading.
+
+### Progress bar
+
+Progres bar is used to display **determinate** operations. It display the indicator increasing in width from 0 to 100% of the track, in sync with the process’s progress.
+
+To display the indicator as progress bar with a specific color use the `tint`.
+
+![Progress bar](images/progress_bar.png)
+
+We recommend to use the theme for that using the accent color as shown in following exemple.
+
+```swift
+ProgressView("Downloading...", value: value, total: 100)
+ .tint(theme.componentColors.accent)
+```
+
+It is possible to display the current value to provide more context.
+
+```swift
+ProgressView(value: value, total: 100) {
+ Text("Downloading...")
+} currentValueLabel: {
+ let percent = String(format: "%0.2f", value)
+ Text("\(percent) %").frame(maxWidth: .infinity, alignment: .trailing)
+}
+.tint(theme.componentColors.accent)
+```
+
+### Activity indicators
+
+Activity indicator is used to display **Indeterminate** operations. It spins while a task is performed.
+
+![Activity indicator](images/activity_indicator.png)
+
+```swift
+ProgressView()
+```
+
+An additional label can be added to provide more context.
+
+```swift
+ProgressView {
+ Text("Loading...")
+}
+```
diff --git a/docs/1.2.0/components/progressIndicator_docs.md b/docs/1.2.0/components/progressIndicator_docs.md
new file mode 100644
index 00000000..17b0c0b6
--- /dev/null
+++ b/docs/1.2.0/components/progressIndicator_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Progress indicator
+content_page: progressIndicator.md
+---
diff --git a/docs/1.2.0/components/sheetsBottom.md b/docs/1.2.0/components/sheetsBottom.md
new file mode 100644
index 00000000..552072e8
--- /dev/null
+++ b/docs/1.2.0/components/sheetsBottom.md
@@ -0,0 +1,85 @@
+---
+layout: detail
+title: Bottom sheets
+description: Bottom Sheets are surfaces anchored to the bottom of the screen that present users supplement content.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Bottom sheets](https://system.design.orange.com/0c1af118d/p/3347ca-sheets-bottom/b/83b619)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+Bottom sheets are surfaces anchored to the bottom of the screen that present users supplemental content.
+It is useful for requesting a specific information or enabling a simple task related to the current context
+of the current view or more globaly the application context.
+
+### Standard
+
+The standard bottom sheet must be used only with a "simple, basic" content. If a more complex content (scrollable) must be added prefer the Expanding variant.
+
+It defines two states:
+- **closed**: The content is hidden
+- **opened**: The content is visible (above the main view)
+
+A taps on the header, opens or closes the bottom sheet.
+
+```swift
+struct BottomSheetPresentation: View {
+ @State private var isOpen = false
+
+ var body: some View {
+ VStack {
+ // Main content goes here.
+ Text("Bottom sheet is \(isOpen ? "Opened": "Closed")")
+ }
+ .odsBottomSheetStandard(isOpen: $isOpen, title: "Customize") {
+ // Bottom sheet content goes here
+ }
+ }
+}
+```
+
+You can also define accessibility hints and labels for this standard bottom sheet so as to make VoiceOver vocalize the state of this sheet (opended or closed) or to vocalize some hints to make it be opened or not.
+
+### Expanding
+
+The type of bottom must be used if the content is more complex and perhaps need to be scrollable.
+
+It defines three size:
+- **small**: (closed) The content is hidden, only the header is visible
+- **medium**: (parcially opened) The content is parcially visible (half screen above the main view) but not scrollable
+- **large**: (opened) The content is visible and scrollable
+
+User can resize by tapping on dimming area (close), drag the content, or tap on the header to cycle through the available sizes.
+
+```swift
+ struct BottomSheetPresentation: View {
+ @State private var bottomSheetSize: ODSBottomSheetSize = .large
+ var body: some View {
+ VStack {
+ // Main content goes here.
+ Text("Bottom sheet size \(bottomSheetSize.rawValue)")
+ }
+ .odsBottomSheetExpanding(title: "Customize", bottomSheetSize: $bottomSheetSize) {
+ // Bottom sheet content goes here
+ }
+ }
+ }
+```
+
+**Remark**: In order to compute the resizing when user scrolls the content, the bottom sheet automatically adds the provided content is a scrollView.
+
diff --git a/docs/1.2.0/components/sheetsBottom_docs.md b/docs/1.2.0/components/sheetsBottom_docs.md
new file mode 100644
index 00000000..03d56ceb
--- /dev/null
+++ b/docs/1.2.0/components/sheetsBottom_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Sheets - Bottom
+content_page: sheetsBottom.md
+---
diff --git a/docs/1.2.0/components/slider.md b/docs/1.2.0/components/slider.md
new file mode 100644
index 00000000..9bb3f76f
--- /dev/null
+++ b/docs/1.2.0/components/slider.md
@@ -0,0 +1,105 @@
+---
+layout: detail
+title: Sliders
+description: Sliders allow users to make selections from a range of values.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Sliders](https://system.design.orange.com/0c1af118d/p/7559da-sliders/b/253eea)
+- [Apple guideline - Sliders](https://developer.apple.com/design/human-interface-guidelines/components/selection-and-input/sliders)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+As the `ODSSlider` is based on the native `Slider`, Voice Over is able to vocalize
+However, if you want to set a description you need to add it using `.accessibilityLabel` on the `ODSSlider`.
+
+We recommend to not set information on `minimumValueLabel` and `maximumValueLabel` view using `.accessibilityHidden(true)`
+
+## Variants
+
+Slider is a system Slider component with accent color set to coreOrange.
+
+![Sliders](images/sliders.png)
+
+### Unlabeled slider
+
+Unlabelled sliders allow users to make easy selections that do not require any details or context.
+
+```swift
+struct UnlabeledSlider: View {
+
+ @State private var value = 50.0
+
+ var body: some View {
+ ODSSlider(value: $value, in: 0 ... 100)
+ }
+}
+```
+
+### Labeled slider (with images)
+
+We recommand to not set information on `minimumValueLabel` and `maximumValueLabel` view using `.accessibilityHidden(true)`. You can do it like this:
+
+```swift
+struct LabeledSlider: View {
+
+ @State private var value = 50.0
+
+ var body: some View {
+ ODSSlider(value: $value, in: 0 ... 100) {
+ Text("Volume")
+ } minimumValueLabel: {
+ Image(systemName: "speaker.wave.1.fill").accessibilityHidden(true)
+ } maximumValueLabel: {
+ Image(systemName: "speaker.wave.3.fill").accessibilityHidden(true)
+ }
+ }
+}
+```
+
+### Labeled slider (with text)
+
+We recommand to not set information on `minimumValueLabel` and `maximumValueLabel` view using `.accessibilityHidden(true)`. You can do it like this:
+
+```swift
+ODSSlider(value: $value, in: 0 ... 100) {
+ Text("Volume")
+} minimumValueLabel: {
+ Text("0").accessibilityHidden(true)
+} maximumValueLabel: {
+ Text("100").accessibilityHidden(true)
+}
+```
+
+### Stepped slider (with text and value display)
+
+We recommand to not set information on `minimumValueLabel` and `maximumValueLabel` view using `.accessibilityHidden(true)`. You can do it like this:
+
+```swift
+struct SteppedSlider: View {
+
+ @State private var value = 50.0
+
+ var body: some View {
+ ODSSlider(value: $value, in: 0 ... 100.0, step: 0.5) {
+ Text("Volume")
+ } minimumValueLabel: {
+ Image(systemName: "speaker.wave.1.fill").accessibilityHidden(true)
+ } maximumValueLabel: {
+ Image(systemName: "speaker.wave.3.fill").accessibilityHidden(true)
+ }
+ }
+}
+```
diff --git a/docs/1.2.0/components/slider_docs.md b/docs/1.2.0/components/slider_docs.md
new file mode 100644
index 00000000..29743fb1
--- /dev/null
+++ b/docs/1.2.0/components/slider_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Slider
+content_page: slider.md
+---
diff --git a/docs/1.2.0/components/textInput.md b/docs/1.2.0/components/textInput.md
new file mode 100644
index 00000000..a57f46df
--- /dev/null
+++ b/docs/1.2.0/components/textInput.md
@@ -0,0 +1,64 @@
+---
+layout: detail
+title: Text fields and text editor
+description: Text fields and text editor let users enter and edit text.
+---
+
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Text fields](https://system.design.orange.com/0c1af118d/p/47d389-text-fields/b/461794)
+- [Apple guideline - Text fields](https://developer.apple.com/design/human-interface-guidelines/components/selection-and-input/text-fields)
+- [Apple guideline - Edit Menu](https://developer.apple.com/design/human-interface-guidelines/components/menus-and-actions/edit-menus)
+- [Apple doc - Text input](https://developer.apple.com/documentation/swiftui/text-input-and-output)
+- [Apple doc - Text Field](https://developer.apple.com/documentation/swiftui/textfield)
+- [Apple doc - Secure Text Field](https://developer.apple.com/documentation/swiftui/securefield)
+- [Apple doc - Text Editor](https://developer.apple.com/documentation/swiftui/i/texteditor)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## Variants
+
+For all variants, we provide the `odsTextFieldStyle` view modifier to apply font, collors (background, tint) provided by the theme.
+
+### Text field
+
+A control that displays an editable text interface.
+
+```swift
+TextField("A text field", text: $textToEdit)
+ .odsTextFieldStyle()
+```
+
+ ### Secure text field
+
+Use a `SecureField` when you want behavior similar to a ``TextField``, but you don't want the user's text to be visible. Typically, you use this for entering passwords and other sensitive information.
+
+```swift
+SecureField("Secure text", text: $textToEdit)
+ .odsTextFieldStyle()
+```
+
+### Text editor
+
+A text editor view allows you to display and edit multiline, scrollable text in your app's user interface.
+
+```swift
+TextEditor(text: $textToEdit)
+ .odsTextFieldStyle()
+```
+
+## Text selection
+
+Text selection is available when text field or text editor is entering in edition mode. This is not a custom component but just a way to apply right style (customize with colors, font provided by theme).
+
diff --git a/docs/1.2.0/components/textInput_docs.md b/docs/1.2.0/components/textInput_docs.md
new file mode 100644
index 00000000..fabdf10a
--- /dev/null
+++ b/docs/1.2.0/components/textInput_docs.md
@@ -0,0 +1,5 @@
+---
+layout: main
+title: Text fields
+content_page: textInput.md
+---
diff --git a/docs/1.2.0/guidelines/colors.md b/docs/1.2.0/guidelines/colors.md
new file mode 100644
index 00000000..601c632d
--- /dev/null
+++ b/docs/1.2.0/guidelines/colors.md
@@ -0,0 +1,56 @@
+---
+layout: detail
+title: Colors
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Colour](https://system.design.orange.com/0c1af118d/p/73fa17-colour/b/025652)
+- [Apple guideline - The color system](https://developer.apple.com/design/human-interface-guidelines/foundations/color)
+
+## Theme colors
+
+Colors are defined in theme and described using `ODSColorDecription`, by setting :
+- the asset name,
+- the bundle containing the asset
+- the color names for light and dark modes (used by demo application)
+
+Colors will be different depending on whether they are displayed in light or in dark mode.
+
+## How to use
+
+### Using the color name
+
+You can get color in theme using its name like this:
+
+``` swift
+ // Don't forget get theme from environment
+ @Environment(\.theme) var theme
+
+ Image(systemName: "checkmark").foregroundColor(theme.color("coreOrange"))
+ MyView().background(theme.color("functionalInfo"))
+```
+
+### Using components token
+
+You can get color in theme using components token like this:
+
+``` swift
+// Don't forget get theme from environment
+@Environment(\.theme) var theme
+
+Button {
+} label: {
+ Text("Cancel")
+ .padding(ODSSpacing.m)
+}
+.background(theme.componentColors.functionalNegative)
+```
diff --git a/docs/1.2.0/guidelines/colors_docs.md b/docs/1.2.0/guidelines/colors_docs.md
new file mode 100644
index 00000000..2c2b0ceb
--- /dev/null
+++ b/docs/1.2.0/guidelines/colors_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: Colors
+content_page: colors.md
+back-to-top: false
+---
diff --git a/docs/1.2.0/guidelines/spacings.md b/docs/1.2.0/guidelines/spacings.md
new file mode 100644
index 00000000..485f004a
--- /dev/null
+++ b/docs/1.2.0/guidelines/spacings.md
@@ -0,0 +1,56 @@
+---
+layout: detail
+title: Spacings
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Spacings](https://system.design.orange.com/0c1af118d/p/375be7-spacing)
+- [Apple guideline - Layout](https://developer.apple.com/design/human-interface-guidelines/foundations/layout)
+
+## Usage
+
+The spacing scale increases in small increments needed to describe both internal and external spacing relationships. Spacing tokens can be applied as padding and margins.
+
+### Apply spacing for magin
+
+Apply the spacing to get magin arround element like this:
+
+``` swift
+// Add a padding of 16px arround the text in the button
+
+Button {
+ // Add your action here
+} label: {
+ Text("ButtonText")
+ .padding(.all, ODSSpacing.m)
+}
+
+
+// Add a magin of 16px (leading and trailing)
+VStack {
+ Text("Title")
+ Text("A very long text for description in the main view")
+}
+.padding(.horizontal: ODSSpacing.m) // Add a margin to the
+
+```
+
+### Apply spacing for padding
+
+Apply the spacing to separate elements like this:
+
+``` swift
+HStack(spacing: ODSSpacing.m) {
+ Image(systemname: "heart")
+ Text("Some text")
+}
+```
diff --git a/docs/1.2.0/guidelines/spacings_docs.md b/docs/1.2.0/guidelines/spacings_docs.md
new file mode 100644
index 00000000..c2aac711
--- /dev/null
+++ b/docs/1.2.0/guidelines/spacings_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: Spacings
+content_page: spacings.md
+back-to-top: false
+---
diff --git a/docs/1.2.0/guidelines/typography.md b/docs/1.2.0/guidelines/typography.md
new file mode 100644
index 00000000..1e52d8d9
--- /dev/null
+++ b/docs/1.2.0/guidelines/typography.md
@@ -0,0 +1,48 @@
+---
+layout: detail
+title: Typography
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Typography](https://system.design.orange.com/0c1af118d/p/54fe27-typography)
+- [Apple guideline - Typography](https://developer.apple.com/design/human-interface-guidelines/foundations/typography/)
+
+## Implementation
+
+ODS library defines its own font style. The font associated to the style is defined in the theme set in the environment.
+
+### Apply font style on text
+
+Apply the font style on text like this:
+
+``` swift
+ Text("Sample").odsFont(.titleS)
+ TextField("A text field", text: $textToEdit).odsFont(.titleS)
+```
+
+### Apply font style on view
+
+In the example below, the first text field has a font style set directly, while the font applied to the following container applies to all of the text views inside that container.
+
+``` swift
+VStack {
+ Text("Font applied to a text view.")
+ .odsFont(.headlineL)
+
+ VStack {
+ Text("These two text views have the same font")
+ Text("applied to their parent view.")
+ }
+ .odsFont(.titleS)
+}
+```
+
diff --git a/docs/1.2.0/guidelines/typography_docs.md b/docs/1.2.0/guidelines/typography_docs.md
new file mode 100644
index 00000000..9b2544d8
--- /dev/null
+++ b/docs/1.2.0/guidelines/typography_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: Typography
+content_page: typography.md
+back-to-top: false
+---
diff --git a/docs/1.2.0/home_content.md b/docs/1.2.0/home_content.md
new file mode 100644
index 00000000..240af33e
--- /dev/null
+++ b/docs/1.2.0/home_content.md
@@ -0,0 +1,27 @@
+## Introduction
+
+Orange is providing a full Design System to build Orange Mobile Application. The objective of the [Orange Design System](https://system.design.orange.com/0c1af118d/p/95b685-ios/) (ODS) is to propose a set of guidelines on how to apply the Orange Brand on mobile applications. The Orange design System also provides a series of components and modules that show in details how to use this in the Orange apps.
+
+The Orange Design System has been implemented in a code library that provides:
+- a SwiftUI code library
+- a demo app that can be launched to show the guidelines, components and modules
+- this demo app also shows how to use the lib or style existing components
+
+Using these resources will allow you to create Orange branded applications faster and will inherit all the work that was done to make sure that all presented codes are fully tested regarding the brand and the accessibility compliance.
+
+The Orange Design System framework supports iOS 15 and later.
+
+## Instructions
+
+### Swift Package Manager
+
+The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler.
+
+Once you have your Swift package set up, adding ODS as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`.
+
+```swift
+dependencies: [
+ .package(url: "https://github.com/Orange-OpenSource/ods-ios.git", .upToNextMajor(from: "1.2.0"))
+]
+```
+
diff --git a/docs/1.2.0/index.md b/docs/1.2.0/index.md
new file mode 100644
index 00000000..ef70b2b0
--- /dev/null
+++ b/docs/1.2.0/index.md
@@ -0,0 +1,7 @@
+---
+layout: main
+title: Integration
+description: Getting started with Orange Design System for iOS
+---
+
+{% include_relative home_content.md %}
diff --git a/docs/1.2.0/index_content.md b/docs/1.2.0/index_content.md
new file mode 100644
index 00000000..8c4b2b1e
--- /dev/null
+++ b/docs/1.2.0/index_content.md
@@ -0,0 +1,7 @@
+---
+layout: detail
+title: Integration
+description: Getting started with Orange Design System for iOS
+---
+
+{% include_relative home_content.md %}
diff --git a/docs/1.2.0/modules/about.md b/docs/1.2.0/modules/about.md
new file mode 100644
index 00000000..584e9acd
--- /dev/null
+++ b/docs/1.2.0/modules/about.md
@@ -0,0 +1,310 @@
+---
+layout: detail
+title: About
+description: An about screen should be displayed in all Orange applications to display the application name, software version as well as all legal data protection, privacy, and terms of service compliance information.
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Modules - About](https://system.design.orange.com/0c1af118d/p/39538b-about/b/55a5d2)
+
+## Overview
+
+This module should be added in all applications to display general application information (name, software version, description, privacy policy, terms of service, ...), to offer user actions (Rate the app, send feedbacks, ...), to get informaioon linked to the service (Application recirculation, App news ...).
+
+It is also possible to add to the module some specifc features linked to the service provided by the application (Suppport, How to, settings, ...)
+
+In order to have consistant prsentation of those elemnts in all applications, the __About__ module offers a structured and configrable layout.
+
+![AboutScreen](images/about_screen.png)
+
+
+## About screen layout
+
+The main about screen is divided to three areas.
+
+### Illustration area
+
+The first area (at the top of the screen) allows you to set an image illustrating the about screen linked to the service. If no image is provided the default one is inserted automatically.
+
+### Application information area
+
+The second area is dedicated for the application description with various elements:
+- The name (mandatory)
+- The version (optional)
+- A description in sevral lines (optional)
+
+
+It is also possible to activate two buttons to offer to the user to:
+
+- _share the application_ via email, via sms, via social networks... This button opens the default system share sheet that presents a range of actions to share the application. To activate this button, the developper needs to prvide the url of the application on the store and a short text describing the context of the sharing.
+- _send feedback_ to the support of the service. This button is displayed if the developper provides a callback called when button is clicked. This callback can do what it is expected (send email, send sms, open form, open web site, ...).
+
+
+### List items area
+
+The last area (at the bottom) is a list of items that propose to the user to make actions or navigate to additionnal feetures.
+All items have the same layout (icon and text). They are ordered in the list according to their priority set into the configuration.
+
+#### Mandatory items
+
+Some items are provided with the module. Three of them are mandatory and allways available in the list:
+- Item to present the __Privacy Policy__ (only html content supported today)
+- Item to display __Terms of Service__ (View provided by developper)
+- Item to show the __Accessibility Statement__ of the application (not available yet)
+As those items must be grouped in the list, their priority are fixed and can not be changed.
+
+#### Optionnal items
+
+As most of applications propose the same additonnal features (Rate the app, App News, ...), and in order to have consitency in about screens of all applications, additional items are proposed with the module.
+
+* Rate the app
+
+This item can be added in the list to redirect the user to the app page on the Apple Store to rate the application.
+
+* Apps news
+
+This item enumerates the application versions with small text describing new features available.
+
+* Legal inofrmation
+
+This item is used to display legal infomration. Today, there is not recomandation on the presentation.
+
+#### Custom items
+
+In addition, it is also possible to add into the list some custom items. Like previous ones, they must respect the layout and can set their own priority to be inserted in the right place in the list.
+
+
+## How to configure the module
+
+To display the about screen, initialize the module using the __ODSAboutModule__ stucture. During the initialization, a set of configuration must to be provided.
+
+### Illustration area
+
+If the about page needs to display a specific illustration, set it like this:
+
+```swft
+ODSAboutModule(headerIllustration: Image("AboutImage"), ...)
+```
+
+To keep the default illustration, initialize the module without overriding the `headerIllustration` parameter.
+
+
+### Application section area
+
+To configure the application, fill out the `ODSAboutApplicationInformation` structure and provide it to the module initialization.
+
+- With name only
+
+```swift
+let nameOnly = ODSAboutApplicationInformation(name: "Orange Design System Demo")
+ODSAboutModule(applicationInformation: nameOnly, ...)
+```
+
+- With description
+
+```swift
+let withDescription = ODSAboutApplicationInformation(
+ name: "Orange Design System Demo"
+ description: "In this app you'll find implemented code examples of the guidelines, components and modules, for the themes of the Orange Design System.")
+ODSAboutModule(applicationInformation: withDescription, ...)
+```
+
+- With version
+
+```swift
+let version = ODSApplicationVersion(
+ marketingVersion: Bundle.main.marketingVersion, // Mandatory
+ buildNumber: Bundle.main.buildNumber ?? "", // Optional
+ buildType: Bundle.main.buildType // Optional
+)
+
+let withVersion = ODSAboutApplicationInformation(
+ name: "Orange Design System Demo",
+ version: version
+)
+
+ODSAboutModule(applicationInformation: withVersion, ...)
+```
+
+- To activate the Share the application action
+
+```swift
+ler shareTheApplicationConfiguration = ODSAboutShareTheApplication(
+ storeUrl: URL(string: "http://oran.ge/dsapp")!,
+ subject: "The Orange Design System",
+ description: "Here you will find the Orange Design System Mobile App that provides examples of design implementations"
+)
+
+let withShareTheApp = ODSAboutApplicationInformation(
+ name: "Orange Design System Demo",
+ shareConfiguration: shareTheApplicationConfiguration
+)
+ODSAboutModule(applicationInformation: withShareTheApp, ...)
+```
+
+- To activate the feedback action
+
+```swift
+
+let withFeedback = ODSAboutApplicationInformation(
+ name: "Orange Design System Demo",
+ onFeedbackClicked: {
+ UIApplication.shared.open(URL(string: "https://github.com/Orange-OpenSource/ods-ios/issues/new/choose")!)
+ }
+)
+
+ODSAboutModule(applicationInformation: withFeedback, ...)
+```
+
+### Lits items area
+
+#### Use mandatory items
+
+For the privacy policy display, only HTML content is supported today. A more structured content will be added soon.
+
+- Privacy policy
+
+```swift
+// Initializes the privacy policy page with URL of the HTML file stored in resources.
+let privacyPolicy = ODSPrivacyPolicy.webview(.url(Bundle.main.url(forResource: "PrivacyNotice", withExtension: "html")!))
+```
+
+- The accessibility statement
+
+```swift
+// Defines an item displaying as a title the "conformity status" text, parsing the file named "fileName" and sending user elsewhere for further details
+let accessibilityStatement = ODSAboutAccessibilityStatement(
+ conformityStatus: "Accessibility: partially conform",
+ fileName: "AccessibilityStatement",
+ reportDetail: URL(string: "https://la-va11ydette.orange.com/")!)
+```
+
+- The Terms of service
+
+```swift
+// Today, there is no recomandation how to display the content, so the module provides a view builder
+// to build a native screen or a webview
+
+@ViewBuilder
+private func termsOfService() -> some View {
+ Text("Add terms of service here")
+}
+```
+
+Then initialize the module with those mandatory elements:
+
+```swift
+ODSAboutModule(...,
+ privacyPolicy: privacyPolicy,
+ acessibilityStatement: accessibilityStatement,
+ termsOfService: termOfService
+)
+```
+
+#### Add items to the list
+
+To insert additionnal items into the list, initialize the __listItemConfigurations__ array adding items following the __ODSAboutListItemConfig__ protocol.
+To order the items in the list, initialize the items with the right priority.
+
+```swift
+// Add all items in list
+ODSAboutModule(...,
+ listItemConfigurations: [legalInfoItem, rateTheAppItem, appsNewItem]
+)
+
+// see items description below
+```
+
+#### Use optional items
+
+- Rate the app
+
+To create this item, define the url of the application on the store and the priority (position) of the item in the list:
+
+```swift
+// This item opens the store in the external browser
+let rateTheAppItem = ODSAboutRateTheAppItemConfig(
+ priority: 501,
+ storeUrl: URL(string: "https://www.apple.com/app-store/")!
+)
+```
+
+- Apps news
+
+To create this item, define the path to the json file containing the news. This file is embeded in the resources of the application.
+
+The model of the json file is:
+
+```json
+[
+ {
+ "version": "0.12.0",
+ "date": "2023-04-14",
+ "news": "A short description of news"
+ },
+ ...
+]
+```
+
+This is the code to create the item:
+
+```swift
+// - Display the app News
+let appNewFilePath = Bundle.main.path(forResource: "AppNews", ofType: "json")!
+let appsNewItem = ODSAboutAppNewsItemConfig(
+ priorty: 502,
+ path: appNewFilePath
+)
+```
+
+- Legal information
+
+Still there is not recomandation on the format of the presentation, this item needs a view builder to display the legal information.
+
+```swift
+// Here, the legal information are displayed in a view with a single Text.
+
+let legalInformationItem = ODSAboutLegalInformationItemConfig(priority: 500) {
+ Text("This is Legal information content")
+}
+```
+
+- Apps recirculation
+
+You can also add an item to let people discover other apps of Orange, by using the following item:
+
+```swift
+let appsRecirculation = ODSRecirculationItemConfig(dataSource: yourDataSource)
+```
+
+The __dataSource__ can contain the URL of the backend to get the list of apps, (today the only supported backend is Orange proprietary backend _Apps Plus_) or a local json file. (for more details see the __Recirculation Module__.
+
+#### Create a custom item
+
+To create a custom item and associate a target, follow this example:
+
+```swift
+public struct MyItemToDisplayText: ODSAboutListItemConfig {
+ public private(set) var title: String
+ public private(set) var icon: Image
+ public private(set) var target: ODSAboutListItemTarget
+ public private(set) var priority: ODSAboutListItemPriority
+
+ public init(priority: ODSAboutListItemPriority = 100) {
+ self.priority = priority
+ self.title = "Fake Item"
+ self.icon = Image(systemName: "heart"),
+ self.target = .destination(AnyView(Text("This is the destination screen")))
+ }
+}
+```
+
diff --git a/docs/1.2.0/modules/about_docs.md b/docs/1.2.0/modules/about_docs.md
new file mode 100644
index 00000000..68f62b7e
--- /dev/null
+++ b/docs/1.2.0/modules/about_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: About
+content_page: about.md
+---
+
diff --git a/docs/1.2.0/modules/emptyState.md b/docs/1.2.0/modules/emptyState.md
new file mode 100644
index 00000000..dcade1c7
--- /dev/null
+++ b/docs/1.2.0/modules/emptyState.md
@@ -0,0 +1,52 @@
+---
+layout: detail
+title: Empty states
+description: An empty state can occur when no content or data is available to display in the UI. Avoid displaying completely empty screens.
+---
+
+An empty state display should inform the user of what is happening, why it's happening and what to do about it.
+
+ **On this page**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Empty states](https://system.design.orange.com/0c1af118d/p/177496-empty-states/b/454547)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/).
+
+The ODS Empty states module is built to support accessibility criteria and is readable by most screen readers, such as VoiceOver.
+
+## Integration
+
+![Empty state light](images/empty_state_light.png) ![Empty state dark](images/empty_state_dark.png)
+
+### SwiftUI example
+
+To integrate an ODS Empty state into your app, you can use `ODSEmptyStateView` as shown below:
+
+```swift
+ODSEmptyStateView(
+ title: Text("No result"),
+ text: Text("Try a new search"),
+ image: Image("il_emptyStateNoData"),
+ button: Button("Search") {
+ // Do something
+ }
+)
+```
+
+#### ODSEmptyStateView API
+
+| Parameter | Default value | Description |
+|-----------------------------------|-----------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|
+| `title: Text` | | The title of the screen displayed below the image. For example "File is missing". |
+| `text: Text?` | `nil` | Text displayed below the title |
+| `image: Image` | `Image("il_emptyStateUserCleared", bundle: Bundle.ods)` | Image displayed centered in the view |
+| `button: Button?` | `nil` | The button to add below the text |
diff --git a/docs/1.2.0/modules/emptyState_docs.md b/docs/1.2.0/modules/emptyState_docs.md
new file mode 100644
index 00000000..15db0e38
--- /dev/null
+++ b/docs/1.2.0/modules/emptyState_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: Empty states
+content_page: emptyState.md
+---
+
diff --git a/docs/1.2.0/modules/images/about_screen.png b/docs/1.2.0/modules/images/about_screen.png
new file mode 100644
index 00000000..ea0628be
Binary files /dev/null and b/docs/1.2.0/modules/images/about_screen.png differ
diff --git a/docs/1.2.0/modules/images/empty_state_dark.png b/docs/1.2.0/modules/images/empty_state_dark.png
new file mode 100644
index 00000000..7fcd8c2a
Binary files /dev/null and b/docs/1.2.0/modules/images/empty_state_dark.png differ
diff --git a/docs/1.2.0/modules/images/empty_state_light.png b/docs/1.2.0/modules/images/empty_state_light.png
new file mode 100644
index 00000000..2208398f
Binary files /dev/null and b/docs/1.2.0/modules/images/empty_state_light.png differ
diff --git a/docs/1.2.0/modules/images/list_grouped_dark.png b/docs/1.2.0/modules/images/list_grouped_dark.png
new file mode 100644
index 00000000..1cd3da2f
Binary files /dev/null and b/docs/1.2.0/modules/images/list_grouped_dark.png differ
diff --git a/docs/1.2.0/modules/images/list_grouped_light.png b/docs/1.2.0/modules/images/list_grouped_light.png
new file mode 100644
index 00000000..0010570d
Binary files /dev/null and b/docs/1.2.0/modules/images/list_grouped_light.png differ
diff --git a/docs/1.2.0/modules/images/list_inset_dark.png b/docs/1.2.0/modules/images/list_inset_dark.png
new file mode 100644
index 00000000..9edc8c7f
Binary files /dev/null and b/docs/1.2.0/modules/images/list_inset_dark.png differ
diff --git a/docs/1.2.0/modules/images/list_inset_grouped_dark.png b/docs/1.2.0/modules/images/list_inset_grouped_dark.png
new file mode 100644
index 00000000..d7b1959a
Binary files /dev/null and b/docs/1.2.0/modules/images/list_inset_grouped_dark.png differ
diff --git a/docs/1.2.0/modules/images/list_inset_grouped_light.png b/docs/1.2.0/modules/images/list_inset_grouped_light.png
new file mode 100644
index 00000000..f5afcd3f
Binary files /dev/null and b/docs/1.2.0/modules/images/list_inset_grouped_light.png differ
diff --git a/docs/1.2.0/modules/images/list_inset_light.png b/docs/1.2.0/modules/images/list_inset_light.png
new file mode 100644
index 00000000..64c9b21e
Binary files /dev/null and b/docs/1.2.0/modules/images/list_inset_light.png differ
diff --git a/docs/1.2.0/modules/images/list_plain_dark.png b/docs/1.2.0/modules/images/list_plain_dark.png
new file mode 100644
index 00000000..9b189afa
Binary files /dev/null and b/docs/1.2.0/modules/images/list_plain_dark.png differ
diff --git a/docs/1.2.0/modules/images/list_plain_light.png b/docs/1.2.0/modules/images/list_plain_light.png
new file mode 100644
index 00000000..de89eb09
Binary files /dev/null and b/docs/1.2.0/modules/images/list_plain_light.png differ
diff --git a/docs/1.2.0/modules/images/list_sidebar_dark.png b/docs/1.2.0/modules/images/list_sidebar_dark.png
new file mode 100644
index 00000000..12b22797
Binary files /dev/null and b/docs/1.2.0/modules/images/list_sidebar_dark.png differ
diff --git a/docs/1.2.0/modules/images/list_sidebar_light.png b/docs/1.2.0/modules/images/list_sidebar_light.png
new file mode 100644
index 00000000..5ba12f6b
Binary files /dev/null and b/docs/1.2.0/modules/images/list_sidebar_light.png differ
diff --git a/docs/1.2.0/modules/list.md b/docs/1.2.0/modules/list.md
new file mode 100644
index 00000000..d2fa73b9
--- /dev/null
+++ b/docs/1.2.0/modules/list.md
@@ -0,0 +1,194 @@
+---
+layout: detail
+title: List
+description: Lists are continuous, vertical indexes of text or images.
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Lists](https://system.design.orange.com/0c1af118d/p/09a804-lists/b/669743)
+- [Apple guideline - Lists and tables](https://developer.apple.com/design/human-interface-guidelines/components/layout-and-organization/lists-and-tables)
+
+## Accessibility
+
+Please follow [accessibility criteria for development](https://a11y-guidelines.orange.com/en/mobile/ios/)
+
+## List styles
+
+List propose the `.listStyle(_:)` modifier to change the style. For ios SwiftUI propose 6 types of style:
+- automatic
+- insetGrouped
+- grouped
+- inset
+- plain
+- sidebar
+
+The folowing code is used for all styles. The only difference is the list style specified in the `.listStyle(_:)` modifier.
+
+```swift
+NavigationStack {
+ List {
+ // Section for recipes contain selected ingredients
+ Section {
+ ODSListItem(
+ title: Text("Summer Salad"),
+ subtitle: Text("21 mn"),
+ leading: .circularImage(source: .image(Image("summerSalad")))
+ )
+ ODSListItem(
+ title: Text("Salmon cury"),
+ subtitle: Text("31 mn"),
+ leading: .circularImage(source: .image(Image("salmonCury")))
+ )
+ ODSListItem(
+ title: Text("Feta Pizza"),
+ subtitle: Text("21 mn"),
+ leading: .circularImage(source: .image(Image("fetaPizza")))
+ )
+ } header: {
+ Text("Recipes")
+ } footer: {
+ Text("A set of recipes made with selected ingredients")
+ }
+
+ // A set of ingredients
+ Section("Ingredients") {
+ ODSListItem(title: Text("tomato"), leading: .circularImage(source: .image(Image("tomato"))))
+ ODSListItem(title: Text("avocado"), leading: .circularImage(source: .image(Image("avocado"))))
+ }
+ }
+ .navigationTitle("List Style")
+ .listStyle(.automatic)
+}
+```
+
+### Automatic style
+
+As mentioned earlier, SwiftUI will use Inset Grouped style when setting automatic (.automatic) or DefaultListStyle on iOS
+
+### Inset Grouped style
+
+Example of Inset Grouped .insetGrouped or InsetGroupedListStyle.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.insetGrouped)
+```
+
+![InsetGroupedLight](images/list_inset_grouped_light.png)
+![InsetGroupedDark](images/list_inset_grouped_dark.png)
+
+### Grouped style
+
+Example of Grouped .grouped or GroupedListStyle.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.grouped)
+```
+
+![GroupedLight](images/list_grouped_light.png)
+![GroupedDark](images/list_grouped_dark.png)
+
+### Inset style
+
+Example of Inset .inset or InsetListStyle.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.inset)
+```
+
+![InsetLight](images/list_inset_light.png)
+![InsetDark](images/list_inset_dark.png)
+
+
+### Plain style
+
+Example of Plain .plain or PlainListStyle.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.plain)
+```
+![PlainLight](images/list_plain_light.png)
+![PlainDark](images/list_plain_dark.png)
+
+### Sidebar style
+
+The sidebar list style displays disclosure indicators in the section headers that allow the user to collapse and expand sections.
+
+Tap on disclosure indicators in the section headers will collapse and expand that section.
+
+```swift
+List {
+ // ...
+}
+.listStyle(.sidebar)
+```
+
+![SideBarLight](images/list_sidebar_light.png)
+![SideBarDark](images/list_sidebar_dark.png)
+
+
+* For iOS 17, a new API is proposed to manage the expandable state.
+
+```swift
+@State var isExpanded = true
+
+List {
+ Section(isExpanded: $isExpanded) {
+ // ...
+ } header: {
+ Text("Recipes")
+ }
+}
+.listStyle(.sidebar)
+```
+
+When you create your Section with `isExpanded`, the chevron will appear as long as the list style is `.sidebar`.
+
+* On previous iOS versions, this interface is not available, so to do the same you can use following code:
+
+```swift
+@State var isExpanded = true
+
+List {
+ Section {
+ if isExpanded {
+ // The content
+ }
+ } header: {
+ HStack {
+ Text("Recipes") // The header
+
+ Spacer()
+ Image(systemName: "chevron.down")
+ .rotationEffect(isExpanded ? .zero : .degrees(-90))
+ .onTapGesture {
+ withAnimation {
+ isExpanded.toggle()
+ }
+ }
+ }
+ }
+}
+.listStyle(.sidebar)
+```
+
diff --git a/docs/1.2.0/modules/list_docs.md b/docs/1.2.0/modules/list_docs.md
new file mode 100644
index 00000000..52f13ec1
--- /dev/null
+++ b/docs/1.2.0/modules/list_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: List
+content_page: list.md
+---
+
diff --git a/docs/1.2.0/modules/moreApps.md b/docs/1.2.0/modules/moreApps.md
new file mode 100644
index 00000000..dc7632cc
--- /dev/null
+++ b/docs/1.2.0/modules/moreApps.md
@@ -0,0 +1,109 @@
+---
+layout: detail
+title: MoreApps
+description: Displays a list of applications can be downloaded and used by user.
+---
+---
+
+**Page Summary**
+
+* Table of contents
+{:toc}
+
+---
+
+## Specifications references
+
+- [Design System Manager - Modules - MoreApps](https://system.design.orange.com/0c1af118d/p/37aa79-recirculation)
+
+## Overview
+
+The _MoreApps_ module exposes a feature allowing the final users to get the available apps they can use.
+This feature is based today only on the Orange proprietary _Apps Plus_ backend which provides a JSON file with list of apps and sections of apps.
+This service today is based on a simple URL containing both a lang parameter and an API key.
+
+**This API key will define the type of data returned by the backend ; maybe you should have your own API key which matches the suitable filters to get only a subgroup of apps.**
+
+## Implementation
+
+To be able to call this service and display the list of available apps, you have to use the `ODSMoreAppsView`.
+This _View_ has a `dataSource` parameter of type `ODSMoreAppsDataSource` which must contain the type of source of data to display the apps:
+
+```swift
+ // Get data from the Apps Plus backend
+ ODSMoreAppsView(dataSource: .remote(url: "https://url-to-appsplus-backend/get?apikey=SomeKey&lang=fr"))
+
+ // Get data for some local files
+ ODSMoreAppsView(dataSource: .local(path: somePathToJSONFileInResources))
+```
+
+Note also that the data picked from the _Apps Plus_ service is saved in cache directory so as to be used if the device is offline
+or if an error occured.
+
+If you want to flatten the list of apps without displaying categories, set the _flattenApps_ flag in the configuration:
+
+```swift
+ ODSMoreAppsView(dataSource: ..., flattenApps: true)
+```
+
+The apps icons displayed in the list of apps can also be cached.
+If you do not want to see these values put in cache, meaning e.g. displaying instead a placeholder if no network, use:
+
+```swift
+ ODSMoreAppsView(dataSource: ..., cacheAppsIcons: false)
+```
+
+The list of apps can trigger also haptic notifications, e.g. vibrations when the data have been lodaded or if an error occured.
+By default this feature is enabled, but it can be disabled:
+
+```swift
+ ODSMoreAppsView(dataSource: ..., enableHaptics: false)
+```
+
+### Example about definiton of Apps Plus credentials
+
+You can for example for your app use a _.xcconfig_ configuration settings file to store such credentials.
+A key named **APPS_PLUS_URL** can be defined with the URL (containing the API key) to call.
+Then the **Info.plist** file of your app must have an entry with the same name.
+Of course the _.xcconfig_ file should not be versionned in Git, ensure this with [Gitleaks](https://github.com/gitleaks/gitleaks) for example.
+
+See the example for the _.xcconfig_:
+
+```text
+// Configuration settings file format documentation can be found at:
+// https://help.apple.com/xcode/#/dev745c5c974
+// See also https://medium.com/swift-india/secure-secrets-in-ios-app-9f66085800b4
+
+APPS_PLUS_API_KEY = SoMeApIkEy
+APPS_PLUS_URL = https:/$()/url-to-api?apikey=$(APPS_PLUS_API_KEY)
+
+// Here $() prevents the // to be interpreted as comment, we suppose the URL has an apikey parameter and is GET only
+```
+
+And the entry for the _Info.plist_:
+
+```text
+ APPS_PLUS_URL
+ ${APPS_PLUS_URL}
+```
+
+Then in your code you can read the URL, get the locale, and forge the final URL to give to `ODSMoreAppsItemConfig`.
+We could have choosen this implemention deeper in the repository but wanted to let ODS lib users choose their own way to deal with the URL.
+
+```swift
+ private func buildAppsPlusURL() -> URL {
+ guard let appsPlusURL = Bundle.main.infoDictionary?["APPS_PLUS_URL"] else {
+ fatalError("No Apps Plus URL found in app settings")
+ }
+ let currentLocale = Bundle.main.preferredLocalizations[0]
+ let requestURL = "\(appsPlusURL)&lang=\(currentLocale)"
+ guard let feedURL = URL(string: requestURL) else {
+ fatalError("Failed to forge the service URL to get more apps")
+ }
+ return feedURL
+ }
+
+ // And then ODSMoreAppsView(dataSource: .remote(url: buildAppsPlusURL()))
+```
+
+In some CI/CD chain like our GitLab CI runner, we can use a _Fastlane_ lane to read some previously environment variable and fill the _Info.Plist_ file in the suitable row.
diff --git a/docs/1.2.0/modules/moreApps_docs.md b/docs/1.2.0/modules/moreApps_docs.md
new file mode 100644
index 00000000..d11c15ec
--- /dev/null
+++ b/docs/1.2.0/modules/moreApps_docs.md
@@ -0,0 +1,6 @@
+---
+layout: main
+title: MoreApps
+content_page: moreApps.md
+---
+
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
index 817af8cf..e87caecd 100644
--- a/docs/Gemfile.lock
+++ b/docs/Gemfile.lock
@@ -58,9 +58,14 @@ GEM
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
+ nokogiri (1.15.6-arm64-darwin)
+ racc (~> 1.4)
+ nokogiri (1.15.6-x86_64-darwin)
+ racc (~> 1.4)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (5.0.4)
+ racc (1.7.3)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
@@ -88,6 +93,7 @@ DEPENDENCIES
jekyll-relative-links
jekyll-remote-theme
minima (~> 2.5)
+ nokogiri
tzinfo (~> 2.0)
tzinfo-data
wdm (~> 0.1.1)
diff --git a/docs/_config.yml b/docs/_config.yml
index 2a443795..22630a1f 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -1,30 +1,26 @@
-
-# Build settings
-baseurl: /ods-ios
+# If you update this file, please also update _config_netlify.yml with the exact same changes
+plugins:
+- jekyll-feed
+- jekyll-relative-links
relative_links:
enabled: true
collections: true
remote_theme: Orange-OpenSource/ods-jekyll-theme
-plugins:
- - jekyll-feed
- - jekyll-relative-links
-
-# Exclude from processing.
-# The following items will not be processed, by default.
-# Any item listed under the `exclude:` key here will be automatically added to
-# the internal "default list".
-#
-# Excluded items can be processed by explicitly listing the directories or
-# their entries' file path in the `include:` list.
-#
-exclude:
- - .sass-cache/
- - .jekyll-cache/
- - gemfiles/
- - Gemfile
- - Gemfile.lock
- - node_modules/
- - vendor/bundle/
- - vendor/cache/
- - vendor/gems/
- - vendor/ruby/
+baseurl: /ods-ios
+defaults:
+ - scope:
+ path: ""
+ values:
+ version: ""
+ - scope:
+ path: "1.2.0"
+ values:
+ version: "1.2.0"
+ - scope:
+ path: "1.1.0"
+ values:
+ version: "1.1.0"
+ - scope:
+ path: "1.0.0"
+ values:
+ version: "1.0.0"
diff --git a/docs/_config_netlify.yml b/docs/_config_netlify.yml
index a24a26cf..51dedc0e 100644
--- a/docs/_config_netlify.yml
+++ b/docs/_config_netlify.yml
@@ -1,29 +1,26 @@
-
-# Build settings
+# If you update this file, please also update _config.yml with the exact same changes
+plugins:
+- jekyll-feed
+- jekyll-relative-links
relative_links:
enabled: true
collections: true
remote_theme: Orange-OpenSource/ods-jekyll-theme
-plugins:
- - jekyll-feed
- - jekyll-relative-links
-
-# Exclude from processing.
-# The following items will not be processed, by default.
-# Any item listed under the `exclude:` key here will be automatically added to
-# the internal "default list".
-#
-# Excluded items can be processed by explicitly listing the directories or
-# their entries' file path in the `include:` list.
-#
-exclude:
- - .sass-cache/
- - .jekyll-cache/
- - gemfiles/
- - Gemfile
- - Gemfile.lock
- - node_modules/
- - vendor/bundle/
- - vendor/cache/
- - vendor/gems/
- - vendor/ruby/
+baseurl: /ods-ios
+defaults:
+ - scope:
+ path: ""
+ values:
+ version: ""
+ - scope:
+ path: "1.2.0"
+ values:
+ version: "1.2.0"
+ - scope:
+ path: "1.1.0"
+ values:
+ version: "1.1.0"
+ - scope:
+ path: "1.0.0"
+ values:
+ version: "1.0.0"
diff --git a/docs/_data/data_menu.yml b/docs/_data/data_menu.yml
new file mode 100644
index 00000000..36be7a1f
--- /dev/null
+++ b/docs/_data/data_menu.yml
@@ -0,0 +1,62 @@
+version: ""
+toc2:
+ - title: Get Started
+ subfolderitems:
+ - page: Integration
+ url: /index.html
+
+ - title: Guidelines
+ subfolderitems:
+ - page: Colors
+ url: /guidelines/colors_docs
+ - page: Spacings
+ url: /guidelines/spacings_docs
+ - page: Typography
+ url: /guidelines/typography_docs
+
+ - title: Components
+ subfolderitems:
+ - page: Banners
+ url: /components/banners_docs
+ - page: Bars - navigation
+ url: /components/barsNavigation_docs
+ - page: Bars - tab
+ url: /components/barsTab_docs
+ - page: Bars - tool
+ url: /components/barsTool_docs
+ - page: Buttons
+ url: /components/buttons_docs
+ - page: Cards
+ url: /components/cards_docs
+ - page: Chips
+ url: /components/chips_docs
+ - page: List item
+ url: /components/listItem_docs
+ - page: Progress indicator
+ url: /components/progressIndicator_docs
+ - page: Slider
+ url: /components/slider_docs
+ - page: Sheets - Bottom
+ url: /components/sheetsBottom_docs
+ - page: Text fields
+ url: /components/textInput_docs
+
+ - title: Modules
+ subfolderitems:
+ - page: About
+ url: /modules/about_docs
+ - page: Empty states
+ url: /modules/emptyState_docs
+ - page: List
+ url: /modules/list_docs
+ - page: MoreApps
+ url: /modules/moreApps_docs
+
+ - title: About
+ subfolderitems:
+ - page: "License"
+ url: /about/License_docs
+ - page: "Team"
+ url: /about/Team_docs
+ - page: "Cookies"
+ url: /about/Cookies_docs
diff --git a/docs/_data/data_menu_1_0_0.yml b/docs/_data/data_menu_1_0_0.yml
new file mode 100644
index 00000000..9cc4c277
--- /dev/null
+++ b/docs/_data/data_menu_1_0_0.yml
@@ -0,0 +1,62 @@
+version: "1.0.0"
+toc2:
+ - title: Get Started
+ subfolderitems:
+ - page: Integration
+ url: /index.html
+
+ - title: Guidelines
+ subfolderitems:
+ - page: Colors
+ url: /guidelines/colors_docs
+ - page: Spacings
+ url: /guidelines/spacings_docs
+ - page: Typography
+ url: /guidelines/typography_docs
+
+ - title: Components
+ subfolderitems:
+ - page: Banners
+ url: /components/banners_docs
+ - page: Bars - navigation
+ url: /components/barsNavigation_docs
+ - page: Bars - tab
+ url: /components/barsTab_docs
+ - page: Bars - tool
+ url: /components/barsTool_docs
+ - page: Buttons
+ url: /components/buttons_docs
+ - page: Cards
+ url: /components/cards_docs
+ - page: Chips
+ url: /components/chips_docs
+ - page: List item
+ url: /components/listItem_docs
+ - page: Progress indicator
+ url: /components/progressIndicator_docs
+ - page: Slider
+ url: /components/slider_docs
+ - page: Sheets - Bottom
+ url: /components/sheetsBottom_docs
+ - page: Text fields
+ url: /components/textInput_docs
+
+ - title: Modules
+ subfolderitems:
+ - page: About
+ url: /modules/about_docs
+ - page: Empty states
+ url: /modules/emptyState_docs
+ - page: List
+ url: /modules/list_docs
+ - page: Recirculation
+ url: /modules/recirculation_docs
+
+ - title: About
+ subfolderitems:
+ - page: "License"
+ url: /about/License_docs
+ - page: "Team"
+ url: /about/Team_docs
+ - page: "Cookies"
+ url: /about/Cookies_docs
diff --git a/docs/_data/data_menu_1_1_0..yml b/docs/_data/data_menu_1_1_0..yml
new file mode 100644
index 00000000..6ab57b3f
--- /dev/null
+++ b/docs/_data/data_menu_1_1_0..yml
@@ -0,0 +1,62 @@
+version: "1.1.0"
+toc2:
+ - title: Get Started
+ subfolderitems:
+ - page: Integration
+ url: /index.html
+
+ - title: Guidelines
+ subfolderitems:
+ - page: Colors
+ url: /guidelines/colors_docs
+ - page: Spacings
+ url: /guidelines/spacings_docs
+ - page: Typography
+ url: /guidelines/typography_docs
+
+ - title: Components
+ subfolderitems:
+ - page: Banners
+ url: /components/banners_docs
+ - page: Bars - navigation
+ url: /components/barsNavigation_docs
+ - page: Bars - tab
+ url: /components/barsTab_docs
+ - page: Bars - tool
+ url: /components/barsTool_docs
+ - page: Buttons
+ url: /components/buttons_docs
+ - page: Cards
+ url: /components/cards_docs
+ - page: Chips
+ url: /components/chips_docs
+ - page: List item
+ url: /components/listItem_docs
+ - page: Progress indicator
+ url: /components/progressIndicator_docs
+ - page: Slider
+ url: /components/slider_docs
+ - page: Sheets - Bottom
+ url: /components/sheetsBottom_docs
+ - page: Text fields
+ url: /components/textInput_docs
+
+ - title: Modules
+ subfolderitems:
+ - page: About
+ url: /modules/about_docs
+ - page: Empty states
+ url: /modules/emptyState_docs
+ - page: List
+ url: /modules/list_docs
+ - page: Recirculation
+ url: /modules/recirculation_docs
+
+ - title: About
+ subfolderitems:
+ - page: "License"
+ url: /about/License_docs
+ - page: "Team"
+ url: /about/Team_docs
+ - page: "Cookies"
+ url: /about/Cookies_docs
diff --git a/docs/_data/data_menu_1_2_0.yml b/docs/_data/data_menu_1_2_0.yml
new file mode 100644
index 00000000..36be7a1f
--- /dev/null
+++ b/docs/_data/data_menu_1_2_0.yml
@@ -0,0 +1,62 @@
+version: ""
+toc2:
+ - title: Get Started
+ subfolderitems:
+ - page: Integration
+ url: /index.html
+
+ - title: Guidelines
+ subfolderitems:
+ - page: Colors
+ url: /guidelines/colors_docs
+ - page: Spacings
+ url: /guidelines/spacings_docs
+ - page: Typography
+ url: /guidelines/typography_docs
+
+ - title: Components
+ subfolderitems:
+ - page: Banners
+ url: /components/banners_docs
+ - page: Bars - navigation
+ url: /components/barsNavigation_docs
+ - page: Bars - tab
+ url: /components/barsTab_docs
+ - page: Bars - tool
+ url: /components/barsTool_docs
+ - page: Buttons
+ url: /components/buttons_docs
+ - page: Cards
+ url: /components/cards_docs
+ - page: Chips
+ url: /components/chips_docs
+ - page: List item
+ url: /components/listItem_docs
+ - page: Progress indicator
+ url: /components/progressIndicator_docs
+ - page: Slider
+ url: /components/slider_docs
+ - page: Sheets - Bottom
+ url: /components/sheetsBottom_docs
+ - page: Text fields
+ url: /components/textInput_docs
+
+ - title: Modules
+ subfolderitems:
+ - page: About
+ url: /modules/about_docs
+ - page: Empty states
+ url: /modules/emptyState_docs
+ - page: List
+ url: /modules/list_docs
+ - page: MoreApps
+ url: /modules/moreApps_docs
+
+ - title: About
+ subfolderitems:
+ - page: "License"
+ url: /about/License_docs
+ - page: "Team"
+ url: /about/Team_docs
+ - page: "Cookies"
+ url: /about/Cookies_docs
diff --git a/docs/_data/data_menus.yml b/docs/_data/data_menus.yml
deleted file mode 100644
index 56c63c0b..00000000
--- a/docs/_data/data_menus.yml
+++ /dev/null
@@ -1,62 +0,0 @@
-# Edit this file to update the documentation menu
-toc2:
- - title: Get Started
- subfolderitems:
- - page: Integration
- url: index.html
-
- - title: Guidelines
- subfolderitems:
- - page: Colors
- url: guidelines/colors_docs
- - page: Spacings
- url: guidelines/spacings_docs
- - page: Typography
- url: guidelines/typography_docs
-
- - title: Components
- subfolderitems:
- - page: Banners
- url: components/banners_docs
- - page: Bars - navigation
- url: components/barsNavigation_docs
- - page: Bars - tab
- url: components/barsTab_docs
- - page: Bars - tool
- url: components/barsTool_docs
- - page: Buttons
- url: components/buttons_docs
- - page: Cards
- url: components/cards_docs
- - page: Chips
- url: components/chips_docs
- - page: List item
- url: components/listItem_docs
- - page: Progress indicator
- url: components/progressIndicator_docs
- - page: Slider
- url: components/slider_docs
- - page: Sheets - Bottom
- url: components/sheetsBottom_docs
- - page: Text fields
- url: components/textInput_docs
-
- - title: Modules
- subfolderitems:
- - page: About
- url: modules/about_docs
- - page: Empty states
- url: modules/emptyState_docs
- - page: List
- url: modules/list_docs
- - page: Recirculation
- url: modules/recirculation_docs
-
- - title: About
- subfolderitems:
- - page: "License"
- url: about/License_docs
- - page: "Team"
- url: about/Team_docs
- - page: "Cookies"
- url: about/Cookies_docs
diff --git a/docs/_data/team.yml b/docs/_data/team.yml
index 3fe29d63..34a4566e 100644
--- a/docs/_data/team.yml
+++ b/docs/_data/team.yml
@@ -1,3 +1,4 @@
+version: ""
ODS_iOS:
- name: Lapersonne Pierre-Yves
gh_pseudo: pylapp
diff --git a/docs/_data/team_1_0_0.yml b/docs/_data/team_1_0_0.yml
new file mode 100644
index 00000000..b028e9a1
--- /dev/null
+++ b/docs/_data/team_1_0_0.yml
@@ -0,0 +1,6 @@
+version: "1.0.0"
+ODS_iOS:
+ - name: Lapersonne Pierre-Yves
+ gh_pseudo: pylapp
+ - name: Pinel Ludovic
+ gh_pseudo: ludovic35
\ No newline at end of file
diff --git a/docs/_includes/footer.html b/docs/_includes/footer.html
index 1fa44d16..784c07e9 100644
--- a/docs/_includes/footer.html
+++ b/docs/_includes/footer.html
@@ -13,12 +13,6 @@