Sfoglia il codice sorgente

Feature: Documents system completed.

lfabl 2 settimane fa
parent
commit
aeccecb302
100 ha cambiato i file con 10255 aggiunte e 59 eliminazioni
  1. 15 1
      .agents/AGENTS.md
  2. 40 0
      example/src/global.d.ts
  3. 5 5
      example/src/index.tsx
  4. 655 14
      example/src/navigation/index.tsx
  5. 50 0
      example/src/navigation/type.ts
  6. 270 0
      example/src/pages/components/avatar/index.tsx
  7. 0 0
      example/src/pages/components/avatar/stylesheet.ts
  8. 202 0
      example/src/pages/components/avatarGroup/index.tsx
  9. 18 0
      example/src/pages/components/avatarGroup/stylesheet.ts
  10. 188 0
      example/src/pages/components/bottomSheet/index.tsx
  11. 18 0
      example/src/pages/components/bottomSheet/stylesheet.ts
  12. 22 12
      example/src/pages/components/button/index.tsx
  13. 18 0
      example/src/pages/components/button/stylesheet.ts
  14. 317 0
      example/src/pages/components/checkBox/index.tsx
  15. 18 0
      example/src/pages/components/checkBox/stylesheet.ts
  16. 286 0
      example/src/pages/components/chip/index.tsx
  17. 18 0
      example/src/pages/components/chip/stylesheet.ts
  18. 91 0
      example/src/pages/components/dateSelector/index.tsx
  19. 20 0
      example/src/pages/components/dateSelector/stylesheet.ts
  20. 307 0
      example/src/pages/components/dateTimePicker/index.tsx
  21. 18 0
      example/src/pages/components/dateTimePicker/stylesheet.ts
  22. 113 0
      example/src/pages/components/dateTimeSheet/index.tsx
  23. 20 0
      example/src/pages/components/dateTimeSheet/stylesheet.ts
  24. 210 0
      example/src/pages/components/dialog/index.tsx
  25. 18 0
      example/src/pages/components/dialog/stylesheet.ts
  26. 108 0
      example/src/pages/components/embeddedMenu/index.tsx
  27. 17 0
      example/src/pages/components/embeddedMenu/stylesheet.ts
  28. 131 0
      example/src/pages/components/header/index.tsx
  29. 17 0
      example/src/pages/components/header/stylesheet.ts
  30. 320 0
      example/src/pages/components/highlightButton/index.tsx
  31. 18 0
      example/src/pages/components/highlightButton/stylesheet.ts
  32. 141 0
      example/src/pages/components/loading/index.tsx
  33. 18 0
      example/src/pages/components/loading/stylesheet.ts
  34. 80 0
      example/src/pages/components/localeSwitcher/index.tsx
  35. 20 0
      example/src/pages/components/localeSwitcher/stylesheet.ts
  36. 136 0
      example/src/pages/components/mainHeader/index.tsx
  37. 17 0
      example/src/pages/components/mainHeader/stylesheet.ts
  38. 107 0
      example/src/pages/components/markdownViewer/index.tsx
  39. 18 0
      example/src/pages/components/markdownViewer/stylesheet.ts
  40. 109 0
      example/src/pages/components/menu/index.tsx
  41. 17 0
      example/src/pages/components/menu/stylesheet.ts
  42. 110 0
      example/src/pages/components/modal/index.tsx
  43. 26 0
      example/src/pages/components/modal/stylesheet.ts
  44. 91 0
      example/src/pages/components/monthSelector/index.tsx
  45. 20 0
      example/src/pages/components/monthSelector/stylesheet.ts
  46. 189 0
      example/src/pages/components/notificationIndicator/index.tsx
  47. 18 0
      example/src/pages/components/notificationIndicator/stylesheet.ts
  48. 323 0
      example/src/pages/components/numericInput/index.tsx
  49. 18 0
      example/src/pages/components/numericInput/stylesheet.ts
  50. 81 0
      example/src/pages/components/pageContainer/index.tsx
  51. 20 0
      example/src/pages/components/pageContainer/stylesheet.ts
  52. 80 0
      example/src/pages/components/paletteSwitcher/index.tsx
  53. 20 0
      example/src/pages/components/paletteSwitcher/stylesheet.ts
  54. 237 0
      example/src/pages/components/radioButton/index.tsx
  55. 18 0
      example/src/pages/components/radioButton/stylesheet.ts
  56. 181 0
      example/src/pages/components/rowCard/index.tsx
  57. 18 0
      example/src/pages/components/rowCard/stylesheet.ts
  58. 295 0
      example/src/pages/components/selectBox/index.tsx
  59. 18 0
      example/src/pages/components/selectBox/stylesheet.ts
  60. 119 0
      example/src/pages/components/selectSheet/index.tsx
  61. 20 0
      example/src/pages/components/selectSheet/stylesheet.ts
  62. 106 0
      example/src/pages/components/seperator/index.tsx
  63. 18 0
      example/src/pages/components/seperator/stylesheet.ts
  64. 148 0
      example/src/pages/components/siteLogo/index.tsx
  65. 18 0
      example/src/pages/components/siteLogo/stylesheet.ts
  66. 91 0
      example/src/pages/components/snackBar/index.tsx
  67. 20 0
      example/src/pages/components/snackBar/stylesheet.ts
  68. 164 0
      example/src/pages/components/stateCard/index.tsx
  69. 18 0
      example/src/pages/components/stateCard/stylesheet.ts
  70. 121 0
      example/src/pages/components/sticker/index.tsx
  71. 18 0
      example/src/pages/components/sticker/stylesheet.ts
  72. 208 0
      example/src/pages/components/switch/index.tsx
  73. 18 0
      example/src/pages/components/switch/stylesheet.ts
  74. 9 0
      example/src/pages/components/text/index.tsx
  75. 0 0
      example/src/pages/components/text/stylesheet.ts
  76. 261 0
      example/src/pages/components/textAreaInput/index.tsx
  77. 18 0
      example/src/pages/components/textAreaInput/stylesheet.ts
  78. 297 0
      example/src/pages/components/textInput/index.tsx
  79. 18 0
      example/src/pages/components/textInput/stylesheet.ts
  80. 80 0
      example/src/pages/components/themeSwitcher/index.tsx
  81. 20 0
      example/src/pages/components/themeSwitcher/stylesheet.ts
  82. 93 0
      example/src/pages/components/timeSelector/index.tsx
  83. 20 0
      example/src/pages/components/timeSelector/stylesheet.ts
  84. 91 0
      example/src/pages/components/toast/index.tsx
  85. 20 0
      example/src/pages/components/toast/stylesheet.ts
  86. 72 0
      example/src/pages/components/webScrollbar/index.tsx
  87. 91 0
      example/src/pages/components/yearSelector/index.tsx
  88. 20 0
      example/src/pages/components/yearSelector/stylesheet.ts
  89. 223 0
      example/src/pages/coreFeatures/localeExamples/index.tsx
  90. 277 0
      example/src/pages/coreFeatures/themeExamples/index.tsx
  91. 255 0
      example/src/pages/coreFeatures/toolsUsage/index.tsx
  92. 210 0
      example/src/pages/coreFeatures/typesOverride/index.tsx
  93. 22 7
      example/src/pages/home/index.tsx
  94. 169 0
      example/src/pages/implementation/index.tsx
  95. 148 0
      example/src/pages/installation/index.tsx
  96. 691 17
      example/src/variants/locales/default.json
  97. 43 0
      example/src/variants/themes/default.json
  98. 41 0
      example/web/global.d.ts
  99. 3 2
      example/web/tsconfig.json
  100. 2 1
      package.json

+ 15 - 1
.agents/AGENTS.md

@@ -4,12 +4,26 @@ The user expects strict adherence to the following coding, formatting, and behav
 
 
 ## General Formatting
 ## General Formatting
 1. **Double Quotes:** Use double quotes (`"`) instead of single quotes for all strings and imports.
 1. **Double Quotes:** Use double quotes (`"`) instead of single quotes for all strings and imports.
-2. **Sort by Length:** Sort arrays, JSON object keys, object properties, and import statements from **longest to shortest string length** (uzundan kısaya). This is a strict visual aesthetic preference.
+2. **Sort by Length:** Sort arrays, object properties, and import statements from **longest to shortest string length** (uzundan kısaya). For JSON objects or key-value pairs (like translations), sort by the **combined length of the key and the value (key + value)** from longest to shortest. This is a strict visual aesthetic preference. This applies deeply to destructured imports, props, array data, and types as well.
 3. **Line Breaks (Newlines):** Pay attention to line breaks. Add new lines between imports and JSON object keys where appropriate. ESLint rules regarding newlines must be strictly followed.
 3. **Line Breaks (Newlines):** Pay attention to line breaks. Add new lines between imports and JSON object keys where appropriate. ESLint rules regarding newlines must be strictly followed.
+4. **Hook Spacing:** Always leave a blank line between each distinct hook call (e.g. `useContext`, `useState`, `useNavigation`, `useLayoutEffect`). Do not group them tightly together without empty lines.
+5. **Array Destructuring:** When destructuring arrays (such as from `useState`), place the opening bracket on one line, each destructured item on its own separate line, and the closing bracket on its own line.
+   Example:
+   ```typescript
+   const [
+       title,
+       setTitle
+   ] = useState<string>("");
+   ```
+6. **Main Component / Object Export:** Always define the main component or object as a variable/arrow function (e.g., `const PageName = () => { ... }` or `const stylesheet = StyleSheet.create({ ... })`) and place the `export default PageName;` or `export default stylesheet;` at the very bottom of the file. Do not use `export default function PageName()` or inline `export default StyleSheet.create(...)`.
+7. **Top-level Blank Lines:** Top-level variables, arrays, types, and functions located *outside* of the main component must be separated by an empty line. Do not group them without new lines.
+8. **No `any` with `localize`:** Never use `as any` when calling the `localize` function (e.g., use `localize("key")` instead of `localize("key" as any)`). The `any` type is strictly forbidden.
+9. **String Interpolation:** Use template literals (`` `${...}` ``) for string concatenation instead of the `+` operator.
 
 
 ## Tooling & Checks
 ## Tooling & Checks
 1. **ESLint Validation:** Habitually run `yarn run eslint --fix <file>` or `yarn run eslint <file>` after making code edits to ensure strict ESLint compliance.
 1. **ESLint Validation:** Habitually run `yarn run eslint --fix <file>` or `yarn run eslint <file>` after making code edits to ensure strict ESLint compliance.
 2. **TypeScript Validation:** Habitually check and respect TypeScript compiler errors (e.g., using `tsc` or IDE feedback). Do not ignore `any` or strict typing constraints.
 2. **TypeScript Validation:** Habitually check and respect TypeScript compiler errors (e.g., using `tsc` or IDE feedback). Do not ignore `any` or strict typing constraints.
+3. **No External Formatters:** Do not introduce Prettier or automatic scripts that might break these explicit manual formatting rules. Format code block by block meticulously.
 
 
 ## Behavior
 ## Behavior
 Always follow these rules by default. Pay "extreme attention" (aşırı dikkat) to the sorting rules, ESLint, and TS constraints during modifications.
 Always follow these rules by default. Pay "extreme attention" (aşırı dikkat) to the sorting rules, ESLint, and TS constraints during modifications.

+ 40 - 0
example/src/global.d.ts

@@ -1 +1,41 @@
+import defaultLocaleJSON from "./variants/locales/default.json";
+import defaultThemeJSON from "./variants/themes/default.json";
 import "../../src/types/index";
 import "../../src/types/index";
+
+declare global {
+    namespace NCoreUIKit {
+        type PaletteNames = "gmcore";
+
+        interface PaletteKey extends Record<PaletteType, unknown>, Record<PaletteNames, unknown> {
+        }
+
+        type ProjectLocalizationL = typeof defaultLocaleJSON[0];
+
+        type GeneratedProjectTranslations = {
+            [K in keyof ProjectLocalizationL["translations"]]: ProjectLocalizationL["translations"][K];
+        };
+
+        interface Translation extends GeneratedTranslations, GeneratedProjectTranslations {
+        }
+
+        type DefaultPaletteL = typeof defaultThemeJSON.palettes[0];
+
+        type ProjectDataL = DefaultPaletteL["themes"]["dark"]["project"];
+        type DefaultProjectColorsL = ProjectDataL;
+
+        interface ProjectColorPalette extends DefaultProjectColors, DefaultProjectColorsL {
+        }
+
+        type SystemDataL = DefaultPaletteL["themes"]["dark"]["system"];
+        type DefaultSystemColorsL = SystemDataL;
+
+        interface SystemColorPalette extends DefaultSystemColors, DefaultSystemColorsL {
+        }
+
+        type ContentDataL = DefaultPaletteL["themes"]["dark"]["content"];
+        type DefaultContentColorsL = ContentDataL;
+
+        interface ContentColorPalette extends DefaultContentColors, DefaultContentColorsL {
+        }
+    }
+}

+ 5 - 5
example/src/index.tsx

@@ -4,16 +4,16 @@ import {
 import Navigation from "./navigation";
 import Navigation from "./navigation";
 import defaultLocaleJSON from "./variants/locales/default.json";
 import defaultLocaleJSON from "./variants/locales/default.json";
 import defaultThemeJSON from "./variants/themes/default.json";
 import defaultThemeJSON from "./variants/themes/default.json";
-import {
-    useFonts
-} from "expo-font";
-import moment from "moment";
-import "moment/locale/tr";
 import {
 import {
     type NCoreUIKitConfig,
     type NCoreUIKitConfig,
     setupNCoreUIKit,
     setupNCoreUIKit,
     Host
     Host
 } from "ncore-ui-kit";
 } from "ncore-ui-kit";
+import {
+    useFonts
+} from "expo-font";
+import moment from "moment";
+import "moment/locale/tr";
 
 
 let NCoreConfig: NCoreUIKitConfig = {
 let NCoreConfig: NCoreUIKitConfig = {
     projectThemes: defaultThemeJSON as NCoreUIKit.Palette,
     projectThemes: defaultThemeJSON as NCoreUIKit.Palette,

+ 655 - 14
example/src/navigation/index.tsx

@@ -18,22 +18,119 @@ import {
 import {
 import {
     type LinkingOptions,
     type LinkingOptions,
     NavigationContainer,
     NavigationContainer,
-    useNavigation,
+    getStateFromPath,
+    useNavigation
 } from "@react-navigation/native";
 } from "@react-navigation/native";
+import TypesOverridePage from "../pages/coreFeatures/typesOverride";
 import {
 import {
     type NativeStackNavigationProp,
     type NativeStackNavigationProp,
     createNativeStackNavigator
     createNativeStackNavigator
 } from "@react-navigation/native-stack";
 } from "@react-navigation/native-stack";
 import {
 import {
     ComponentIcon,
     ComponentIcon,
+    SettingsIcon,
+    GoalIcon,
     HomeIcon
     HomeIcon
 } from "lucide-react-native";
 } from "lucide-react-native";
-import ButtonPage from "../pages/button";
-import TextPage from "../pages/text";
+
+import AvatarPage from "../pages/components/avatar";
+import AvatarGroupPage from "../pages/components/avatarGroup";
+import BottomSheetPage from "../pages/components/bottomSheet";
+import ButtonPage from "../pages/components/button";
+import CheckBoxPage from "../pages/components/checkBox";
+import ChipPage from "../pages/components/chip";
+import DateSelectorPage from "../pages/components/dateSelector";
+import DateTimePickerPage from "../pages/components/dateTimePicker";
+import DateTimeSheetPage from "../pages/components/dateTimeSheet";
+import DialogPage from "../pages/components/dialog";
+import EmbeddedMenuPage from "../pages/components/embeddedMenu";
+import HeaderPage from "../pages/components/header";
+import HighlightButtonPage from "../pages/components/highlightButton";
+import LoadingPage from "../pages/components/loading";
+import LocaleSwitcherPage from "../pages/components/localeSwitcher";
+import MainHeaderPage from "../pages/components/mainHeader";
+import MarkdownViewerPage from "../pages/components/markdownViewer";
+import MenuPage from "../pages/components/menu";
+import ModalPage from "../pages/components/modal";
+import MonthSelectorPage from "../pages/components/monthSelector";
+import NotificationIndicatorPage from "../pages/components/notificationIndicator";
+import NumericInputPage from "../pages/components/numericInput";
+import PageContainerPage from "../pages/components/pageContainer";
+import PaletteSwitcherPage from "../pages/components/paletteSwitcher";
+import RadioButtonPage from "../pages/components/radioButton";
+import RowCardPage from "../pages/components/rowCard";
+import SelectBoxPage from "../pages/components/selectBox";
+import SelectSheetPage from "../pages/components/selectSheet";
+import SeperatorPage from "../pages/components/seperator";
+import SiteLogoPage from "../pages/components/siteLogo";
+import SnackBarPage from "../pages/components/snackBar";
+import StateCardPage from "../pages/components/stateCard";
+import StickerPage from "../pages/components/sticker";
+import SwitchPage from "../pages/components/switch";
+import TextPage from "../pages/components/text";
+import TextAreaInputPage from "../pages/components/textAreaInput";
+import TextInputPage from "../pages/components/textInput";
+import ThemeSwitcherPage from "../pages/components/themeSwitcher";
+import TimeSelectorPage from "../pages/components/timeSelector";
+import ToastPage from "../pages/components/toast";
+import WebScrollbarPage from "../pages/components/webScrollbar";
+import YearSelectorPage from "../pages/components/yearSelector";
+
+import LocaleExamplesPage from "../pages/coreFeatures/localeExamples";
+import ThemeExamplesPage from "../pages/coreFeatures/themeExamples";
+import ToolsUsagePage from "../pages/coreFeatures/toolsUsage";
 import Home from "../pages/home";
 import Home from "../pages/home";
+import ImplementationPage from "../pages/implementation";
+import InstallationPage from "../pages/installation";
 
 
 const RootStack = createNativeStackNavigator();
 const RootStack = createNativeStackNavigator();
 const ComponentsStack = createNativeStackNavigator();
 const ComponentsStack = createNativeStackNavigator();
+const GettingStartedStack = createNativeStackNavigator();
+const CoreFeaturesStack = createNativeStackNavigator();
+
+const CoreFeaturesNav = () => {
+    return <CoreFeaturesStack.Navigator
+        initialRouteName="ToolsUsage"
+        screenOptions={{
+            headerShown: true
+        }}
+    >
+        <CoreFeaturesStack.Screen
+            component={ToolsUsagePage}
+            name="ToolsUsage"
+        />
+        <CoreFeaturesStack.Screen
+            component={ThemeExamplesPage}
+            name="ThemeExamples"
+        />
+        <CoreFeaturesStack.Screen
+            component={LocaleExamplesPage}
+            name="LocaleExamples"
+        />
+        <CoreFeaturesStack.Screen
+            component={TypesOverridePage}
+            name="TypesOverride"
+        />
+    </CoreFeaturesStack.Navigator>;
+};
+
+const GettingStartedNav = () => {
+    return <GettingStartedStack.Navigator
+        initialRouteName="Installation"
+        screenOptions={{
+            headerShown: true
+        }}
+    >
+        <GettingStartedStack.Screen
+            component={InstallationPage}
+            name="Installation"
+        />
+        <GettingStartedStack.Screen
+            component={ImplementationPage}
+            name="Implementation"
+        />
+    </GettingStartedStack.Navigator>;
+};
 
 
 const ComponentsNav = () => {
 const ComponentsNav = () => {
     return <ComponentsStack.Navigator
     return <ComponentsStack.Navigator
@@ -43,20 +140,235 @@ const ComponentsNav = () => {
         }}
         }}
     >
     >
         <ComponentsStack.Screen
         <ComponentsStack.Screen
-            name="Text"
-            component={TextPage}
+            component={AvatarPage}
+            name="Avatar"
+        />
+        <ComponentsStack.Screen
+            component={AvatarGroupPage}
+            name="AvatarGroup"
+        />
+        <ComponentsStack.Screen
+            component={BottomSheetPage}
+            name="BottomSheet"
         />
         />
         <ComponentsStack.Screen
         <ComponentsStack.Screen
-            name="Button"
             component={ButtonPage}
             component={ButtonPage}
+            name="Button"
+        />
+        <ComponentsStack.Screen
+            component={CheckBoxPage}
+            name="CheckBox"
+        />
+        <ComponentsStack.Screen
+            component={ChipPage}
+            name="Chip"
+        />
+        <ComponentsStack.Screen
+            component={DateSelectorPage}
+            name="DateSelector"
+        />
+        <ComponentsStack.Screen
+            component={DateTimePickerPage}
+            name="DateTimePicker"
+        />
+        <ComponentsStack.Screen
+            component={DateTimeSheetPage}
+            name="DateTimeSheet"
+        />
+        <ComponentsStack.Screen
+            component={DialogPage}
+            name="Dialog"
+        />
+        <ComponentsStack.Screen
+            component={EmbeddedMenuPage}
+            name="EmbeddedMenu"
+        />
+        <ComponentsStack.Screen
+            component={HeaderPage}
+            name="Header"
+        />
+        <ComponentsStack.Screen
+            component={HighlightButtonPage}
+            name="HighlightButton"
+        />
+        <ComponentsStack.Screen
+            component={LoadingPage}
+            name="Loading"
+        />
+        <ComponentsStack.Screen
+            component={LocaleSwitcherPage}
+            name="LocaleSwitcher"
+        />
+        <ComponentsStack.Screen
+            component={MainHeaderPage}
+            name="MainHeader"
+        />
+        <ComponentsStack.Screen
+            component={MarkdownViewerPage}
+            name="MarkdownViewer"
+        />
+        <ComponentsStack.Screen
+            component={MenuPage}
+            name="Menu"
+        />
+        <ComponentsStack.Screen
+            component={ModalPage}
+            name="Modal"
+        />
+        <ComponentsStack.Screen
+            component={MonthSelectorPage}
+            name="MonthSelector"
+        />
+        <ComponentsStack.Screen
+            component={NotificationIndicatorPage}
+            name="NotificationIndicator"
+        />
+        <ComponentsStack.Screen
+            component={NumericInputPage}
+            name="NumericInput"
+        />
+        <ComponentsStack.Screen
+            component={PageContainerPage}
+            name="PageContainer"
+        />
+        <ComponentsStack.Screen
+            component={PaletteSwitcherPage}
+            name="PaletteSwitcher"
+        />
+        <ComponentsStack.Screen
+            component={RadioButtonPage}
+            name="RadioButton"
+        />
+        <ComponentsStack.Screen
+            component={RowCardPage}
+            name="RowCard"
+        />
+        <ComponentsStack.Screen
+            component={SelectBoxPage}
+            name="SelectBox"
+        />
+        <ComponentsStack.Screen
+            component={SelectSheetPage}
+            name="SelectSheet"
+        />
+        <ComponentsStack.Screen
+            component={SeperatorPage}
+            name="Seperator"
+        />
+        <ComponentsStack.Screen
+            component={SiteLogoPage}
+            name="SiteLogo"
+        />
+        <ComponentsStack.Screen
+            component={SnackBarPage}
+            name="SnackBar"
+        />
+        <ComponentsStack.Screen
+            component={StateCardPage}
+            name="StateCard"
+        />
+        <ComponentsStack.Screen
+            component={StickerPage}
+            name="Sticker"
+        />
+        <ComponentsStack.Screen
+            component={SwitchPage}
+            name="Switch"
+        />
+        <ComponentsStack.Screen
+            component={TextPage}
+            name="Text"
+        />
+        <ComponentsStack.Screen
+            component={TextAreaInputPage}
+            name="TextAreaInput"
+        />
+        <ComponentsStack.Screen
+            component={TextInputPage}
+            name="TextInput"
+        />
+        <ComponentsStack.Screen
+            component={ThemeSwitcherPage}
+            name="ThemeSwitcher"
+        />
+        <ComponentsStack.Screen
+            component={TimeSelectorPage}
+            name="TimeSelector"
+        />
+        <ComponentsStack.Screen
+            component={ToastPage}
+            name="Toast"
+        />
+        <ComponentsStack.Screen
+            component={WebScrollbarPage}
+            name="WebScrollbar"
+        />
+        <ComponentsStack.Screen
+            component={YearSelectorPage}
+            name="YearSelector"
         />
         />
     </ComponentsStack.Navigator>;
     </ComponentsStack.Navigator>;
 };
 };
 
 
+const RenderHomeIcon = ({
+    color
+}: {
+    color: keyof NCoreUIKit.IconContentColors;
+}) => {
+    const {
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    return <HomeIcon
+        color={colors.content.icon[color]}
+    />;
+};
+
+const RenderComponentIcon = ({
+    color
+}: {
+    color: keyof NCoreUIKit.IconContentColors;
+}) => {
+    const {
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    return <ComponentIcon
+        color={colors.content.icon[color]}
+    />;
+};
+
+const RenderGettingStartedIcon = ({
+    color
+}: {
+    color: keyof NCoreUIKit.IconContentColors;
+}) => {
+    const {
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    return <GoalIcon
+        color={colors.content.icon[color]}
+    />;
+};
+
+const RenderCoreFeaturesIcon = ({
+    color
+}: {
+    color: keyof NCoreUIKit.IconContentColors;
+}) => {
+    const {
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    return <SettingsIcon
+        color={colors.content.icon[color]}
+    />;
+};
+
 const RootNav = () => {
 const RootNav = () => {
     const {
     const {
         activeTheme,
         activeTheme,
-        colors,
         spaces
         spaces
     } = NCoreUIKitTheme.useContext();
     } = NCoreUIKitTheme.useContext();
 
 
@@ -83,10 +395,72 @@ const RootNav = () => {
                     title: "home",
                     title: "home",
                     icon: ({
                     icon: ({
                         color
                         color
-                    }) => <HomeIcon
-                        color={colors.content.icon[color]}
+                    }) => <RenderHomeIcon
+                        color={color}
                     />
                     />
                 },
                 },
+                {
+                    redirectMain: "GettingStarted",
+                    isCollapsible: true,
+                    title: "gettingStarted",
+                    isUseLocalize: true,
+                    icon: ({
+                        color
+                    }) => <RenderGettingStartedIcon
+                        color={color}
+                    />,
+                    subButtons: [
+                        {
+                            redirectMain: "GettingStarted",
+                            redirectSub: "Installation",
+                            title: "installation",
+                            isUseLocalize: true
+                        },
+                        {
+                            redirectMain: "GettingStarted",
+                            redirectSub: "Implementation",
+                            title: "implementation",
+                            isUseLocalize: true
+                        }
+                    ]
+                },
+                {
+                    redirectMain: "CoreFeatures",
+                    isCollapsible: true,
+                    title: "coreFeatures",
+                    isUseLocalize: true,
+                    icon: ({
+                        color
+                    }) => <RenderCoreFeaturesIcon
+                        color={color}
+                    />,
+                    subButtons: [
+                        {
+                            redirectMain: "CoreFeatures",
+                            redirectSub: "ToolsUsage",
+                            title: "toolsUsage",
+                            isUseLocalize: true
+                        },
+                        {
+                            redirectMain: "CoreFeatures",
+                            redirectSub: "ThemeExamples",
+                            title: "themeExamples",
+                            isUseLocalize: true
+                        },
+                        {
+                            redirectMain: "CoreFeatures",
+                            redirectSub: "LocaleExamples",
+                            title: "localeExamples",
+                            isUseLocalize: true
+                        },
+                        {
+                            redirectMain: "CoreFeatures",
+                            redirectSub: "TypesOverride",
+                            title: "typesOverride",
+                            isUseLocalize: true
+                        }
+                    ]
+                },
                 {
                 {
                     redirectMain: "Components",
                     redirectMain: "Components",
                     isUseLocalize: true,
                     isUseLocalize: true,
@@ -94,8 +468,8 @@ const RootNav = () => {
                     title: "components",
                     title: "components",
                     icon: ({
                     icon: ({
                         color
                         color
-                    }) => <ComponentIcon
-                        color={colors.content.icon[color]}
+                    }) => <RenderComponentIcon
+                        color={color}
                     />,
                     />,
                     subButtons: [
                     subButtons: [
                         {
                         {
@@ -107,6 +481,206 @@ const RootNav = () => {
                             redirectMain: "Components",
                             redirectMain: "Components",
                             redirectSub: "Button",
                             redirectSub: "Button",
                             title: "Button"
                             title: "Button"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "HighlightButton",
+                            title: "HighlightButton"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "TextInput",
+                            title: "TextInput"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "TextAreaInput",
+                            title: "TextAreaInput"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "NumericInput",
+                            title: "NumericInput"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "SelectBox",
+                            title: "SelectBox"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "SelectSheet",
+                            title: "SelectSheet"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "CheckBox",
+                            title: "CheckBox"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "RadioButton",
+                            title: "RadioButton"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "Switch",
+                            title: "Switch"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "DateTimePicker",
+                            title: "DateTimePicker"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "DateTimeSheet",
+                            title: "DateTimeSheet"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "DateSelector",
+                            title: "DateSelector"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "TimeSelector",
+                            title: "TimeSelector"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "MonthSelector",
+                            title: "MonthSelector"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "YearSelector",
+                            title: "YearSelector"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "Avatar",
+                            title: "Avatar"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "AvatarGroup",
+                            title: "AvatarGroup"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "Chip",
+                            title: "Chip"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "Sticker",
+                            title: "Sticker"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "RowCard",
+                            title: "RowCard"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "StateCard",
+                            title: "StateCard"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "Dialog",
+                            title: "Dialog"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "Modal",
+                            title: "Modal"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "BottomSheet",
+                            title: "BottomSheet"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "SnackBar",
+                            title: "SnackBar"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "Toast",
+                            title: "Toast"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "Loading",
+                            title: "Loading"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "NotificationIndicator",
+                            title: "NotificationIndicator"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "MarkdownViewer",
+                            title: "MarkdownViewer"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "Seperator",
+                            title: "Seperator"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "SiteLogo",
+                            title: "SiteLogo"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "WebScrollbar",
+                            title: "WebScrollbar"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "PageContainer",
+                            title: "PageContainer"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "Header",
+                            title: "Header"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "MainHeader",
+                            title: "MainHeader"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "Menu",
+                            title: "Menu"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "EmbeddedMenu",
+                            title: "EmbeddedMenu"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "ThemeSwitcher",
+                            title: "ThemeSwitcher"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "PaletteSwitcher",
+                            title: "PaletteSwitcher"
+                        },
+                        {
+                            redirectMain: "Components",
+                            redirectSub: "LocaleSwitcher",
+                            title: "LocaleSwitcher"
                         }
                         }
                     ]
                     ]
                 }
                 }
@@ -196,6 +770,14 @@ const RootNav = () => {
                     headerShown: false
                     headerShown: false
                 }}
                 }}
             >
             >
+                <RootStack.Screen
+                    component={GettingStartedNav}
+                    name="GettingStarted"
+                />
+                <RootStack.Screen
+                    component={CoreFeaturesNav}
+                    name="CoreFeatures"
+                />
                 <RootStack.Screen
                 <RootStack.Screen
                     component={Home}
                     component={Home}
                     name="Home"
                     name="Home"
@@ -218,15 +800,74 @@ const Navigation = () => {
             ],
             ],
             config: {
             config: {
                 screens: {
                 screens: {
-                    Home: "",
+                    Home: "home",
+                    GettingStarted: {
+                        path: "gettingstarted",
+                        screens: {
+                            Installation: "installation",
+                            Implementation: "implementation"
+                        }
+                    },
+                    CoreFeatures: {
+                        path: "corefeatures",
+                        screens: {
+                            ToolsUsage: "toolsusage",
+                            ThemeExamples: "themeexamples",
+                            LocaleExamples: "localeexamples",
+                            TypesOverride: "typesoverride"
+                        }
+                    },
                     Components: {
                     Components: {
-                        path: "Components",
+                        path: "components",
                         screens: {
                         screens: {
+                            Avatar: "avatar",
+                            AvatarGroup: "avatargroup",
+                            BottomSheet: "bottomsheet",
                             Button: "button",
                             Button: "button",
-                            Text: "text"
+                            CheckBox: "checkbox",
+                            Chip: "chip",
+                            DateSelector: "dateselector",
+                            DateTimePicker: "datetimepicker",
+                            DateTimeSheet: "datetimesheet",
+                            Dialog: "dialog",
+                            EmbeddedMenu: "embeddedmenu",
+                            Header: "header",
+                            HighlightButton: "highlightbutton",
+                            Loading: "loading",
+                            LocaleSwitcher: "localeswitcher",
+                            MainHeader: "mainheader",
+                            MarkdownViewer: "markdownviewer",
+                            Menu: "menu",
+                            Modal: "modal",
+                            MonthSelector: "monthselector",
+                            NotificationIndicator: "notificationindicator",
+                            NumericInput: "numericinput",
+                            PageContainer: "pagecontainer",
+                            PaletteSwitcher: "paletteswitcher",
+                            RadioButton: "radiobutton",
+                            RowCard: "rowcard",
+                            SelectBox: "selectbox",
+                            SelectSheet: "selectsheet",
+                            Seperator: "seperator",
+                            SiteLogo: "sitelogo",
+                            SnackBar: "snackbar",
+                            StateCard: "statecard",
+                            Sticker: "sticker",
+                            Switch: "switch",
+                            Text: "text",
+                            TextAreaInput: "textareainput",
+                            TextInput: "textinput",
+                            ThemeSwitcher: "themeswitcher",
+                            TimeSelector: "timeselector",
+                            Toast: "toast",
+                            WebScrollbar: "webscrollbar",
+                            YearSelector: "yearselector"
                         }
                         }
                     }
                     }
                 }
                 }
+            },
+            getStateFromPath: (path, options) => {
+                return getStateFromPath(path.toLowerCase(), options);
             }
             }
         } as LinkingOptions<RootStackParamList>}
         } as LinkingOptions<RootStackParamList>}
     >
     >

+ 50 - 0
example/src/navigation/type.ts

@@ -2,12 +2,62 @@ import type {
     NavigatorScreenParams
     NavigatorScreenParams
 } from "@react-navigation/native";
 } from "@react-navigation/native";
 
 
+export type GettingStartedStackParamList = {
+    Implementation: undefined;
+    Installation: undefined;
+};
+
+export type CoreFeaturesStackParamList = {
+    TypesOverride: undefined;
+    LocaleExamples: undefined;
+    ThemeExamples: undefined;
+    ToolsUsage: undefined;
+};
+
 export type ComponentsStackParamList = {
 export type ComponentsStackParamList = {
+    NotificationIndicator: undefined;
+    HighlightButton: undefined;
+    PaletteSwitcher: undefined;
+    DateTimePicker: undefined;
+    MarkdownViewer: undefined;
+    LocaleSwitcher: undefined;
+    DateTimeSheet: undefined;
+    TextAreaInput: undefined;
+    PageContainer: undefined;
+    MonthSelector: undefined;
+    ThemeSwitcher: undefined;
+    DateSelector: undefined;
+    NumericInput: undefined;
+    TimeSelector: undefined;
+    YearSelector: undefined;
+    WebScrollbar: undefined;
+    AvatarGroup: undefined;
+    BottomSheet: undefined;
+    RadioButton: undefined;
+    SelectSheet: undefined;
+    SelectBox: undefined;
+    Seperator: undefined;
+    StateCard: undefined;
+    TextInput: undefined;
+    CheckBox: undefined;
+    SiteLogo: undefined;
+    SnackBar: undefined;
+    Loading: undefined;
+    RowCard: undefined;
+    Sticker: undefined;
+    Avatar: undefined;
     Button: undefined;
     Button: undefined;
+    Dialog: undefined;
+    Switch: undefined;
+    Modal: undefined;
+    Toast: undefined;
+    Chip: undefined;
     Text: undefined;
     Text: undefined;
 };
 };
 
 
 type RootStackParamList = {
 type RootStackParamList = {
+    CoreFeatures: NavigatorScreenParams<CoreFeaturesStackParamList>;
+    GettingStarted: NavigatorScreenParams<GettingStartedStackParamList>;
     Components: NavigatorScreenParams<ComponentsStackParamList>;
     Components: NavigatorScreenParams<ComponentsStackParamList>;
     Home: undefined;
     Home: undefined;
 };
 };

+ 270 - 0
example/src/pages/components/avatar/index.tsx

@@ -0,0 +1,270 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    SelectBox,
+    TextInput,
+    Avatar,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    IAvatarProps
+} from "ncore-ui-kit";
+
+const AVATAR_SIZES: Array<IAvatarProps["size"]> = [
+    "small",
+    "medium",
+    "large",
+    "xLarge",
+    "xSmall"
+];
+const AVATAR_STATUS_INDICATOR_TYPES: Array<IAvatarProps["statusIndicatorType"]> = [
+    "online",
+    "offline",
+    "busy",
+    "away",
+    "idle"
+];
+
+const AVATAR_SIZES_DATA = AVATAR_SIZES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const AVATAR_STATUS_INDICATOR_TYPES_DATA = AVATAR_STATUS_INDICATOR_TYPES.map(
+    (item) => ({
+        __title: item as string,
+        __key: item as string
+    }),
+);
+
+const AvatarPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        statusIndicatorIndex,
+        setStatusIndicatorIndex
+    ] = useState<number>(1);
+
+    const [
+        sizeIndex,
+        setSizeIndex
+    ] = useState<number>(3);
+
+    const [
+        isDisabled,
+        setIsDisabled
+    ] = useState<boolean>(false);
+
+    const [
+        isLoading,
+        setIsLoading
+    ] = useState<boolean>(false);
+
+    const [
+        imageUrl,
+        setImageUrl
+    ] = useState<string>(
+        "https://ncore.nibgat.space/assets/images/ncorelogo.png",
+    );
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("John Doe");
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("avatar-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("avatar-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <Avatar
+                        statusIndicatorType={
+                            AVATAR_STATUS_INDICATOR_TYPES[statusIndicatorIndex]
+                        }
+                        size={AVATAR_SIZES[sizeIndex]}
+                        isStatusIndicator={true}
+                        isDisabled={isDisabled}
+                        isLoading={isLoading}
+                        imageUrl={imageUrl}
+                        title={title}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("avatar-enterImageUrl")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    title={localize("avatar-imageUrl")}
+                    onChangeText={setImageUrl}
+                    spreadBehaviour="stretch"
+                    value={imageUrl}
+                />
+                <TextInput
+                    placeholder={localize("avatar-enterText")}
+                    title={localize("avatar-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = AVATAR_SIZES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as IAvatarProps["size"],
+                                );
+                                if (index !== -1) setSizeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            AVATAR_SIZES_DATA[sizeIndex]
+                                ? [AVATAR_SIZES_DATA[sizeIndex]]
+                                : []
+                        }
+                        title={localize("change-size")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        data={AVATAR_SIZES_DATA}
+                        spreadBehaviour="free"
+                    />
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index =
+                                    AVATAR_STATUS_INDICATOR_TYPES.indexOf(
+                                        selectedItems[0]!
+                                            .__key as IAvatarProps["statusIndicatorType"],
+                                    );
+                                if (index !== -1)
+                                    setStatusIndicatorIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            AVATAR_STATUS_INDICATOR_TYPES_DATA[
+                                statusIndicatorIndex
+                            ]
+                                ? [
+                                    AVATAR_STATUS_INDICATOR_TYPES_DATA[
+                                        statusIndicatorIndex
+                                    ],
+                                ]
+                                : []
+                        }
+                        title={localize("avatar-changeStatus")}
+                        data={AVATAR_STATUS_INDICATOR_TYPES_DATA}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                    />
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            title={localize("avatar-toggleLoading")}
+                            onPress={() => {
+                                setIsLoading(!isLoading);
+                            }}
+                            isActive={isLoading}
+                        />
+                        <Switch
+                            onPress={() => {
+                                setIsDisabled(!isDisabled);
+                            }}
+                            title={localize("avatar-toggleDisabled")}
+                            isActive={isDisabled}
+                        />
+                    </View>
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default AvatarPage;

+ 0 - 0
example/src/pages/button/stylesheet.ts → example/src/pages/components/avatar/stylesheet.ts


+ 202 - 0
example/src/pages/components/avatarGroup/index.tsx

@@ -0,0 +1,202 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    AvatarGroup,
+    SelectBox,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    IAvatarGroupProps
+} from "ncore-ui-kit";
+
+const AVATAR_GROUP_SIZES: Array<IAvatarGroupProps["size"]> = [
+    "small",
+    "medium",
+    "large",
+    "xLarge",
+    "xSmall"
+];
+
+const AVATAR_GROUP_SIZES_DATA = AVATAR_GROUP_SIZES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const MOCK_AVATARS = [
+    {
+        imageUrl: "https://ncore.nibgat.space/assets/images/ncorelogo.png",
+        title: "Ncore System"
+    },
+    {
+        title: "Jane Smith"
+    },
+    {
+        title: "Mike Ross"
+    },
+    {
+        title: "John Doe"
+    }
+];
+
+const AvatarGroupPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        sizeIndex,
+        setSizeIndex
+    ] = useState<number>(3);
+
+    const [
+        isDisabled,
+        setIsDisabled
+    ] = useState<boolean>(false);
+
+    const [
+        isLoading,
+        setIsLoading
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("avatarGroup-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("avatarGroup-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <AvatarGroup
+                        size={AVATAR_GROUP_SIZES[sizeIndex]}
+                        isDisabled={isDisabled}
+                        avatars={MOCK_AVATARS}
+                        isLoading={isLoading}
+                    />
+                </View>
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = AVATAR_GROUP_SIZES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as IAvatarGroupProps["size"],
+                                );
+                                if (index !== -1) setSizeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            AVATAR_GROUP_SIZES_DATA[sizeIndex]
+                                ? [AVATAR_GROUP_SIZES_DATA[sizeIndex]]
+                                : []
+                        }
+                        title={localize("avatarGroup-changeSize")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        data={AVATAR_GROUP_SIZES_DATA}
+                        spreadBehaviour="free"
+                    />
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            title={localize("avatarGroup-toggleLoading")}
+                            onPress={() => {
+                                setIsLoading(!isLoading);
+                            }}
+                            isActive={isLoading}
+                        />
+                        <Switch
+                            title={localize(
+                                "avatarGroup-toggleDisabled",
+                            )}
+                            onPress={() => {
+                                setIsDisabled(!isDisabled);
+                            }}
+                            isActive={isDisabled}
+                        />
+                    </View>
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default AvatarGroupPage;

+ 18 - 0
example/src/pages/components/avatarGroup/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 188 - 0
example/src/pages/components/bottomSheet/index.tsx

@@ -0,0 +1,188 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    BottomSheet,
+    Button,
+    Header,
+    Switch,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const BottomSheetPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        isWorkWithPortal,
+        setIsWorkWithPortal
+    ] = useState<boolean>(true);
+
+    const [
+        isSwipeClose,
+        setIsSwipeClose
+    ] = useState<boolean>(true);
+
+    const [
+        isShowHandle,
+        setIsShowHandle
+    ] = useState<boolean>(true);
+
+    const [
+        isActive,
+        setIsActive
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("bottomSheet-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("bottomSheet-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <Button
+                        title={localize("bottomSheet-openSheet")}
+                        onPress={() => setIsActive(true)}
+                    />
+                </View>
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            title={localize(
+                                "bottomSheet-toggleSwipeClose",
+                            )}
+                            onPress={() => {
+                                setIsSwipeClose(!isSwipeClose);
+                            }}
+                            isActive={isSwipeClose}
+                        />
+                        <Switch
+                            title={localize(
+                                "bottomSheet-toggleShowHandle",
+                            )}
+                            onPress={() => {
+                                setIsShowHandle(!isShowHandle);
+                            }}
+                            isActive={isShowHandle}
+                        />
+                        <Switch
+                            onPress={() => {
+                                setIsWorkWithPortal(!isWorkWithPortal);
+                            }}
+                            title={localize("bottomSheet-togglePortal")}
+                            isActive={isWorkWithPortal}
+                        />
+                    </View>
+                </View>
+            </View>
+            <BottomSheet
+                isWorkWithPortal={isWorkWithPortal}
+                onClose={() => setIsActive(false)}
+                isSwipeClose={isSwipeClose}
+                isShowHandle={isShowHandle}
+                isActive={isActive}
+            >
+                <View
+                    style={{
+                        padding: spaces.spacingMd
+                    }}
+                >
+                    <Text
+                        style={{
+                            marginBottom: spaces.spacingMd,
+                            textAlign: "center"
+                        }}
+                    >
+                        {localize("bottomSheet-content")}
+                    </Text>
+                    <Button
+                        title={localize("bottomSheet-close")}
+                        onPress={() => setIsActive(false)}
+                        spreadBehaviour="stretch"
+                        type="danger"
+                    />
+                </View>
+            </BottomSheet>
+        </PageContainer>
+    );
+};
+export default BottomSheetPage;

+ 18 - 0
example/src/pages/components/bottomSheet/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 22 - 12
example/src/pages/button/index.tsx → example/src/pages/components/button/index.tsx

@@ -8,14 +8,15 @@ import {
 import stylesheet from "./stylesheet";
 import stylesheet from "./stylesheet";
 import {
 import {
     NCoreUIKitLocalize,
     NCoreUIKitLocalize,
-    type IButtonProps,
     NCoreUIKitTheme,
     NCoreUIKitTheme,
     PageContainer,
     PageContainer,
     SelectBox,
     SelectBox,
     TextInput,
     TextInput,
     Button,
     Button,
-    Switch,
-    Header
+    Header,
+    Switch
+    ,
+    Text
 } from "ncore-ui-kit";
 } from "ncore-ui-kit";
 import {
 import {
     useNavigation
     useNavigation
@@ -24,6 +25,9 @@ import type RootStackParamList from "../../navigation/type";
 import type {
 import type {
     NativeStackNavigationProp
     NativeStackNavigationProp
 } from "@react-navigation/native-stack";
 } from "@react-navigation/native-stack";
+import type {
+    IButtonProps
+} from "ncore-ui-kit";
 import {
 import {
     Home as HomeIcon
     Home as HomeIcon
 } from "lucide-react-native";
 } from "lucide-react-native";
@@ -32,23 +36,14 @@ const BUTTON_TYPES: Array<IButtonProps["type"]> = [
     "primary",
     "primary",
     "danger",
     "danger",
     "warning",
     "warning",
-    "neutral",
     "success",
     "success",
     "info"
     "info"
 ];
 ];
-
-const BUTTON_SPREAD_BEHAVIOURS: Array<IButtonProps["spreadBehaviour"]> = [
-    "baseline",
-    "stretch",
-    "free"
-];
-
 const BUTTON_VARIANTS: Array<IButtonProps["variant"]> = [
 const BUTTON_VARIANTS: Array<IButtonProps["variant"]> = [
     "filled",
     "filled",
     "outline",
     "outline",
     "ghost"
     "ghost"
 ];
 ];
-
 const BUTTON_SIZES: Array<IButtonProps["size"]> = [
 const BUTTON_SIZES: Array<IButtonProps["size"]> = [
     "small",
     "small",
     "medium",
     "medium",
@@ -60,6 +55,12 @@ const BUTTON_TYPES_DATA = BUTTON_TYPES.map(item => ({
     __title: item as string
     __title: item as string
 }));
 }));
 
 
+const BUTTON_SPREAD_BEHAVIOURS: Array<IButtonProps["spreadBehaviour"]> = [
+    "baseline",
+    "stretch",
+    "free"
+];
+
 const BUTTON_VARIANTS_DATA = BUTTON_VARIANTS.map(item => ({
 const BUTTON_VARIANTS_DATA = BUTTON_VARIANTS.map(item => ({
     __key: item as string,
     __key: item as string,
     __title: item as string
     __title: item as string
@@ -161,6 +162,15 @@ const ButtonPage = () => {
                 stylesheet.contentContainer
                 stylesheet.contentContainer
             ]}
             ]}
         >
         >
+            <Text
+                variant="bodyMediumSize"
+                color="mid"
+                style={{
+                    marginBottom: 20
+                }}
+            >
+                {localize("button-desc")}
+            </Text>
             <View
             <View
                 style={{
                 style={{
                     borderColor: colors.content.border.subtle,
                     borderColor: colors.content.border.subtle,

+ 18 - 0
example/src/pages/components/button/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 317 - 0
example/src/pages/components/checkBox/index.tsx

@@ -0,0 +1,317 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    type ICheckBoxProps,
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    SelectBox,
+    TextInput,
+    CheckBox,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const CHECK_BOX_TYPES: Array<ICheckBoxProps["type"]> = [
+    "primary",
+    "danger",
+    "warning",
+    "success",
+    "info"
+];
+
+const CHECK_BOX_SPREAD_BEHAVIOURS: Array<ICheckBoxProps["spreadBehaviour"]> = [
+    "baseline",
+    "stretch",
+    "free"
+];
+
+const CHECK_BOX_TYPES_DATA = CHECK_BOX_TYPES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const CHECK_BOX_SPREAD_BEHAVIOURS_DATA = CHECK_BOX_SPREAD_BEHAVIOURS.map(
+    (item) => ({
+        __title: item as string,
+        __key: item as string
+    }),
+);
+
+type IsCheckedType = "checked" | "partially" | null;
+
+const IS_CHECKED_TYPES: Array<IsCheckedType> = [
+    "partially",
+    "checked",
+    null
+];
+
+const IS_CHECKED_TYPES_DATA = IS_CHECKED_TYPES.map((item) => ({
+    __title: String(item),
+    __key: String(item)
+}));
+
+const CheckBoxPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        spreadIndex,
+        setSpreadIndex
+    ] = useState<number>(0);
+
+    const [
+        typeIndex,
+        setTypeIndex
+    ] = useState<number>(0);
+
+    const [
+        isCheckedIndex,
+        setIsCheckedIndex
+    ] = useState<number>(0);
+
+    const [
+        isDisabled,
+        setIsDisabled
+    ] = useState<boolean>(false);
+
+    const [
+        isLoading,
+        setIsLoading
+    ] = useState<boolean>(false);
+
+    const [
+        subTitle,
+        setSubTitle
+    ] = useState<string>("Subtitle");
+
+    const [
+        isFlip,
+        setIsFlip
+    ] = useState<boolean>(false);
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("CheckBox Title");
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("checkBox-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("checkBox-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <CheckBox
+                        onPress={() => {
+                            setIsCheckedIndex((prev) => (prev === 0 ? 2 : 0));
+                        }}
+                        spreadBehaviour={
+                            CHECK_BOX_SPREAD_BEHAVIOURS[spreadIndex]
+                        }
+                        isChecked={IS_CHECKED_TYPES[isCheckedIndex]}
+                        type={CHECK_BOX_TYPES[typeIndex]}
+                        isDisabled={isDisabled}
+                        isLoading={isLoading}
+                        subTitle={subTitle}
+                        isFlip={isFlip}
+                        title={title}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("checkBox-enterText")}
+                    title={localize("checkBox-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <TextInput
+                    placeholder={localize("checkBox-enterSubText")}
+                    title={localize("checkBox-subTitleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    onChangeText={setSubTitle}
+                    spreadBehaviour="stretch"
+                    value={subTitle}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = CHECK_BOX_TYPES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as ICheckBoxProps["type"],
+                                );
+                                if (index !== -1) setTypeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            CHECK_BOX_TYPES_DATA[typeIndex]
+                                ? [CHECK_BOX_TYPES_DATA[typeIndex]]
+                                : []
+                        }
+                        title={localize("checkBox-changeType")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        data={CHECK_BOX_TYPES_DATA}
+                        spreadBehaviour="free"
+                    />
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index =
+                                    CHECK_BOX_SPREAD_BEHAVIOURS.indexOf(
+                                        selectedItems[0]!
+                                            .__key as ICheckBoxProps["spreadBehaviour"],
+                                    );
+                                if (index !== -1) setSpreadIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            CHECK_BOX_SPREAD_BEHAVIOURS_DATA[spreadIndex]
+                                ? [
+                                    CHECK_BOX_SPREAD_BEHAVIOURS_DATA[
+                                        spreadIndex
+                                    ],
+                                ]
+                                : []
+                        }
+                        title={localize("checkBox-changeSpread")}
+                        data={CHECK_BOX_SPREAD_BEHAVIOURS_DATA}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                    />
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = IS_CHECKED_TYPES_DATA.findIndex(
+                                    (item) =>
+                                        item.__key === selectedItems[0]!.__key,
+                                );
+                                if (index !== -1) setIsCheckedIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            IS_CHECKED_TYPES_DATA[isCheckedIndex]
+                                ? [IS_CHECKED_TYPES_DATA[isCheckedIndex]]
+                                : []
+                        }
+                        title={localize("checkBox-changeIsChecked")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        data={IS_CHECKED_TYPES_DATA}
+                        spreadBehaviour="free"
+                    />
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            title={localize("checkBox-toggleLoading")}
+                            onPress={() => {
+                                setIsLoading(!isLoading);
+                            }}
+                            isActive={isLoading}
+                        />
+                        <Switch
+                            title={localize("checkBox-toggleDisabled")}
+                            onPress={() => {
+                                setIsDisabled(!isDisabled);
+                            }}
+                            isActive={isDisabled}
+                        />
+                        <Switch
+                            title={localize("checkBox-toggleFlip")}
+                            onPress={() => {
+                                setIsFlip(!isFlip);
+                            }}
+                            isActive={isFlip}
+                        />
+                    </View>
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default CheckBoxPage;

+ 18 - 0
example/src/pages/components/checkBox/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 286 - 0
example/src/pages/components/chip/index.tsx

@@ -0,0 +1,286 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    SelectBox,
+    TextInput,
+    Header,
+    Switch,
+    Chip
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    IChipProps
+} from "ncore-ui-kit";
+
+const CHIP_TYPES: Array<IChipProps["type"]> = [
+    "primary",
+    "danger",
+    "warning",
+    "success",
+    "info"
+];
+const CHIP_SPREAD_BEHAVIOURS: Array<IChipProps["spreadBehaviour"]> = [
+    "baseline",
+    "free"
+];
+const CHIP_SIZES: Array<IChipProps["size"]> = [
+    "small",
+    "medium",
+    "large"
+];
+
+const CHIP_TYPES_DATA = CHIP_TYPES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const CHIP_SPREAD_BEHAVIOURS_DATA = CHIP_SPREAD_BEHAVIOURS.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const CHIP_SIZES_DATA = CHIP_SIZES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const ChipPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        spreadIndex,
+        setSpreadIndex
+    ] = useState<number>(0);
+
+    const [
+        typeIndex,
+        setTypeIndex
+    ] = useState<number>(0);
+
+    const [
+        sizeIndex,
+        setSizeIndex
+    ] = useState<number>(1);
+
+    const [
+        isClosable,
+        setIsClosable
+    ] = useState<boolean>(true);
+
+    const [
+        isDisabled,
+        setIsDisabled
+    ] = useState<boolean>(false);
+
+    const [
+        isLoading,
+        setIsLoading
+    ] = useState<boolean>(false);
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("Chip Title");
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("chip-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("chip-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <Chip
+                        spreadBehaviour={CHIP_SPREAD_BEHAVIOURS[spreadIndex]}
+                        type={CHIP_TYPES[typeIndex]}
+                        size={CHIP_SIZES[sizeIndex]}
+                        isClosable={isClosable}
+                        isDisabled={isDisabled}
+                        isLoading={isLoading}
+                        title={title}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("chip-enterText")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    title={localize("chip-titleLabel")}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = CHIP_TYPES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as IChipProps["type"],
+                                );
+                                if (index !== -1) setTypeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            CHIP_TYPES_DATA[typeIndex]
+                                ? [CHIP_TYPES_DATA[typeIndex]]
+                                : []
+                        }
+                        title={localize("chip-changeType")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                        data={CHIP_TYPES_DATA}
+                    />
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = CHIP_SPREAD_BEHAVIOURS.indexOf(
+                                    selectedItems[0]!
+                                        .__key as IChipProps["spreadBehaviour"],
+                                );
+                                if (index !== -1) setSpreadIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            CHIP_SPREAD_BEHAVIOURS_DATA[spreadIndex]
+                                ? [CHIP_SPREAD_BEHAVIOURS_DATA[spreadIndex]]
+                                : []
+                        }
+                        title={localize("chip-changeSpread")}
+                        titleExtractor={(item) => item.__title}
+                        data={CHIP_SPREAD_BEHAVIOURS_DATA}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                    />
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = CHIP_SIZES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as IChipProps["size"],
+                                );
+                                if (index !== -1) setSizeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            CHIP_SIZES_DATA[sizeIndex]
+                                ? [CHIP_SIZES_DATA[sizeIndex]]
+                                : []
+                        }
+                        title={localize("chip-changeSize")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        data={CHIP_SIZES_DATA}
+                        spreadBehaviour="free"
+                    />
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            onPress={() => {
+                                setIsClosable(!isClosable);
+                            }}
+                            title={localize("chip-toggleClosable")}
+                            isActive={isClosable}
+                        />
+                        <Switch
+                            onPress={() => {
+                                setIsLoading(!isLoading);
+                            }}
+                            title={localize("chip-toggleLoading")}
+                            isActive={isLoading}
+                        />
+                        <Switch
+                            onPress={() => {
+                                setIsDisabled(!isDisabled);
+                            }}
+                            title={localize("chip-toggleDisabled")}
+                            isActive={isDisabled}
+                        />
+                    </View>
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default ChipPage;

+ 18 - 0
example/src/pages/components/chip/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 91 - 0
example/src/pages/components/dateSelector/index.tsx

@@ -0,0 +1,91 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    PageContainer,
+    DateSelector,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const DateSelectorPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        ,
+        setIsSheetContentReady
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-dateSelector")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("dateSelector-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-dateSelector")}
+                </Text>
+                <DateSelector
+                    setIsSheetContentReady={setIsSheetContentReady}
+                    selectMultipleObject={() => {}}
+                    selectObject={() => {}}
+                    variant="single"
+                />
+            </View>
+        </PageContainer>
+    );
+};
+export default DateSelectorPage;

+ 20 - 0
example/src/pages/components/dateSelector/stylesheet.ts

@@ -0,0 +1,20 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 307 - 0
example/src/pages/components/dateTimePicker/index.tsx

@@ -0,0 +1,307 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    DateTimePicker,
+    PageContainer,
+    SelectBox,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    DateTimePickerPickerType,
+    IDateTimePickerProps
+} from "ncore-ui-kit";
+
+const DATE_TIME_PICKER_TYPES: Array<IDateTimePickerProps["type"]> = [
+    "default",
+    "danger",
+    "warning",
+    "success",
+    "info",
+    "question"
+];
+const DATE_TIME_PICKER_SPREAD_BEHAVIOURS: Array<IDateTimePickerProps["spreadBehaviour"]> = [
+    "baseline",
+    "stretch",
+    "free"
+];
+const DATE_TIME_PICKER_PICKER_TYPES: Array<IDateTimePickerProps["pickerType"]> = [
+    "date",
+    "time",
+    "date-time"
+];
+const DATE_TIME_PICKER_VARIANTS: Array<IDateTimePickerProps["variant"]> = [
+    "single",
+    "range",
+    "rrule"
+];
+
+const DATE_TIME_PICKER_TYPES_DATA = DATE_TIME_PICKER_TYPES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const DATE_TIME_PICKER_SPREAD_BEHAVIOURS_DATA =
+    DATE_TIME_PICKER_SPREAD_BEHAVIOURS.map((item) => ({
+        __title: item as string,
+        __key: item as string
+    }));
+
+const DATE_TIME_PICKER_PICKER_TYPES_DATA = DATE_TIME_PICKER_PICKER_TYPES.map(
+    (item) => ({
+        __title: item as string,
+        __key: item as string
+    }),
+);
+
+const DATE_TIME_PICKER_VARIANTS_DATA = DATE_TIME_PICKER_VARIANTS.map(
+    (item) => ({
+        __title: item as string,
+        __key: item as string
+    }),
+);
+
+const DateTimePickerPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        spreadIndex,
+        setSpreadIndex
+    ] = useState<number>(1);
+
+    const [
+        pickerTypeIndex,
+        setPickerTypeIndex
+    ] = useState<number>(0);
+
+    const [
+        variantIndex,
+        setVariantIndex
+    ] = useState<number>(0);
+
+    const [
+        typeIndex,
+        setTypeIndex
+    ] = useState<number>(0);
+
+    const [
+        isDisabled,
+        setIsDisabled
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("dateTimePicker-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("dateTimePicker-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <DateTimePicker
+                        spreadBehaviour={
+                            DATE_TIME_PICKER_SPREAD_BEHAVIOURS[spreadIndex]
+                        }
+                        pickerType={
+                            DATE_TIME_PICKER_PICKER_TYPES[pickerTypeIndex]
+                        }
+                        variant={DATE_TIME_PICKER_VARIANTS[variantIndex]}
+                        title={localize("dateTimePicker-title")}
+                        type={DATE_TIME_PICKER_TYPES[typeIndex]}
+                        isDisabled={isDisabled}
+                    />
+                </View>
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = DATE_TIME_PICKER_TYPES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as IDateTimePickerProps["type"],
+                                );
+                                if (index !== -1) setTypeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            DATE_TIME_PICKER_TYPES_DATA[typeIndex]
+                                ? [DATE_TIME_PICKER_TYPES_DATA[typeIndex]]
+                                : []
+                        }
+                        title={localize("dateTimePicker-changeType")}
+                        titleExtractor={(item) => item.__title}
+                        data={DATE_TIME_PICKER_TYPES_DATA}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                    />
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index =
+                                    DATE_TIME_PICKER_SPREAD_BEHAVIOURS.indexOf(
+                                        selectedItems[0]!
+                                            .__key as IDateTimePickerProps["spreadBehaviour"],
+                                    );
+                                if (index !== -1) setSpreadIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            DATE_TIME_PICKER_SPREAD_BEHAVIOURS_DATA[spreadIndex]
+                                ? [
+                                    DATE_TIME_PICKER_SPREAD_BEHAVIOURS_DATA[
+                                        spreadIndex
+                                    ],
+                                ]
+                                : []
+                        }
+                        title={localize("dateTimePicker-changeSpread")}
+                        data={DATE_TIME_PICKER_SPREAD_BEHAVIOURS_DATA}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                    />
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index =
+                                    DATE_TIME_PICKER_PICKER_TYPES.indexOf(
+                                        selectedItems[0]!
+                                            .__key as DateTimePickerPickerType,
+                                    );
+                                if (index !== -1) setPickerTypeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            DATE_TIME_PICKER_PICKER_TYPES_DATA[pickerTypeIndex]
+                                ? [
+                                    DATE_TIME_PICKER_PICKER_TYPES_DATA[
+                                        pickerTypeIndex
+                                    ],
+                                ]
+                                : []
+                        }
+                        title={localize(
+                            "dateTimePicker-changePickerType",
+                        )}
+                        data={DATE_TIME_PICKER_PICKER_TYPES_DATA}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                    />
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = DATE_TIME_PICKER_VARIANTS.indexOf(
+                                    selectedItems[0]!
+                                        .__key as IDateTimePickerProps["variant"],
+                                );
+                                if (index !== -1) setVariantIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            DATE_TIME_PICKER_VARIANTS_DATA[variantIndex]
+                                ? [DATE_TIME_PICKER_VARIANTS_DATA[variantIndex]]
+                                : []
+                        }
+                        title={localize("dateTimePicker-changeVariant")}
+                        titleExtractor={(item) => item.__title}
+                        data={DATE_TIME_PICKER_VARIANTS_DATA}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                    />
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            title={localize(
+                                "dateTimePicker-toggleDisabled",
+                            )}
+                            onPress={() => {
+                                setIsDisabled(!isDisabled);
+                            }}
+                            isActive={isDisabled}
+                        />
+                    </View>
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default DateTimePickerPage;

+ 18 - 0
example/src/pages/components/dateTimePicker/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 113 - 0
example/src/pages/components/dateTimeSheet/index.tsx

@@ -0,0 +1,113 @@
+import {
+    useLayoutEffect,
+    useState,
+    useRef
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    DateTimeSheet,
+    PageContainer,
+    Header,
+    Button,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    IBottomSheetRef
+} from "ncore-ui-kit";
+
+const DateTimeSheetPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const bottomSheetRef = useRef<IBottomSheetRef>(null);
+
+    const [
+        isActive,
+        setIsActive
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-dateTimeSheet")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("dateTimeSheet-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-dateTimeSheet")}
+                </Text>
+                <Button
+                    onPress={() => setIsActive(true)}
+                    title="Open DateTime Sheet"
+                    spreadBehaviour="stretch"
+                />
+                <DateTimeSheet
+                    selectMultipleObject={() => {}}
+                    selectDateRule={() => {}}
+                    selectObject={() => {}}
+                    isWorkWithRealtime={true}
+                    dateTimePickerKey="test"
+                    bottomSheetRef={bottomSheetRef}
+                    setIsActive={setIsActive}
+                    cancel={() => setIsActive(false)}
+                    clean={() => {}}
+                    ok={() => setIsActive(false)}
+                    pickerType="date"
+                    isLoading={false}
+                    isActive={isActive}
+                    variant="single"
+                />
+            </View>
+        </PageContainer>
+    );
+};
+export default DateTimeSheetPage;

+ 20 - 0
example/src/pages/components/dateTimeSheet/stylesheet.ts

@@ -0,0 +1,20 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 210 - 0
example/src/pages/components/dialog/index.tsx

@@ -0,0 +1,210 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    SelectBox,
+    TextInput,
+    Button,
+    Dialog,
+    Header
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    IDialogProps
+} from "ncore-ui-kit";
+
+const DIALOG_VARIANTS: Array<IDialogProps["variant"]> = [
+    "yes-no",
+    "ok",
+    "info"
+];
+
+const DIALOG_VARIANTS_DATA = DIALOG_VARIANTS.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const DialogPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        variantIndex,
+        setVariantIndex
+    ] = useState<number>(0);
+
+    const [
+        isVisible,
+        setIsVisible
+    ] = useState<boolean>(false);
+
+    const [
+        content,
+        setContent
+    ] = useState<string>("This is a dialog content.");
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("Dialog Title");
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("dialog-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("dialog-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <Button
+                        title={localize("dialog-openDialog")}
+                        onPress={() => setIsVisible(true)}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("dialog-enterText")}
+                    title={localize("dialog-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <TextInput
+                    placeholder={localize("dialog-enterContentText")}
+                    title={localize("dialog-contentLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setContent}
+                    value={content}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = DIALOG_VARIANTS.indexOf(
+                                    selectedItems[0]!
+                                        .__key as IDialogProps["variant"],
+                                );
+                                if (index !== -1) setVariantIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            DIALOG_VARIANTS_DATA[variantIndex]
+                                ? [DIALOG_VARIANTS_DATA[variantIndex]]
+                                : []
+                        }
+                        title={localize("dialog-changeVariant")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        data={DIALOG_VARIANTS_DATA}
+                        spreadBehaviour="free"
+                    />
+                </View>
+            </View>
+            <Dialog
+                secondaryButtonProps={{
+                    onPress: ({
+                        closeAnimation
+                    }) => {
+                        closeAnimation();
+                    }
+                }}
+                primaryButtonProps={{
+                    onPress: ({
+                        closeAnimation
+                    }) => {
+                        closeAnimation();
+                    }
+                }}
+                onOverlayPress={({
+                    closeAnimation
+                }) => {
+                    closeAnimation();
+                }}
+                onClosed={() => {
+                    setIsVisible(false);
+                }}
+                variant={DIALOG_VARIANTS[variantIndex]}
+                isVisible={isVisible}
+                content={content}
+                title={title}
+            />
+        </PageContainer>
+    );
+};
+export default DialogPage;

+ 18 - 0
example/src/pages/components/dialog/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 108 - 0
example/src/pages/components/embeddedMenu/index.tsx

@@ -0,0 +1,108 @@
+import {
+    useLayoutEffect,
+    useRef
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    PageContainer,
+    EmbeddedMenu,
+    Button,
+    Header
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import {
+    SettingsIcon,
+    HomeIcon
+} from "lucide-react-native";
+
+const EmbeddedMenuPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const menuRef = useRef<any>(null);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("embeddedMenu-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <View style={stylesheet.container}>
+            <EmbeddedMenu
+                navigation={navigation as unknown as NCoreUIKit.Navigation}
+                buttons={[
+                    {
+                        title: localize("embeddedMenu-settings"),
+                        icon: ({
+                            color
+                        }) => <SettingsIcon color={color} />
+                    },
+                    {
+                        title: localize("embeddedMenu-home"),
+                        icon: ({
+                            color
+                        }) => <HomeIcon color={color} />
+                    }
+                ]}
+                id="embedded-menu-page-example"
+                ref={menuRef}
+            />
+            <PageContainer
+                scrollViewProps={{
+                    contentContainerStyle: stylesheet.scrollContent
+                }}
+                scrollViewStyle={[
+                    stylesheet.container
+                ]}
+                isWorkWithHeaderSpace={false}
+                isScrollable={true}
+            >
+                <View
+                    style={[
+                        stylesheet.contentContainer
+                    ]}
+                >
+                    <Text
+                        variant="bodyMediumSize"
+                        color="mid"
+                        style={{
+                            marginBottom: 20
+                        }}
+                    >
+                        {localize("embeddedMenu-desc")}
+                    </Text>
+                    <Button
+                        title={localize("embeddedMenu-openMenu")}
+                        onPress={() => menuRef.current?.open()}
+                        spreadBehaviour="stretch"
+                    />
+                </View>
+            </PageContainer>
+        </View>
+    );
+};
+export default EmbeddedMenuPage;

+ 17 - 0
example/src/pages/components/embeddedMenu/stylesheet.ts

@@ -0,0 +1,17 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        width: "100%",
+        padding: 20
+    },
+    scrollContent: {
+        flexGrow: 1
+    }
+});
+export default stylesheet;

+ 131 - 0
example/src/pages/components/header/index.tsx

@@ -0,0 +1,131 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    TextInput,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const HeaderPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("Header Example");
+
+    const [
+        isGoBackEnable,
+        setIsGoBackEnable
+    ] = useState<boolean>(true);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("header-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("header-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <Header
+                        isWrapSafeareaContext={false}
+                        isGoBackEnable={isGoBackEnable}
+                        navigation={navigation}
+                        title={title}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("header-enterTitle")}
+                    title={localize("header-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        flexDirection: "row",
+                        alignItems: "center",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <Switch
+                        title={localize("header-toggleGoBack")}
+                        onPress={() => setIsGoBackEnable(!isGoBackEnable)}
+                        isActive={isGoBackEnable}
+                    />
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default HeaderPage;

+ 17 - 0
example/src/pages/components/header/stylesheet.ts

@@ -0,0 +1,17 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        width: "100%",
+        padding: 20
+    },
+    scrollContent: {
+        flexGrow: 1
+    }
+});
+export default stylesheet;

+ 320 - 0
example/src/pages/components/highlightButton/index.tsx

@@ -0,0 +1,320 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    HighlightButton,
+    PageContainer,
+    SelectBox,
+    TextInput,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    IHighlightButtonProps
+} from "ncore-ui-kit";
+import {
+    Home as HomeIcon
+} from "lucide-react-native";
+
+const TYPES: Array<IHighlightButtonProps["type"]> = [
+    "primary",
+    "danger",
+    "warning",
+    "neutral",
+    "success",
+    "info",
+    "glass"
+];
+const SIZES: Array<IHighlightButtonProps["size"]> = [
+    "small",
+    "medium",
+    "large"
+];
+const SPREAD_BEHAVIOURS: Array<IHighlightButtonProps["spreadBehaviour"]> = [
+    "baseline",
+    "stretch",
+    "free"
+];
+
+const TYPES_DATA = TYPES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const SIZES_DATA = SIZES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const HighlightButtonPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        typeIndex,
+        setTypeIndex
+    ] = useState<number>(0);
+
+    const [
+        sizeIndex,
+        setSizeIndex
+    ] = useState<number>(1);
+
+    const [
+        spreadIndex,
+        setSpreadIndex
+    ] = useState<number>(0);
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("");
+
+    const [
+        isLoading,
+        setIsLoading
+    ] = useState<boolean>(false);
+
+    const [
+        isDisabled,
+        setIsDisabled
+    ] = useState<boolean>(false);
+
+    const [
+        isCustomPadding,
+        setIsCustomPadding
+    ] = useState<boolean>(false);
+
+    const [
+        showIcon,
+        setShowIcon
+    ] = useState<boolean>(false);
+
+    const [
+        iconDirection,
+        setIconDirection
+    ] = useState<"left" | "right">("left");
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("highlightButton-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("highlightButton-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <HighlightButton
+                        icon={
+                            showIcon
+                                ? ({
+                                    color,
+                                    size
+                                }) => (
+                                    <HomeIcon
+                                        color={colors.content.icon[color]}
+                                        size={size}
+                                    />
+                                )
+                                : undefined
+                        }
+                        title={
+                            title || localize("highlightButton-example")
+                        }
+                        spreadBehaviour={SPREAD_BEHAVIOURS[spreadIndex]}
+                        isCustomPadding={isCustomPadding}
+                        iconDirection={iconDirection}
+                        type={TYPES[typeIndex]}
+                        size={SIZES[sizeIndex]}
+                        isDisabled={isDisabled}
+                        isLoading={isLoading}
+                        onPress={() => {}}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("highlightButton-enterText")}
+                    title={localize("highlightButton-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = TYPES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as unknown as IHighlightButtonProps["type"],
+                                );
+                                if (index !== -1) setTypeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            TYPES_DATA[typeIndex] ? [TYPES_DATA[typeIndex]] : []
+                        }
+                        title={localize("highlightButton-changeType")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                        data={TYPES_DATA}
+                    />
+                    <HighlightButton
+                        onPress={() => {
+                            setSpreadIndex((prev) =>
+                                prev + 1 > SPREAD_BEHAVIOURS.length - 1
+                                    ? 0
+                                    : prev + 1,
+                            );
+                        }}
+                        title={
+                            `${localize("highlightButton-changeSpread")}: ${SPREAD_BEHAVIOURS[spreadIndex]}`
+                        }
+                        spreadBehaviour="free"
+                    />
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = SIZES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as unknown as IHighlightButtonProps["size"],
+                                );
+                                if (index !== -1) setSizeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            SIZES_DATA[sizeIndex] ? [SIZES_DATA[sizeIndex]] : []
+                        }
+                        title={localize("highlightButton-changeSize")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                        data={SIZES_DATA}
+                    />
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            onPress={() =>
+                                setIconDirection(
+                                    iconDirection === "left" ? "right" : "left",
+                                )
+                            }
+                            title={localize(
+                                "highlightButton-toggleIconDir",
+                            )}
+                            isActive={iconDirection === "right"}
+                        />
+                        <Switch
+                            title={localize(
+                                "highlightButton-toggleIcon",
+                            )}
+                            onPress={() => setShowIcon(!showIcon)}
+                            isActive={showIcon}
+                        />
+                        <Switch
+                            title={localize(
+                                "highlightButton-toggleLoading",
+                            )}
+                            onPress={() => setIsLoading(!isLoading)}
+                            isActive={isLoading}
+                        />
+                        <Switch
+                            title={localize(
+                                "highlightButton-toggleDisabled",
+                            )}
+                            onPress={() => setIsDisabled(!isDisabled)}
+                            isActive={isDisabled}
+                        />
+                        <Switch
+                            title={localize(
+                                "highlightButton-toggleCustomPadding",
+                            )}
+                            onPress={() => setIsCustomPadding(!isCustomPadding)}
+                            isActive={isCustomPadding}
+                        />
+                    </View>
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default HighlightButtonPage;

+ 18 - 0
example/src/pages/components/highlightButton/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 141 - 0
example/src/pages/components/loading/index.tsx

@@ -0,0 +1,141 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    SelectBox,
+    Loading,
+    Header
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    ILoadingProps
+} from "ncore-ui-kit";
+
+const SIZES: Array<ILoadingProps["size"]> = [
+    16,
+    24,
+    32
+];
+
+const SIZES_DATA = SIZES.map((item) => ({
+    __title: String(item),
+    __key: String(item)
+}));
+
+const LoadingPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        sizeIndex,
+        setSizeIndex
+    ] = useState<number>(1);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("loading-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("loading-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <Loading size={SIZES[sizeIndex]} />
+                </View>
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = SIZES.indexOf(
+                                    Number(
+                                        selectedItems[0]!.__key,
+                                    ) as ILoadingProps["size"],
+                                );
+                                if (index !== -1) setSizeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            SIZES_DATA[sizeIndex] ? [SIZES_DATA[sizeIndex]] : []
+                        }
+                        title={localize("loading-changeSize")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                        data={SIZES_DATA}
+                    />
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default LoadingPage;

+ 18 - 0
example/src/pages/components/loading/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 80 - 0
example/src/pages/components/localeSwitcher/index.tsx

@@ -0,0 +1,80 @@
+import {
+    useLayoutEffect
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    LocaleSwitcher,
+    PageContainer,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const LocaleSwitcherPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-localeSwitcher")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("localeSwitcher-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-localeSwitcher")}
+                </Text>
+                <LocaleSwitcher />
+            </View>
+        </PageContainer>
+    );
+};
+export default LocaleSwitcherPage;

+ 20 - 0
example/src/pages/components/localeSwitcher/stylesheet.ts

@@ -0,0 +1,20 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 136 - 0
example/src/pages/components/mainHeader/index.tsx

@@ -0,0 +1,136 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    MainHeader,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const MainHeaderPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        isWorkWithBackButton,
+        setIsWorkWithBackButton
+    ] = useState<boolean>(true);
+
+    const [
+        isWorkWithSeperator,
+        setIsWorkWithSeperator
+    ] = useState<boolean>(true);
+
+    const [
+        isWorkWithSticky,
+        setIsWorkWithSticky
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("mainHeader-title")}
+                    isGoBackEnable={isWorkWithBackButton}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                />
+            ),
+            headerShown: true
+        });
+    }, [isWorkWithBackButton]);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("mainHeader-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <MainHeader
+                        isWorkWithSafeAreaView={false}
+                        isWorkWithSeperator={isWorkWithSeperator}
+                        isWorkWithSticky={isWorkWithSticky}
+                        isWorkWithPortal={false}
+                    />
+                </View>
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        flexDirection: "row",
+                        alignItems: "center",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <Switch
+                        title={localize("mainHeader-toggleGoBack")}
+                        onPress={() => setIsWorkWithBackButton(!isWorkWithBackButton)}
+                        isActive={isWorkWithBackButton}
+                    />
+                    <Switch
+                        title={localize("mainHeader-toggleSeperator")}
+                        onPress={() => setIsWorkWithSeperator(!isWorkWithSeperator)}
+                        isActive={isWorkWithSeperator}
+                    />
+                    <Switch
+                        title={localize("mainHeader-toggleSticky")}
+                        onPress={() => setIsWorkWithSticky(!isWorkWithSticky)}
+                        isActive={isWorkWithSticky}
+                    />
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default MainHeaderPage;

+ 17 - 0
example/src/pages/components/mainHeader/stylesheet.ts

@@ -0,0 +1,17 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        width: "100%",
+        padding: 20
+    },
+    scrollContent: {
+        flexGrow: 1
+    }
+});
+export default stylesheet;

+ 107 - 0
example/src/pages/components/markdownViewer/index.tsx

@@ -0,0 +1,107 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    MarkdownViewer,
+    PageContainer,
+    TextAreaInput,
+    Header
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const MarkdownViewerPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        content,
+        setContent
+    ] = useState<string>(
+        "# Markdown Viewer\n\nThis is a **MarkdownViewer** component from *NCore UI Kit*.\n\n- It supports lists\n- And bold text",
+    );
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("markdownViewer-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("markdownViewer-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        minHeight: 120
+                    }}
+                >
+                    <MarkdownViewer content={content} />
+                </View>
+                <TextAreaInput
+                    placeholder={localize("markdownViewer-enterContent")}
+                    title={localize("markdownViewer-contentLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setContent}
+                    value={content}
+                />
+            </View>
+        </PageContainer>
+    );
+};
+export default MarkdownViewerPage;

+ 18 - 0
example/src/pages/components/markdownViewer/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 109 - 0
example/src/pages/components/menu/index.tsx

@@ -0,0 +1,109 @@
+import {
+    useLayoutEffect,
+    useRef
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    PageContainer,
+    Button,
+    Header,
+    Menu
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    IMenuRef
+} from "ncore-ui-kit";
+import {
+    SettingsIcon,
+    HomeIcon
+} from "lucide-react-native";
+
+const MenuPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const menuRef = useRef<IMenuRef>(null);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    isWrapSafeareaContext={false}
+                    title={localize("menu-title")}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("menu-desc")}
+                </Text>
+                <Button
+                    title={localize("menu-openMenu")}
+                    onPress={() => menuRef.current?.open()}
+                    spreadBehaviour="stretch"
+                />
+            </View>
+            <Menu
+                buttons={[
+                    {
+                        title: localize("menu-settings"),
+                        icon: ({
+                            color
+                        }) => <SettingsIcon color={color} />
+                    },
+                    {
+                        title: localize("menu-home"),
+                        icon: ({
+                            color
+                        }) => <HomeIcon color={color} />
+                    }
+                ]}
+                navigation={navigation as unknown as NCoreUIKit.Navigation}
+                id="menu-page-example"
+                ref={menuRef}
+            />
+        </PageContainer>
+    );
+};
+export default MenuPage;

+ 17 - 0
example/src/pages/components/menu/stylesheet.ts

@@ -0,0 +1,17 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        width: "100%",
+        padding: 20
+    },
+    scrollContent: {
+        flexGrow: 1
+    }
+});
+export default stylesheet;

+ 110 - 0
example/src/pages/components/modal/index.tsx

@@ -0,0 +1,110 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    PageContainer,
+    Header,
+    Button,
+    Modal,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const ModalPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        isActive,
+        setIsActive
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-modal")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("modal-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-modal")}
+                </Text>
+                <Button
+                    onPress={() => setIsActive(true)}
+                    spreadBehaviour="stretch"
+                    title="Open Modal"
+                />
+                <Modal
+                    onClosed={() => setIsActive(false)}
+                    isActive={isActive}
+                    id="example-modal"
+                >
+                    <View
+                        style={stylesheet.modalContent}
+                    >
+                        <Text>
+                            This is an example modal content.
+                        </Text>
+                        <Button
+                            onPress={() => setIsActive(false)}
+                            spreadBehaviour="stretch"
+                            title="Close Modal"
+                            type="primary"
+                        />
+                    </View>
+                </Modal>
+            </View>
+        </PageContainer>
+    );
+};
+export default ModalPage;

+ 26 - 0
example/src/pages/components/modal/stylesheet.ts

@@ -0,0 +1,26 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    modalContent: {
+        backgroundColor: "white",
+        borderRadius: 10,
+        padding: 20,
+        gap: 20
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 91 - 0
example/src/pages/components/monthSelector/index.tsx

@@ -0,0 +1,91 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    MonthSelector,
+    PageContainer,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const MonthSelectorPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        ,
+        setIsSheetContentReady
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-monthSelector")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("monthSelector-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-monthSelector")}
+                </Text>
+                <MonthSelector
+                    setIsSheetContentReady={setIsSheetContentReady}
+                    selectMultipleObject={() => {}}
+                    selectObject={() => {}}
+                    variant="single"
+                />
+            </View>
+        </PageContainer>
+    );
+};
+export default MonthSelectorPage;

+ 20 - 0
example/src/pages/components/monthSelector/stylesheet.ts

@@ -0,0 +1,20 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 189 - 0
example/src/pages/components/notificationIndicator/index.tsx

@@ -0,0 +1,189 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NotificationIndicator,
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    SelectBox,
+    Button,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    INotificationIndicatorProps
+} from "ncore-ui-kit";
+import {
+    Bell as BellIcon
+} from "lucide-react-native";
+
+const TYPES: Array<INotificationIndicatorProps["type"]> = [
+    "danger",
+    "warning",
+    "success",
+    "info"
+];
+
+const TYPES_DATA = TYPES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const NotificationIndicatorPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        typeIndex,
+        setTypeIndex
+    ] = useState<number>(0);
+
+    const [
+        count,
+        setCount
+    ] = useState<number>(5);
+
+    const [
+        isShowCount,
+        setIsShowCount
+    ] = useState<boolean>(true);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("notificationIndicator-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("notificationIndicator-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <NotificationIndicator
+                        type={TYPES[typeIndex]}
+                        isVisible={isShowCount}
+                        title={count}
+                    >
+                        <View
+                            style={{
+                                backgroundColor: "transparent",
+                                borderRadius: radiuses.form,
+                                padding: spaces.spacingSm
+                            }}
+                        >
+                            <BellIcon
+                                color={colors.content.icon.mid}
+                                size={32}
+                            />
+                        </View>
+                    </NotificationIndicator>
+                </View>
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = TYPES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as unknown as INotificationIndicatorProps["type"],
+                                );
+                                if (index !== -1) setTypeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            TYPES_DATA[typeIndex] ? [TYPES_DATA[typeIndex]] : []
+                        }
+                        title={localize(
+                            "notificationIndicator-changeType",
+                        )}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                        data={TYPES_DATA}
+                    />
+                    <Button
+                        title={localize(
+                            "notificationIndicator-addCount",
+                        )}
+                        onPress={() => setCount((prev) => prev + 1)}
+                        spreadBehaviour="free"
+                    />
+                    <Switch
+                        title={localize(
+                            "notificationIndicator-toggleShowCount",
+                        )}
+                        onPress={() => setIsShowCount(!isShowCount)}
+                        isActive={isShowCount}
+                    />
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default NotificationIndicatorPage;

+ 18 - 0
example/src/pages/components/notificationIndicator/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 323 - 0
example/src/pages/components/numericInput/index.tsx

@@ -0,0 +1,323 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    NumericInput,
+    SelectBox,
+    TextInput,
+    Button,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    INumericInputProps
+} from "ncore-ui-kit";
+import {
+    Home as HomeIcon
+} from "lucide-react-native";
+
+const TYPES: Array<INumericInputProps["type"]> = [
+    "default",
+    "danger",
+    "warning",
+    "question",
+    "success",
+    "info"
+];
+const VARIANTS: Array<INumericInputProps["variant"]> = [
+    "text",
+    "hidden"
+];
+const SPREAD_BEHAVIOURS: Array<INumericInputProps["spreadBehaviour"]> = [
+    "baseline",
+    "stretch",
+    "free"
+];
+
+const TYPES_DATA = TYPES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const VARIANTS_DATA = VARIANTS.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const NumericInputPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        typeIndex,
+        setTypeIndex
+    ] = useState<number>(0);
+
+    const [
+        variantIndex,
+        setVariantIndex
+    ] = useState<number>(0);
+
+    const [
+        spreadIndex,
+        setSpreadIndex
+    ] = useState<number>(0);
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("");
+
+    const [
+        isDisabled,
+        setIsDisabled
+    ] = useState<boolean>(false);
+
+    const [
+        showIcon,
+        setShowIcon
+    ] = useState<boolean>(false);
+
+    const [
+        isCleanEnabled,
+        setIsCleanEnabled
+    ] = useState<boolean>(true);
+
+    const [
+        isRequired,
+        setIsRequired
+    ] = useState<boolean>(false);
+
+    const [
+        isOptional,
+        setIsOptional
+    ] = useState<boolean>(false);
+
+    const [
+        val,
+        setVal
+    ] = useState<string>("");
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("numericInput-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("numericInput-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <NumericInput
+                        icon={
+                            showIcon
+                                ? ({
+                                    color,
+                                    size
+                                }) => (
+                                    <HomeIcon
+                                        color={colors.content.icon[color]}
+                                        size={size}
+                                    />
+                                )
+                                : undefined
+                        }
+                        title={
+                            title ||
+                            localize("numericInput-exampleTitle")
+                        }
+                        placeholder={localize(
+                            "numericInput-placeholder",
+                        )}
+                        spreadBehaviour={SPREAD_BEHAVIOURS[spreadIndex]}
+                        variant={VARIANTS[variantIndex]}
+                        isCleanEnabled={isCleanEnabled}
+                        type={TYPES[typeIndex]}
+                        isDisabled={isDisabled}
+                        isRequired={isRequired}
+                        isOptional={isOptional}
+                        onChangeText={setVal}
+                        value={val}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("numericInput-enterTitle")}
+                    title={localize("numericInput-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = TYPES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as unknown as INumericInputProps["type"],
+                                );
+                                if (index !== -1) setTypeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            TYPES_DATA[typeIndex] ? [TYPES_DATA[typeIndex]] : []
+                        }
+                        title={localize("numericInput-changeType")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                        data={TYPES_DATA}
+                    />
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = VARIANTS.indexOf(
+                                    selectedItems[0]!
+                                        .__key as unknown as INumericInputProps["variant"],
+                                );
+                                if (index !== -1) setVariantIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            VARIANTS_DATA[variantIndex]
+                                ? [VARIANTS_DATA[variantIndex]]
+                                : []
+                        }
+                        title={localize("numericInput-changeVariant")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                        data={VARIANTS_DATA}
+                    />
+                    <Button
+                        onPress={() => {
+                            setSpreadIndex((prev) =>
+                                prev + 1 > SPREAD_BEHAVIOURS.length - 1
+                                    ? 0
+                                    : prev + 1,
+                            );
+                        }}
+                        title={
+                            `${localize("numericInput-changeSpread")}: ${SPREAD_BEHAVIOURS[spreadIndex]}`
+                        }
+                        spreadBehaviour="free"
+                    />
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            title={localize("numericInput-toggleIcon")}
+                            onPress={() => setShowIcon(!showIcon)}
+                            isActive={showIcon}
+                        />
+                        <Switch
+                            title={localize(
+                                "numericInput-toggleDisabled",
+                            )}
+                            onPress={() => setIsDisabled(!isDisabled)}
+                            isActive={isDisabled}
+                        />
+                        <Switch
+                            title={localize("numericInput-toggleClean")}
+                            onPress={() => setIsCleanEnabled(!isCleanEnabled)}
+                            isActive={isCleanEnabled}
+                        />
+                        <Switch
+                            title={localize(
+                                "numericInput-toggleRequired",
+                            )}
+                            onPress={() => setIsRequired(!isRequired)}
+                            isActive={isRequired}
+                        />
+                        <Switch
+                            title={localize(
+                                "numericInput-toggleOptional",
+                            )}
+                            onPress={() => setIsOptional(!isOptional)}
+                            isActive={isOptional}
+                        />
+                    </View>
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default NumericInputPage;

+ 18 - 0
example/src/pages/components/numericInput/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 81 - 0
example/src/pages/components/pageContainer/index.tsx

@@ -0,0 +1,81 @@
+import {
+    useLayoutEffect
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    PageContainer,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const PageContainerPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-pageContainer")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("pageContainer-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-pageContainer")}
+                </Text>
+                <Text>
+                    This entire page is already wrapped in a PageContainer!
+                </Text>
+            </View>
+        </PageContainer>
+    );
+};
+export default PageContainerPage;

+ 20 - 0
example/src/pages/components/pageContainer/stylesheet.ts

@@ -0,0 +1,20 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 80 - 0
example/src/pages/components/paletteSwitcher/index.tsx

@@ -0,0 +1,80 @@
+import {
+    useLayoutEffect
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    PaletteSwitcher,
+    PageContainer,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const PaletteSwitcherPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-paletteSwitcher")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("paletteSwitcher-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-paletteSwitcher")}
+                </Text>
+                <PaletteSwitcher />
+            </View>
+        </PageContainer>
+    );
+};
+export default PaletteSwitcherPage;

+ 20 - 0
example/src/pages/components/paletteSwitcher/stylesheet.ts

@@ -0,0 +1,20 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 237 - 0
example/src/pages/components/radioButton/index.tsx

@@ -0,0 +1,237 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    RadioButton,
+    SelectBox,
+    TextInput,
+    Button,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    IRadioButtonProps
+} from "ncore-ui-kit";
+
+const TYPES: Array<IRadioButtonProps["type"]> = [
+    "primary",
+    "danger",
+    "warning",
+    "success",
+    "info"
+];
+const SPREAD_BEHAVIOURS: Array<IRadioButtonProps["spreadBehaviour"]> = [
+    "baseline",
+    "stretch",
+    "free"
+];
+
+const TYPES_DATA = TYPES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const RadioButtonPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        typeIndex,
+        setTypeIndex
+    ] = useState<number>(0);
+
+    const [
+        spreadIndex,
+        setSpreadIndex
+    ] = useState<number>(0);
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("");
+
+    const [
+        isDisabled,
+        setIsDisabled
+    ] = useState<boolean>(false);
+
+    const [
+        isLoading,
+        setIsLoading
+    ] = useState<boolean>(false);
+
+    const [
+        isSelected,
+        setIsSelected
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("radioButton-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("radioButton-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <RadioButton
+                        title={
+                            title || localize("radioButton-exampleTitle")
+                        }
+                        spreadBehaviour={SPREAD_BEHAVIOURS[spreadIndex]}
+                        onPress={() => setIsSelected(!isSelected)}
+                        type={TYPES[typeIndex]}
+                        isDisabled={isDisabled}
+                        isChecked={isSelected}
+                        isLoading={isLoading}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("radioButton-enterTitle")}
+                    title={localize("radioButton-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = TYPES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as unknown as IRadioButtonProps["type"],
+                                );
+                                if (index !== -1) setTypeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            TYPES_DATA[typeIndex] ? [TYPES_DATA[typeIndex]] : []
+                        }
+                        title={localize("radioButton-changeType")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                        data={TYPES_DATA}
+                    />
+                    <Button
+                        onPress={() => {
+                            setSpreadIndex((prev) =>
+                                prev + 1 > SPREAD_BEHAVIOURS.length - 1
+                                    ? 0
+                                    : prev + 1,
+                            );
+                        }}
+                        title={
+                            `${localize("radioButton-changeSpread")}: ${SPREAD_BEHAVIOURS[spreadIndex]}`
+                        }
+                        spreadBehaviour="free"
+                    />
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            title={localize(
+                                "radioButton-toggleDisabled",
+                            )}
+                            onPress={() => setIsDisabled(!isDisabled)}
+                            isActive={isDisabled}
+                        />
+                        <Switch
+                            title={localize("radioButton-toggleLoading")}
+                            onPress={() => setIsLoading(!isLoading)}
+                            isActive={isLoading}
+                        />
+                        <Switch
+                            title={localize(
+                                "radioButton-toggleSelected",
+                            )}
+                            onPress={() => setIsSelected(!isSelected)}
+                            isActive={isSelected}
+                        />
+                    </View>
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default RadioButtonPage;

+ 18 - 0
example/src/pages/components/radioButton/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 181 - 0
example/src/pages/components/rowCard/index.tsx

@@ -0,0 +1,181 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    TextInput,
+    RowCard,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import {
+    ChevronRight as ChevronRightIcon,
+    Home as HomeIcon
+} from "lucide-react-native";
+
+const RowCardPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("");
+
+    const [
+        showLeftIcon,
+        setShowLeftIcon
+    ] = useState<boolean>(true);
+
+    const [
+        showRightIcon,
+        setShowRightIcon
+    ] = useState<boolean>(true);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("rowCard-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("rowCard-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <RowCard
+                        rightIcon={showRightIcon ? ({
+                            color,
+                            size
+                        }: {
+                                    color: string;
+                                    size: number;
+                                }) => (
+                            <ChevronRightIcon
+                                        color={
+                                    colors.content.icon[
+                                                color as keyof typeof colors.content.icon
+                                    ]
+                                }
+                                        size={size}
+                            />
+                        )
+                            : undefined
+                        }
+                        icon={showLeftIcon ? ({
+                            color,
+                            size
+                        }: {
+                                    color: string;
+                                    size: number;
+                                }) => (
+                            <HomeIcon
+                                        color={
+                                    colors.content.icon[
+                                                color as keyof typeof colors.content.icon
+                                    ]
+                                }
+                                        size={size}
+                            />
+                        )
+                            : undefined
+                        }
+                        title={title || localize("rowCard-exampleTitle")}
+                        onPress={() => {}}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("rowCard-enterTitle")}
+                    title={localize("rowCard-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        flexDirection: "row",
+                        alignItems: "center",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <Switch
+                        title={localize("rowCard-toggleLeftIcon")}
+                        onPress={() => setShowLeftIcon(!showLeftIcon)}
+                        isActive={showLeftIcon}
+                    />
+                    <Switch
+                        title={localize("rowCard-toggleRightIcon")}
+                        onPress={() => setShowRightIcon(!showRightIcon)}
+                        isActive={showRightIcon}
+                    />
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default RowCardPage;

+ 18 - 0
example/src/pages/components/rowCard/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 295 - 0
example/src/pages/components/selectBox/index.tsx

@@ -0,0 +1,295 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    SelectBox,
+    TextInput,
+    Button,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    ISelectBoxProps
+} from "ncore-ui-kit";
+
+const TYPES: Array<ISelectBoxProps<unknown>["type"]> = [
+    "default",
+    "danger",
+    "warning",
+    "question",
+    "success",
+    "info"
+];
+const SPREAD_BEHAVIOURS: Array<ISelectBoxProps<unknown>["spreadBehaviour"]> = [
+    "baseline",
+    "stretch",
+    "free"
+];
+
+const TYPES_DATA = TYPES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const SelectBoxPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        typeIndex,
+        setTypeIndex
+    ] = useState<number>(0);
+
+    const [
+        spreadIndex,
+        setSpreadIndex
+    ] = useState<number>(0);
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("");
+
+    const [
+        subTitle,
+        setSubTitle
+    ] = useState<string>("");
+
+    const [
+        isDisabled,
+        setIsDisabled
+    ] = useState<boolean>(false);
+
+    const [
+        isSearchable,
+        setIsSearchable
+    ] = useState<boolean>(false);
+
+    const [
+        isCleanEnabled,
+        setIsCleanEnabled
+    ] = useState<boolean>(true);
+
+    const [
+        isMultiSelect,
+        setIsMultiSelect
+    ] = useState<boolean>(false);
+
+    const [
+        isOptional,
+        setIsOptional
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("selectBox-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("selectBox-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <SelectBox
+                        data={[
+                            {
+                                __title: "Option 1",
+                                __key: "1"
+                            },
+                            {
+                                __title: "Option 2",
+                                __key: "2"
+                            },
+                            {
+                                __title: "Option 3",
+                                __key: "3"
+                            },
+                            {
+                                __title: "Option 4",
+                                __key: "4"
+                            }
+                        ]}
+                        title={
+                            title || localize("selectBox-exampleTitle")
+                        }
+                        placeholder={localize("selectBox-placeholder")}
+                        spreadBehaviour={SPREAD_BEHAVIOURS[spreadIndex]}
+                        titleExtractor={(item) => item.__title}
+                        maxChoice={isMultiSelect ? 3 : 1}
+                        keyExtractor={(item) => item.__key}
+                        isCleanEnabled={isCleanEnabled}
+                        isSearchable={isSearchable}
+                        type={TYPES[typeIndex]}
+                        isDisabled={isDisabled}
+                        isOptional={isOptional}
+                        subTitle={subTitle}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("selectBox-enterTitle")}
+                    title={localize("selectBox-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <TextInput
+                    placeholder={localize("selectBox-enterSubTitle")}
+                    title={localize("selectBox-subTitleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    onChangeText={setSubTitle}
+                    spreadBehaviour="stretch"
+                    value={subTitle}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = TYPES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as unknown as ISelectBoxProps<unknown>["type"],
+                                );
+                                if (index !== -1) setTypeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            TYPES_DATA[typeIndex] ? [TYPES_DATA[typeIndex]] : []
+                        }
+                        title={localize("selectBox-changeType")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                        data={TYPES_DATA}
+                    />
+                    <Button
+                        onPress={() => {
+                            setSpreadIndex((prev) =>
+                                prev + 1 > SPREAD_BEHAVIOURS.length - 1
+                                    ? 0
+                                    : prev + 1,
+                            );
+                        }}
+                        title={
+                            `${localize("selectBox-changeSpread")}: ${SPREAD_BEHAVIOURS[spreadIndex]}`
+                        }
+                        spreadBehaviour="free"
+                    />
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            title={localize("selectBox-toggleDisabled")}
+                            onPress={() => setIsDisabled(!isDisabled)}
+                            isActive={isDisabled}
+                        />
+                        <Switch
+                            title={localize(
+                                "selectBox-toggleSearchable",
+                            )}
+                            onPress={() => setIsSearchable(!isSearchable)}
+                            isActive={isSearchable}
+                        />
+                        <Switch
+                            onPress={() => setIsCleanEnabled(!isCleanEnabled)}
+                            title={localize("selectBox-toggleClean")}
+                            isActive={isCleanEnabled}
+                        />
+                        <Switch
+                            title={localize(
+                                "selectBox-toggleMultiSelect",
+                            )}
+                            onPress={() => setIsMultiSelect(!isMultiSelect)}
+                            isActive={isMultiSelect}
+                        />
+                        <Switch
+                            title={localize("selectBox-toggleOptional")}
+                            onPress={() => setIsOptional(!isOptional)}
+                            isActive={isOptional}
+                        />
+                    </View>
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default SelectBoxPage;

+ 18 - 0
example/src/pages/components/selectBox/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 119 - 0
example/src/pages/components/selectSheet/index.tsx

@@ -0,0 +1,119 @@
+import {
+    useLayoutEffect,
+    useState,
+    useRef
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    PageContainer,
+    SelectSheet,
+    Header,
+    Button,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    IBottomSheetRef
+} from "ncore-ui-kit";
+
+const SelectSheetPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const bottomSheetRef = useRef<IBottomSheetRef>(null);
+
+    const [
+        isActive,
+        setIsActive
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-selectSheet")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("selectSheet-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-selectSheet")}
+                </Text>
+                <Button
+                    onPress={() => setIsActive(true)}
+                    spreadBehaviour="stretch"
+                    title="Open Select Sheet"
+                />
+                <SelectSheet
+                    keyExtractor={(item: { __key: string }) => item.__key}
+                    selectObject={() => {}}
+                    setSearchText={() => {}}
+                    setIsLoading={() => {}}
+                    isWorkWithRealtime={true}
+                    selectBoxKey="example"
+                    bottomSheetRef={bottomSheetRef}
+                    setIsMoreLoading={() => {}}
+                    setIsActive={setIsActive}
+                    cancel={() => setIsActive(false)}
+                    ok={() => setIsActive(false)}
+                    mainSelectedItems={[]}
+                    cleanAll={() => {}}
+                    selectAll={() => {}}
+                    searchedData={[]}
+                    searchText=""
+                    isLoading={false}
+                    isMoreLoading={false}
+                    isActive={isActive}
+                    data={[]}
+                />
+            </View>
+        </PageContainer>
+    );
+};
+export default SelectSheetPage;

+ 20 - 0
example/src/pages/components/selectSheet/stylesheet.ts

@@ -0,0 +1,20 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 106 - 0
example/src/pages/components/seperator/index.tsx

@@ -0,0 +1,106 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    Seperator,
+    TextInput,
+    Header
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const SeperatorPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("Or");
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("seperator-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("seperator-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <Seperator title={title} />
+                </View>
+                <TextInput
+                    placeholder={localize("seperator-enterTitle")}
+                    title={localize("seperator-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+            </View>
+        </PageContainer>
+    );
+};
+export default SeperatorPage;

+ 18 - 0
example/src/pages/components/seperator/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 148 - 0
example/src/pages/components/siteLogo/index.tsx

@@ -0,0 +1,148 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    TextInput,
+    SiteLogo,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const SiteLogoPage = () => {
+    const {
+        activeTheme,
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("");
+
+    const [
+        subTitle,
+        setSubTitle
+    ] = useState<string>("");
+
+    const [
+        isShowIcon,
+        setIsShowIcon
+    ] = useState<boolean>(true);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("siteLogo-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("siteLogo-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <SiteLogo
+                        imageUrl={
+                            activeTheme.indexOf("dark") !== -1
+                                ? "http://ncore.nibgat.space/assets/images/darklogo.png"
+                                : "http://ncore.nibgat.space/assets/images/ncorelogo.png"
+                        }
+                        subTitle={
+                            subTitle ||
+                            localize("siteLogo-exampleSubTitle")
+                        }
+                        title={
+                            title || localize("siteLogo-exampleTitle")
+                        }
+                        isShowIcon={isShowIcon}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("siteLogo-enterTitle")}
+                    title={localize("siteLogo-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <TextInput
+                    placeholder={localize("siteLogo-enterSubTitle")}
+                    title={localize("siteLogo-subTitleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    onChangeText={setSubTitle}
+                    spreadBehaviour="stretch"
+                    value={subTitle}
+                />
+                <Switch
+                    title={localize("siteLogo-toggleIcon")}
+                    onPress={() => setIsShowIcon(!isShowIcon)}
+                    isActive={isShowIcon}
+                />
+            </View>
+        </PageContainer>
+    );
+};
+export default SiteLogoPage;

+ 18 - 0
example/src/pages/components/siteLogo/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 91 - 0
example/src/pages/components/snackBar/index.tsx

@@ -0,0 +1,91 @@
+import {
+    useLayoutEffect
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    PageContainer,
+    SnackBar,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const SnackBarPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-snackBar")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("snackBar-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-snackBar")}
+                </Text>
+
+                <View style={{
+                    position: "relative",
+                    height: 200
+                }}>
+                    <SnackBar
+                        title="This is an example SnackBar"
+                        subTitle="This is an example subtitle"
+                        type="primary"
+                        id="example-snackbar"
+                    />
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default SnackBarPage;

+ 20 - 0
example/src/pages/components/snackBar/stylesheet.ts

@@ -0,0 +1,20 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 164 - 0
example/src/pages/components/stateCard/index.tsx

@@ -0,0 +1,164 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    StateCard,
+    TextInput,
+    Header
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import {
+    Home as HomeIcon
+} from "lucide-react-native";
+
+const StateCardPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("");
+
+    const [
+        subTitle,
+        setSubTitle
+    ] = useState<string>("");
+
+    const [
+        value,
+        setValue
+    ] = useState<string>("");
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("stateCard-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("stateCard-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <StateCard
+                        icon={({
+                            color,
+                            size
+                        }: {
+                            color: string;
+                            size: number;
+                        }) => (
+                            <HomeIcon
+                                color={
+                                    colors.content.icon[
+                                        color as keyof typeof colors.content.icon
+                                    ]
+                                }
+                                size={size}
+                            />
+                        )}
+                        subTitle={
+                            subTitle ||
+                            localize("stateCard-exampleSubTitle")
+                        }
+                        title={
+                            title || localize("stateCard-exampleTitle")
+                        }
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("stateCard-enterTitle")}
+                    title={localize("stateCard-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <TextInput
+                    placeholder={localize("stateCard-enterSubTitle")}
+                    title={localize("stateCard-subTitleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    onChangeText={setSubTitle}
+                    spreadBehaviour="stretch"
+                    value={subTitle}
+                />
+                <TextInput
+                    placeholder={localize("stateCard-enterValue")}
+                    title={localize("stateCard-valueLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setValue}
+                    value={value}
+                />
+            </View>
+        </PageContainer>
+    );
+};
+export default StateCardPage;

+ 18 - 0
example/src/pages/components/stateCard/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 121 - 0
example/src/pages/components/sticker/index.tsx

@@ -0,0 +1,121 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    TextInput,
+    Sticker,
+    Header
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import {
+    Star as StarIcon
+} from "lucide-react-native";
+
+const StickerPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("");
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("sticker-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("sticker-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <Sticker
+                        icon={({
+                            color,
+                            size
+                        }) => (
+                            <StarIcon
+                                color={colors.content.icon[color]}
+                                size={size}
+                            />
+                        )}
+                        title={title || localize("sticker-exampleTitle")}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("sticker-enterTitle")}
+                    title={localize("sticker-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+            </View>
+        </PageContainer>
+    );
+};
+export default StickerPage;

+ 18 - 0
example/src/pages/components/sticker/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 208 - 0
example/src/pages/components/switch/index.tsx

@@ -0,0 +1,208 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    TextInput,
+    Button,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    ISwitchProps
+} from "ncore-ui-kit";
+
+const SPREAD_BEHAVIOURS: Array<ISwitchProps["spreadBehaviour"]> = [
+    "baseline",
+    "stretch",
+    "free"
+];
+
+const SwitchPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        spreadIndex,
+        setSpreadIndex
+    ] = useState<number>(0);
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("");
+
+    const [
+        subTitle,
+        setSubTitle
+    ] = useState<string>("");
+
+    const [
+        isDisabled,
+        setIsDisabled
+    ] = useState<boolean>(false);
+
+    const [
+        isActive,
+        setIsActive
+    ] = useState<boolean>(false);
+
+    const [
+        isLoading,
+        setIsLoading
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("switch-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("switch-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <Switch
+                        title={title || localize("switch-exampleTitle")}
+                        spreadBehaviour={SPREAD_BEHAVIOURS[spreadIndex]}
+                        onPress={() => setIsActive(!isActive)}
+                        isDisabled={isDisabled}
+                        isLoading={isLoading}
+                        subTitle={subTitle}
+                        isActive={isActive}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("switch-enterTitle")}
+                    title={localize("switch-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <TextInput
+                    placeholder={localize("switch-enterSubTitle")}
+                    title={localize("switch-subTitleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    onChangeText={setSubTitle}
+                    spreadBehaviour="stretch"
+                    value={subTitle}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <Button
+                        onPress={() => {
+                            setSpreadIndex((prev) =>
+                                prev + 1 > SPREAD_BEHAVIOURS.length - 1
+                                    ? 0
+                                    : prev + 1,
+                            );
+                        }}
+                        title={
+                            `${localize("switch-changeSpread")}: ${SPREAD_BEHAVIOURS[spreadIndex]}`
+                        }
+                        spreadBehaviour="free"
+                    />
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            title={localize("switch-toggleDisabled")}
+                            onPress={() => setIsDisabled(!isDisabled)}
+                            isActive={isDisabled}
+                        />
+                        <Switch
+                            title={localize("switch-toggleLoading")}
+                            onPress={() => setIsLoading(!isLoading)}
+                            isActive={isLoading}
+                        />
+                        <Switch
+                            title={localize("switch-toggleActive")}
+                            onPress={() => setIsActive(!isActive)}
+                            isActive={isActive}
+                        />
+                    </View>
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default SwitchPage;

+ 18 - 0
example/src/pages/components/switch/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 9 - 0
example/src/pages/text/index.tsx → example/src/pages/components/text/index.tsx

@@ -66,6 +66,15 @@ const TextPage = () => {
                 stylesheet.contentContainer
                 stylesheet.contentContainer
             ]}
             ]}
         >
         >
+            <Text
+                variant="bodyMediumSize"
+                color="mid"
+                style={{
+                    marginBottom: 20
+                }}
+            >
+                {localize("text-desc")}
+            </Text>
             <View
             <View
                 style={{
                 style={{
                     borderColor: colors.content.border.subtle,
                     borderColor: colors.content.border.subtle,

+ 0 - 0
example/src/pages/text/stylesheet.ts → example/src/pages/components/text/stylesheet.ts


+ 261 - 0
example/src/pages/components/textAreaInput/index.tsx

@@ -0,0 +1,261 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    TextAreaInput,
+    SelectBox,
+    TextInput,
+    Button,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    ITextAreaInputProps
+} from "ncore-ui-kit";
+
+const TYPES: Array<ITextAreaInputProps["type"]> = [
+    "default",
+    "danger",
+    "warning",
+    "question",
+    "success",
+    "info"
+];
+const SPREAD_BEHAVIOURS: Array<ITextAreaInputProps["spreadBehaviour"]> = [
+    "baseline",
+    "stretch",
+    "free"
+];
+
+const TYPES_DATA = TYPES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const TextAreaInputPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        typeIndex,
+        setTypeIndex
+    ] = useState<number>(0);
+
+    const [
+        spreadIndex,
+        setSpreadIndex
+    ] = useState<number>(0);
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("");
+
+    const [
+        isDisabled,
+        setIsDisabled
+    ] = useState<boolean>(false);
+
+    const [
+        isCleanEnabled,
+        setIsCleanEnabled
+    ] = useState<boolean>(true);
+
+    const [
+        isRequired,
+        setIsRequired
+    ] = useState<boolean>(false);
+
+    const [
+        isOptional,
+        setIsOptional
+    ] = useState<boolean>(false);
+
+    const [
+        val,
+        setVal
+    ] = useState<string>("");
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("textAreaInput-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("textAreaInput-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <TextAreaInput
+                        title={
+                            title ||
+                            localize("textAreaInput-exampleTitle")
+                        }
+                        placeholder={localize(
+                            "textAreaInput-placeholder",
+                        )}
+                        spreadBehaviour={SPREAD_BEHAVIOURS[spreadIndex]}
+                        isCleanEnabled={isCleanEnabled}
+                        type={TYPES[typeIndex]}
+                        isDisabled={isDisabled}
+                        isRequired={isRequired}
+                        isOptional={isOptional}
+                        onChangeText={setVal}
+                        value={val}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("textAreaInput-enterTitle")}
+                    title={localize("textAreaInput-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = TYPES.indexOf(
+                                    selectedItems[0]!
+                                        .__key as unknown as ITextAreaInputProps["type"],
+                                );
+                                if (index !== -1) setTypeIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={
+                            TYPES_DATA[typeIndex] ? [TYPES_DATA[typeIndex]] : []
+                        }
+                        title={localize("textAreaInput-changeType")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                        data={TYPES_DATA}
+                    />
+                    <Button
+                        onPress={() => {
+                            setSpreadIndex((prev) =>
+                                prev + 1 > SPREAD_BEHAVIOURS.length - 1
+                                    ? 0
+                                    : prev + 1,
+                            );
+                        }}
+                        title={
+                            `${localize("textAreaInput-changeSpread")}: ${SPREAD_BEHAVIOURS[spreadIndex]}`
+                        }
+                        spreadBehaviour="free"
+                    />
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            title={localize(
+                                "textAreaInput-toggleDisabled",
+                            )}
+                            onPress={() => setIsDisabled(!isDisabled)}
+                            isActive={isDisabled}
+                        />
+                        <Switch
+                            title={localize("textAreaInput-toggleClean")}
+                            onPress={() => setIsCleanEnabled(!isCleanEnabled)}
+                            isActive={isCleanEnabled}
+                        />
+                        <Switch
+                            title={localize(
+                                "textAreaInput-toggleRequired",
+                            )}
+                            onPress={() => setIsRequired(!isRequired)}
+                            isActive={isRequired}
+                        />
+                        <Switch
+                            title={localize(
+                                "textAreaInput-toggleOptional",
+                            )}
+                            onPress={() => setIsOptional(!isOptional)}
+                            isActive={isOptional}
+                        />
+                    </View>
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default TextAreaInputPage;

+ 18 - 0
example/src/pages/components/textAreaInput/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 297 - 0
example/src/pages/components/textInput/index.tsx

@@ -0,0 +1,297 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    SelectBox,
+    TextInput,
+    Button,
+    Header,
+    Switch
+    ,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import type {
+    ITextInputProps
+} from "ncore-ui-kit";
+import {
+    Home as HomeIcon
+} from "lucide-react-native";
+
+const TYPES: Array<ITextInputProps["type"]> = [
+    "default",
+    "danger",
+    "warning",
+    "question",
+    "success",
+    "info"
+];
+const VARIANTS: Array<ITextInputProps["variant"]> = [
+    "text",
+    "hidden"
+];
+const SPREAD_BEHAVIOURS: Array<ITextInputProps["spreadBehaviour"]> = [
+    "baseline",
+    "stretch",
+    "free"
+];
+
+const TYPES_DATA = TYPES.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const VARIANTS_DATA = VARIANTS.map((item) => ({
+    __title: item as string,
+    __key: item as string
+}));
+
+const TextInputPage = () => {
+    const {
+        radiuses,
+        borders,
+        spaces,
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        typeIndex,
+        setTypeIndex
+    ] = useState<number>(0);
+
+    const [
+        variantIndex,
+        setVariantIndex
+    ] = useState<number>(0);
+
+    const [
+        spreadIndex,
+        setSpreadIndex
+    ] = useState<number>(0);
+
+    const [
+        title,
+        setTitle
+    ] = useState<string>("");
+
+    const [
+        isDisabled,
+        setIsDisabled
+    ] = useState<boolean>(false);
+
+    const [
+        showIcon,
+        setShowIcon
+    ] = useState<boolean>(false);
+
+    const [
+        isCleanEnabled,
+        setIsCleanEnabled
+    ] = useState<boolean>(true);
+
+    const [
+        isRequired,
+        setIsRequired
+    ] = useState<boolean>(false);
+
+    const [
+        isOptional,
+        setIsOptional
+    ] = useState<boolean>(false);
+
+    const [
+        val,
+        setVal
+    ] = useState<string>("");
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("textInput-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[stylesheet.container]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View style={[stylesheet.contentContainer]}>
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("textInput-desc")}
+                </Text>
+                <View
+                    style={{
+                        borderColor: colors.content.border.subtle,
+                        marginBottom: spaces.spacingMd,
+                        borderRadius: radiuses.form,
+                        borderWidth: borders.line,
+                        padding: spaces.spacingMd,
+                        justifyContent: "center",
+                        alignItems: "center",
+                        minHeight: 120
+                    }}
+                >
+                    <TextInput
+                        icon={
+                            showIcon
+                                ? ({
+                                    color,
+                                    size
+                                }) => (
+                                    <HomeIcon
+                                        color={colors.content.icon[color]}
+                                        size={size}
+                                    />
+                                )
+                                : undefined
+                        }
+                        title={
+                            title || localize("textInput-exampleTitle")
+                        }
+                        placeholder={localize("textInput-placeholder")}
+                        spreadBehaviour={SPREAD_BEHAVIOURS[spreadIndex]}
+                        variant={VARIANTS[variantIndex]}
+                        isCleanEnabled={isCleanEnabled}
+                        type={TYPES[typeIndex]}
+                        isDisabled={isDisabled}
+                        isRequired={isRequired}
+                        isOptional={isOptional}
+                        onChangeText={setVal}
+                        value={val}
+                    />
+                </View>
+                <TextInput
+                    placeholder={localize("textInput-enterTitle")}
+                    title={localize("textInput-titleLabel")}
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                    spreadBehaviour="stretch"
+                    onChangeText={setTitle}
+                    value={title}
+                />
+                <View
+                    style={{
+                        justifyContent: "space-between",
+                        gap: spaces.spacingMd,
+                        flexDirection: "row",
+                        flexWrap: "wrap",
+                        width: "100%"
+                    }}
+                >
+                    <SelectBox
+                        initialSelectedItems={TYPES_DATA[typeIndex] ? [TYPES_DATA[typeIndex]] : []}
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = TYPES.indexOf(selectedItems[0]!.__key as unknown as ITextInputProps["type"]);
+
+                                if (index !== -1) setTypeIndex(index);
+                            }
+                        }}
+                        title={localize("textInput-changeType")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                        data={TYPES_DATA}
+                    />
+                    <SelectBox
+                        onChange={(selectedItems) => {
+                            if (selectedItems.length > 0) {
+                                const index = VARIANTS.indexOf(selectedItems[0]!.__key as unknown as ITextInputProps["variant"]);
+
+                                if (index !== -1) setVariantIndex(index);
+                            }
+                        }}
+                        initialSelectedItems={VARIANTS_DATA[variantIndex] ? [VARIANTS_DATA[variantIndex]] : []}
+                        title={localize("textInput-changeVariant")}
+                        titleExtractor={(item) => item.__title}
+                        keyExtractor={(item) => item.__key}
+                        spreadBehaviour="free"
+                        data={VARIANTS_DATA}
+                    />
+                    <Button
+                        onPress={() => {
+                            setSpreadIndex((prev) => prev + 1 > SPREAD_BEHAVIOURS.length - 1 ? 0 : prev + 1);
+                        }}
+                        title={`${localize("textInput-changeSpread")}: ${SPREAD_BEHAVIOURS[spreadIndex]}`}
+                        spreadBehaviour="free"
+                    />
+                    <View
+                        style={{
+                            justifyContent: "space-between",
+                            flexDirection: "row",
+                            alignItems: "center",
+                            flexWrap: "wrap",
+                            width: "100%"
+                        }}
+                    >
+                        <Switch
+                            title={localize("textInput-toggleIcon")}
+                            onPress={() => setShowIcon(!showIcon)}
+                            isActive={showIcon}
+                        />
+                        <Switch
+                            title={localize("textInput-toggleDisabled")}
+                            onPress={() => setIsDisabled(!isDisabled)}
+                            isActive={isDisabled}
+                        />
+                        <Switch
+                            onPress={() => setIsCleanEnabled(!isCleanEnabled)}
+                            title={localize("textInput-toggleClean")}
+                            isActive={isCleanEnabled}
+                        />
+                        <Switch
+                            title={localize("textInput-toggleRequired")}
+                            onPress={() => setIsRequired(!isRequired)}
+                            isActive={isRequired}
+                        />
+                        <Switch
+                            title={localize("textInput-toggleOptional")}
+                            onPress={() => setIsOptional(!isOptional)}
+                            isActive={isOptional}
+                        />
+                    </View>
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default TextInputPage;

+ 18 - 0
example/src/pages/components/textInput/stylesheet.ts

@@ -0,0 +1,18 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    container: {
+        flex: 1
+    },
+    contentContainer: {
+        maxWidth: 850,
+        width: "100%"
+    },
+    scrollContent: {
+        justifyContent: "center",
+        alignItems: "center"
+    }
+});
+export default stylesheet;

+ 80 - 0
example/src/pages/components/themeSwitcher/index.tsx

@@ -0,0 +1,80 @@
+import {
+    useLayoutEffect
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    ThemeSwitcher,
+    PageContainer,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const ThemeSwitcherPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-themeSwitcher")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("themeSwitcher-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-themeSwitcher")}
+                </Text>
+                <ThemeSwitcher />
+            </View>
+        </PageContainer>
+    );
+};
+export default ThemeSwitcherPage;

+ 20 - 0
example/src/pages/components/themeSwitcher/stylesheet.ts

@@ -0,0 +1,20 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 93 - 0
example/src/pages/components/timeSelector/index.tsx

@@ -0,0 +1,93 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    PageContainer,
+    TimeSelector,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const TimeSelectorPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        ,
+        setIsSheetContentReady
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-timeSelector")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("timeSelector-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-timeSelector")}
+                </Text>
+
+                <TimeSelector
+                    setIsSheetContentReady={setIsSheetContentReady}
+                    selectMultipleObject={() => {}}
+                    selectObject={() => {}}
+                    pickerType="time"
+                    variant="single"
+                />
+            </View>
+        </PageContainer>
+    );
+};
+export default TimeSelectorPage;

+ 20 - 0
example/src/pages/components/timeSelector/stylesheet.ts

@@ -0,0 +1,20 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 91 - 0
example/src/pages/components/toast/index.tsx

@@ -0,0 +1,91 @@
+import {
+    useLayoutEffect
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    PageContainer,
+    Header,
+    Toast,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const ToastPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-toast")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("toast-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-toast")}
+                </Text>
+
+                <View style={{
+                    position: "relative",
+                    height: 200
+                }}>
+                    <Toast
+                        title="This is an example Toast"
+                        subTitle="This is an example subtitle"
+                        type="success"
+                        id="example-toast"
+                    />
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default ToastPage;

+ 20 - 0
example/src/pages/components/toast/stylesheet.ts

@@ -0,0 +1,20 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 72 - 0
example/src/pages/components/webScrollbar/index.tsx

@@ -0,0 +1,72 @@
+import {
+    ScrollView,
+    View
+} from "react-native";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    Text
+} from "ncore-ui-kit";
+
+const WebScrollbar = () => {
+    const {
+        colors
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    return <PageContainer
+        isScrollable={true}
+        scrollViewProps={{
+            showsVerticalScrollIndicator: true
+        }}
+    >
+        <Text
+            variant="headlineSmallSize"
+            style={{
+                marginBottom: 20
+            }}
+        >
+            {localize("webScrollbar-title")}
+        </Text>
+        <Text
+            variant="bodyMediumSize"
+            color="mid"
+            style={{
+                marginBottom: 20
+            }}
+        >
+            {localize("webScrollbar-desc")}
+        </Text>
+        <ScrollView
+            style={{
+                backgroundColor: colors.content.container.default,
+                borderColor: colors.content.container.mid,
+                borderRadius: 10,
+                borderWidth: 1,
+                height: 300
+            }}
+        >
+            {Array.from({
+                length: 30
+            }).map((_, index) => (
+                <View
+                    key={index}
+                    style={{
+                        padding: 15,
+                        borderBottomWidth: 1,
+                        borderBottomColor: colors.content.container.mid
+                    }}
+                >
+                    <Text>
+                        {localize("webScrollbar-item")} {index + 1}
+                    </Text>
+                </View>
+            ))}
+        </ScrollView>
+    </PageContainer>;
+};
+export default WebScrollbar;

+ 91 - 0
example/src/pages/components/yearSelector/index.tsx

@@ -0,0 +1,91 @@
+import {
+    useLayoutEffect,
+    useState
+} from "react";
+import {
+    View
+} from "react-native";
+import stylesheet from "./stylesheet";
+import {
+    NCoreUIKitLocalize,
+    PageContainer,
+    YearSelector,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+
+const YearSelectorPage = () => {
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    const [
+        ,
+        setIsSheetContentReady
+    ] = useState<boolean>(false);
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("components-yearSelector")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            scrollViewProps={{
+                contentContainerStyle: stylesheet.scrollContent
+            }}
+            scrollViewStyle={[
+                stylesheet.container
+            ]}
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={[
+                    stylesheet.contentContainer
+                ]}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: 20
+                    }}
+                >
+                    {localize("yearSelector-desc")}
+                </Text>
+                <Text
+                    style={stylesheet.title}
+                    variant="titleMediumSize"
+                >
+                    {localize("components-yearSelector")}
+                </Text>
+                <YearSelector
+                    setIsSheetContentReady={setIsSheetContentReady}
+                    selectMultipleObject={() => {}}
+                    selectObject={() => {}}
+                    variant="single"
+                />
+            </View>
+        </PageContainer>
+    );
+};
+export default YearSelectorPage;

+ 20 - 0
example/src/pages/components/yearSelector/stylesheet.ts

@@ -0,0 +1,20 @@
+import {
+    StyleSheet
+} from "react-native";
+
+const stylesheet = StyleSheet.create({
+    contentContainer: {
+        padding: 20,
+        width: "100%"
+    },
+    scrollContent: {
+        flexGrow: 1
+    },
+    container: {
+        flex: 1
+    },
+    title: {
+        marginBottom: 20
+    }
+});
+export default stylesheet;

+ 223 - 0
example/src/pages/coreFeatures/localeExamples/index.tsx

@@ -0,0 +1,223 @@
+import {
+    useLayoutEffect
+} from "react";
+import {
+    View
+} from "react-native";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    LocaleSwitcher,
+    PageContainer,
+    Button,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import {
+    ChevronLeftIcon,
+    ChevronRightIcon
+} from "lucide-react-native";
+
+const LocaleExamples = () => {
+    const {
+        colors,
+        spaces
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize,
+        activeLocale
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    navigation={navigation as unknown as NCoreUIKit.Navigation}
+                    title={localize("localeExamples-title")}
+                    isWrapSafeareaContext={false}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, [
+        navigation,
+        localize
+    ]);
+
+    return <PageContainer
+        isWorkWithHeaderSpace={false}
+        isScrollable={true}
+    >
+        <Text
+            variant="headlineSmallSize"
+            color="high"
+        >
+            {localize("localeExamples-title")}
+        </Text>
+        <Text
+            color="mid"
+        >
+            {localize("localeExamples-desc")}
+        </Text>
+        <Text
+            variant="titleMediumSize"
+            color="high"
+            style={{
+                marginBottom: spaces.spacingLg,
+                marginTop: spaces.spacingXl
+            }}
+        >
+            {localize("localeExamples-languageSwitcher")}
+        </Text>
+        <View
+            style={{
+                flexDirection: "row",
+                gap: spaces.spacingMd
+            }}
+        >
+            <LocaleSwitcher/>
+        </View>
+
+        <View
+            style={{
+                backgroundColor: colors.content.container.subtle,
+                marginTop: spaces.spacingLg,
+                padding: spaces.spacingLg,
+                borderRadius: 12
+            }}
+        >
+            <Text
+                variant="titleMediumSize"
+                color="high"
+                style={{
+                    marginBottom: spaces.spacingMd
+                }}
+            >
+                {localize("localeExamples-localizedTexts")}
+            </Text>
+
+            <Text
+                color="mid"
+                style={{
+                    marginBottom: spaces.spacingSm
+                }}
+            >
+                {localize("localeExamples-currentLanguage")}<Text
+                    color="high"
+                    variant="labelLargeSize"
+                >
+                    {activeLocale}
+                </Text>
+            </Text>
+
+            <View
+                style={{
+                    backgroundColor: colors.content.container.default,
+                    padding: spaces.spacingMd,
+                    gap: spaces.spacingMd,
+                    borderRadius: 8
+                }}
+            >
+                <View>
+                    <Text
+                        variant="labelMediumSize"
+                        color="mid"
+                    >
+                        "hello-world" key
+                    </Text>
+                    <Text
+                        variant="bodyLargeSize"
+                        color="high"
+                    >
+                        {localize("hello-world")}
+                    </Text>
+                </View>
+                <View>
+                    <Text
+                        variant="labelMediumSize"
+                        color="mid"
+                    >
+                        "menu" key
+                    </Text>
+                    <Text
+                        variant="bodyLargeSize"
+                        color="high"
+                    >
+                        {localize("menu")}
+                    </Text>
+                </View>
+                <View>
+                    <Text
+                        variant="labelMediumSize"
+                        color="mid"
+                    >
+                        "installation" key
+                    </Text>
+                    <Text
+                        variant="bodyLargeSize"
+                        color="high"
+                    >
+                        {localize("installation")}
+                    </Text>
+                </View>
+            </View>
+        </View>
+
+        <View
+            style={{
+                justifyContent: "space-between",
+                marginTop: spaces.spacingXl,
+                flexDirection: "row"
+            }}
+        >
+            <Button
+                icon={({
+                    color,
+                    size
+                }) => {
+                    return <ChevronLeftIcon
+                        color={colors.content.icon[color]}
+                        size={size + 3}
+                    />;
+                }}
+                onPress={() => {
+                    navigation.navigate("CoreFeatures", {
+                        screen: "ThemeExamples"
+                    });
+                }}
+                title={localize("themeExamples-title")}
+            />
+
+            <Button
+                icon={({
+                    color,
+                    size
+                }) => {
+                    return <ChevronRightIcon
+                        color={colors.content.icon[color]}
+                        size={size + 3}
+                    />;
+                }}
+                onPress={() => {
+                    navigation.navigate("CoreFeatures", {
+                        screen: "TypesOverride"
+                    });
+                }}
+                title={localize("typesOverride-title")}
+                iconDirection="right"
+            />
+        </View>
+    </PageContainer>;
+};
+export default LocaleExamples;

+ 277 - 0
example/src/pages/coreFeatures/themeExamples/index.tsx

@@ -0,0 +1,277 @@
+import {
+    useLayoutEffect
+} from "react";
+import {
+    View
+} from "react-native";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PaletteSwitcher,
+    ThemeSwitcher,
+    PageContainer,
+    Button,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import {
+    ChevronRightIcon,
+    ChevronLeftIcon
+} from "lucide-react-native";
+
+const ThemeExamples = () => {
+    const {
+        colors,
+        spaces
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("themeExamples-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation as unknown as NCoreUIKit.Navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, [
+        navigation,
+        localize
+    ]);
+
+    return <PageContainer
+        isWorkWithHeaderSpace={false}
+        isScrollable={true}
+    >
+        <Text
+            variant="headlineSmallSize"
+            color="high"
+        >
+            {localize("themeExamples-title")}
+        </Text>
+        <Text
+            color="mid"
+        >
+            {localize("themeExamples-desc")}
+        </Text>
+        <Text
+            variant="titleMediumSize"
+            color="high"
+            style={{
+                marginBottom: spaces.spacingLg,
+                marginTop: spaces.spacingXl
+            }}
+        >
+            {localize("themeExamples-switchers")}
+        </Text>
+        <View
+            style={{
+                flexDirection: "row",
+                gap: spaces.spacingMd
+            }}
+        >
+            <ThemeSwitcher/>
+            <PaletteSwitcher/>
+        </View>
+        <View
+            style={{
+                backgroundColor: colors.content.container.subtle,
+                marginTop: spaces.spacingLg,
+                padding: spaces.spacingLg,
+                borderRadius: 12
+            }}
+        >
+            <Text
+                variant="titleMediumSize"
+                color="high"
+                style={{
+                    marginBottom: spaces.spacingMd
+                }}
+            >
+                {localize("themeExamples-typographyExamples")}
+            </Text>
+            <Text
+                variant="displayLargeSize"
+                color="high"
+            >
+                {localize("themeExamples-displayLarge")}
+            </Text>
+            <Text
+                variant="headlineLargeSize"
+                color="high"
+            >
+                {localize("themeExamples-headlineLarge")}
+            </Text>
+            <Text
+                variant="titleLargeSize"
+                color="high"
+            >
+                {localize("themeExamples-titleLarge")}
+            </Text>
+            <Text
+                variant="bodyLargeSize"
+                color="mid"
+            >
+                {localize("themeExamples-bodyLarge")}
+            </Text>
+            <Text
+                variant="labelLargeSize"
+                color="mid"
+            >
+                {localize("themeExamples-labelLarge")}
+            </Text>
+            <Text
+                variant="titleMediumSize"
+                color="high"
+                style={{
+                    marginBottom: spaces.spacingMd,
+                    marginTop: spaces.spacingXl
+                }}
+            >
+                {localize("themeExamples-colorExamples")}
+            </Text>
+            <View
+                style={{
+                    gap: spaces.spacingSm,
+                    flexDirection: "row",
+                    flexWrap: "wrap"
+                }}
+            >
+                <View style={{
+                    backgroundColor: colors.content.container.primary,
+                    padding: spaces.spacingMd,
+                    borderRadius: 8
+                }}>
+                    <Text
+                        style={{
+                            color: colors.content.text.onPrimary
+                        }}
+                    >
+                        {localize("themeExamples-primary")}
+                    </Text>
+                </View>
+                <View
+                    style={{
+                        backgroundColor: colors.content.container.danger,
+                        padding: spaces.spacingMd,
+                        borderRadius: 8
+                    }}
+                >
+                    <Text
+                        style={{
+                            color: colors.content.text.danger
+                        }}
+                    >
+                        {localize("themeExamples-danger")}
+                    </Text>
+                </View>
+                <View
+                    style={{
+                        backgroundColor: colors.content.container.warning,
+                        padding: spaces.spacingMd,
+                        borderRadius: 8
+                    }}
+                >
+                    <Text
+                        style={{
+                            color: colors.content.text.warning
+                        }}
+                    >
+                        {localize("themeExamples-warning")}
+                    </Text>
+                </View>
+                <View
+                    style={{
+                        backgroundColor: colors.content.container.success,
+                        padding: spaces.spacingMd,
+                        borderRadius: 8
+                    }}
+                >
+                    <Text
+                        style={{
+                            color: colors.content.text.success
+                        }}
+                    >
+                        {localize("themeExamples-success")}
+                    </Text>
+                </View>
+                <View
+                    style={{
+                        backgroundColor: colors.content.container.info,
+                        padding: spaces.spacingMd,
+                        borderRadius: 8
+                    }}
+                >
+                    <Text
+                        style={{
+                            color: colors.content.text.info
+                        }}
+                    >
+                        {localize("themeExamples-info")}
+                    </Text>
+                </View>
+            </View>
+        </View>
+        <View
+            style={{
+                justifyContent: "space-between",
+                marginTop: spaces.spacingXl,
+                flexDirection: "row"
+            }}
+        >
+            <Button
+                icon={({
+                    color,
+                    size
+                }) => {
+                    return <ChevronLeftIcon
+                        color={colors.content.icon[color]}
+                        size={size + 3}
+                    />;
+                }}
+                title={localize("toolsUsage-title")}
+                onPress={() => {
+                    navigation.navigate("CoreFeatures", {
+                        screen: "ToolsUsage"
+                    });
+                }}
+            />
+            <Button
+                icon={({
+                    color,
+                    size
+                }) => {
+                    return <ChevronRightIcon
+                        color={colors.content.icon[color]}
+                        size={size + 3}
+                    />;
+                }}
+                title={localize("localeExamples-title")}
+                iconDirection="right"
+                onPress={() => {
+                    navigation.navigate("CoreFeatures", {
+                        screen: "LocaleExamples"
+                    });
+                }}
+            />
+        </View>
+    </PageContainer>;
+};
+
+export default ThemeExamples;

+ 255 - 0
example/src/pages/coreFeatures/toolsUsage/index.tsx

@@ -0,0 +1,255 @@
+import {
+    useLayoutEffect
+} from "react";
+import {
+    View
+} from "react-native";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    CodeViewer,
+    Button,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import {
+    ChevronLeftIcon,
+    ChevronRightIcon
+} from "lucide-react-native";
+
+const ToolsUsage = () => {
+    const {
+        colors,
+        spaces
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("toolsUsage-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation as unknown as NCoreUIKit.Navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, [
+        navigation,
+        localize
+    ]);
+
+    const codeTheme = `import { NCoreUIKitTheme } from "ncore-ui-kit";
+
+const MyComponent = () => {
+    // Access current theme colors, spaces, and active preferences
+    const {
+        colors,
+        spaces,
+        activeTheme,
+        activePalette
+    } = NCoreUIKitTheme.useContext();
+
+    return (
+        <View style={{ backgroundColor: colors.content.container.default, padding: spaces.spacingMd, borderRadius: 10 }}>
+            <Text style={{ color: colors.content.text.high }}>Current Theme: {activeTheme}</Text>
+        </View>
+    );
+};`;
+
+    const codeLocale = `import { NCoreUIKitLocalize } from "ncore-ui-kit";
+
+const MyComponent = () => {
+    // Access current localization translations and active language
+    const {
+        localize,
+        activeLocale
+    } = NCoreUIKitLocalize.useContext();
+
+    return (
+        <Text>
+            {localize("hello-world")} - Current: {activeLocale}
+        </Text>
+    );
+};`;
+
+    const codeToast = `import { NCoreUIKitToast } from "ncore-ui-kit";
+
+const MyComponent = () => {
+    const { showToast } = NCoreUIKitToast.useContext();
+
+    const handlePress = () => {
+        showToast({
+            title: "Success",
+            content: "Action completed successfully!",
+            variant: "success",
+            duration: 3000
+        });
+    };
+
+    return <Button title="Show Toast" onPress={handlePress} />;
+};`;
+
+    return <PageContainer
+        isWorkWithHeaderSpace={false}
+        isScrollable={true}
+    >
+        <Text
+            variant="headlineSmallSize"
+            color="high"
+        >
+            {localize("toolsUsage-title")}
+        </Text>
+        <Text
+            color="mid"
+        >
+            {localize("toolsUsage-desc")}
+        </Text>
+
+        <Text
+            variant="titleMediumSize"
+            color="high"
+            style={{
+                marginTop: spaces.spacingXl
+            }}
+        >
+            NCoreUIKitTheme.useContext
+        </Text>
+        <Text
+            color="mid"
+            style={{
+                marginTop: spaces.spacingXs
+            }}
+        >
+            {localize("toolsUsage-ncoreThemeDesc")}
+        </Text>
+        <View
+            style={{
+                marginTop: spaces.spacingLg
+            }}
+        >
+            <CodeViewer
+                code={codeTheme}
+                language="tsx"
+            />
+        </View>
+
+        <Text
+            variant="titleMediumSize"
+            color="high"
+            style={{
+                marginTop: spaces.spacingXl
+            }}
+        >
+            NCoreUIKitLocalize.useContext
+        </Text>
+        <Text
+            color="mid"
+            style={{
+                marginTop: spaces.spacingXs
+            }}
+        >
+            {localize("toolsUsage-ncoreLocalizeDesc")}
+        </Text>
+        <View
+            style={{
+                marginTop: spaces.spacingLg
+            }}
+        >
+            <CodeViewer
+                code={codeLocale}
+                language="tsx"
+            />
+        </View>
+
+        <Text
+            variant="titleMediumSize"
+            color="high"
+            style={{
+                marginTop: spaces.spacingXl
+            }}
+        >
+            NCoreUIKitToast.useContext
+        </Text>
+        <Text
+            color="mid"
+            style={{
+                marginTop: spaces.spacingXs
+            }}
+        >
+            {localize("toolsUsage-ncoreToastDesc")}
+        </Text>
+        <View
+            style={{
+                marginTop: spaces.spacingLg
+            }}
+        >
+            <CodeViewer
+                code={codeToast}
+                language="tsx"
+            />
+        </View>
+
+        <View
+            style={{
+                marginTop: spaces.spacingXl,
+                flexDirection: "row",
+                justifyContent: "space-between"
+            }}
+        >
+            <Button
+                icon={({
+                    color,
+                    size
+                }) => {
+                    return <ChevronLeftIcon
+                        color={colors.content.icon[color]}
+                        size={size + 3}
+                    />;
+                }}
+                title={localize("implementation")}
+                onPress={() => {
+                    navigation.navigate("GettingStarted", {
+                        screen: "Implementation"
+                    });
+                }}
+            />
+
+            <Button
+                icon={({
+                    color,
+                    size
+                }) => {
+                    return <ChevronRightIcon
+                        color={colors.content.icon[color]}
+                        size={size + 3}
+                    />;
+                }}
+                title={localize("themeExamples-title")}
+                iconDirection="right"
+                onPress={() => {
+                    navigation.navigate("CoreFeatures", {
+                        screen: "ThemeExamples"
+                    });
+                }}
+            />
+        </View>
+    </PageContainer>;
+};
+
+export default ToolsUsage;

+ 210 - 0
example/src/pages/coreFeatures/typesOverride/index.tsx

@@ -0,0 +1,210 @@
+import {
+    useLayoutEffect
+} from "react";
+import {
+    View
+} from "react-native";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    CodeViewer,
+    Button,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import {
+    ChevronLeftIcon,
+    ChevronRightIcon
+} from "lucide-react-native";
+
+const codeGlobalDts = `import "ncore-ui-kit";
+
+// Kendi projenizin kök dizinine global.d.ts oluşturun.
+// Ardından NCoreUIKit tiplerini extend edin.
+declare module "ncore-ui-kit" {
+    export namespace NCoreUIKit {
+        export type ThemeKey = "dark" | "light";
+        export type PaletteKey = "default" | "red" | "green";
+        export type LocalesKey = "tr-TR" | "en-US";
+
+        export interface ThemeColors {
+            // Theme colors override here if needed
+            myCustomColor: string;
+        }
+
+        export interface LanguageObject {
+            translations: {
+                "welcome-msg": string;
+                "submit-btn": string;
+                // Add your project's custom keys here
+            }
+        }
+    }
+}`;
+
+const codeTsConfig = `{
+  "compilerOptions": {
+    "typeRoots": [
+        "./node_modules/@types",
+        "./global.d.ts"
+    ]
+  }
+}`;
+
+const TypesOverride = () => {
+    const {
+        colors,
+        spaces
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("typesOverride-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation as unknown as NCoreUIKit.Navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, [
+        navigation,
+        localize
+    ]);
+
+    return <PageContainer
+        isWorkWithHeaderSpace={false}
+        isScrollable={true}
+    >
+        <Text
+            variant="headlineSmallSize"
+            color="high"
+        >
+            {localize("typesOverride-title")}
+        </Text>
+        <Text
+            color="mid"
+        >
+            {localize("typesOverride-desc")}
+        </Text>
+
+        <Text
+            variant="titleMediumSize"
+            color="high"
+            style={{
+                marginTop: spaces.spacingXl
+            }}
+        >
+            global.d.ts
+        </Text>
+        <Text
+            color="mid"
+            style={{
+                marginTop: spaces.spacingXs
+            }}
+        >
+            {localize("typesOverride-globalDtsDesc")}
+        </Text>
+        <View
+            style={{
+                marginTop: spaces.spacingLg
+            }}
+        >
+            <CodeViewer
+                code={codeGlobalDts}
+                language="tsx"
+            />
+        </View>
+
+        <Text
+            variant="titleMediumSize"
+            color="high"
+            style={{
+                marginTop: spaces.spacingXl
+            }}
+        >
+            tsconfig.json
+        </Text>
+        <Text
+            color="mid"
+            style={{
+                marginTop: spaces.spacingXs
+            }}
+        >
+            {localize("typesOverride-tsconfigDesc")}
+        </Text>
+        <View
+            style={{
+                marginTop: spaces.spacingLg
+            }}
+        >
+            <CodeViewer
+                code={codeTsConfig}
+                language="json"
+            />
+        </View>
+
+        <View
+            style={{
+                marginTop: spaces.spacingXl,
+                flexDirection: "row",
+                justifyContent: "space-between"
+            }}
+        >
+            <Button
+                icon={({
+                    color,
+                    size
+                }) => {
+                    return <ChevronLeftIcon
+                        color={colors.content.icon[color]}
+                        size={size + 3}
+                    />;
+                }}
+                title={localize("localeExamples-title")}
+                onPress={() => {
+                    navigation.navigate("CoreFeatures", {
+                        screen: "LocaleExamples"
+                    });
+                }}
+            />
+
+            <Button
+                icon={({
+                    color,
+                    size
+                }) => {
+                    return <ChevronRightIcon
+                        color={colors.content.icon[color]}
+                        size={size + 3}
+                    />;
+                }}
+                title={localize("components")}
+                iconDirection="right"
+                onPress={() => {
+                    navigation.navigate("Components", {
+                        screen: "Text"
+                    });
+                }}
+            />
+        </View>
+    </PageContainer>;
+};
+
+export default TypesOverride;

+ 22 - 7
example/src/pages/home/index.tsx

@@ -10,6 +10,8 @@ import {
     NCoreUIKitLocalize,
     NCoreUIKitLocalize,
     NCoreUIKitTheme,
     NCoreUIKitTheme,
     PageContainer,
     PageContainer,
+    Seperator,
+    Button,
     Text
     Text
 } from "ncore-ui-kit";
 } from "ncore-ui-kit";
 import {
 import {
@@ -23,8 +25,9 @@ import packageJSON from "../../../../package.json";
 
 
 const Home = () => {
 const Home = () => {
     const {
     const {
-        colors,
-        spaces
+        activeTheme,
+        spaces,
+        colors
     } = NCoreUIKitTheme.useContext();
     } = NCoreUIKitTheme.useContext();
 
 
     const {
     const {
@@ -39,12 +42,14 @@ const Home = () => {
         });
         });
     }, []);
     }, []);
 
 
+    const isDarkTheme = activeTheme.indexOf("dark") !== -1;
+
     return <PageContainer
     return <PageContainer
         scrollViewStyle={stylesheet.container}
         scrollViewStyle={stylesheet.container}
         isScrollable={true}
         isScrollable={true}
         scrollViewProps={{
         scrollViewProps={{
             showsHorizontalScrollIndicator: false,
             showsHorizontalScrollIndicator: false,
-            showsVerticalScrollIndicator: false,
+            showsVerticalScrollIndicator: true,
             contentContainerStyle: {
             contentContainerStyle: {
                 backgroundColor: colors.content.container.default,
                 backgroundColor: colors.content.container.default,
                 ...stylesheet.contentContainer
                 ...stylesheet.contentContainer
@@ -61,7 +66,7 @@ const Home = () => {
         >
         >
             <Image
             <Image
                 source={{
                 source={{
-                    uri: "https://ncore.nibgat.space/assets/images/ncorelogo.png"
+                    uri: isDarkTheme ? "http://ncore.nibgat.space/assets/images/darklogo.png" : "https://ncore.nibgat.space/assets/images/ncorelogo.png"
                 }}
                 }}
                 style={{
                 style={{
                     height: 300,
                     height: 300,
@@ -78,7 +83,7 @@ const Home = () => {
                 {localize("ncore-design-system")}
                 {localize("ncore-design-system")}
             </Text>
             </Text>
             <Text
             <Text
-                variant="headlineLargeSize"
+                variant="headlineSmallSize"
                 style={{
                 style={{
                     marginBottom: spaces.spacingLg,
                     marginBottom: spaces.spacingLg,
                     textAlign: "center"
                     textAlign: "center"
@@ -87,7 +92,6 @@ const Home = () => {
                 {localize("ui-kit-library")}
                 {localize("ui-kit-library")}
             </Text>
             </Text>
             <Text
             <Text
-                variant="bodyLargeSize"
                 style={{
                 style={{
                     marginBottom: spaces.spacingMd,
                     marginBottom: spaces.spacingMd,
                     textAlign: "center"
                     textAlign: "center"
@@ -95,14 +99,25 @@ const Home = () => {
             >
             >
                 {localize("ncore-about")}
                 {localize("ncore-about")}
             </Text>
             </Text>
+            <Seperator />
             <Text
             <Text
+                variant="bodySmallSize"
                 color="low"
                 color="low"
                 style={{
                 style={{
-                    marginBottom: spaces.spacingMd
+                    marginBottom: spaces.spacingMd,
+                    marginTop: spaces.spacingMd
                 }}
                 }}
             >
             >
                 {localize("version")}: {packageJSON.version}
                 {localize("version")}: {packageJSON.version}
             </Text>
             </Text>
+            <Button
+                spreadBehaviour="free"
+                title={localize("getting-started")}
+                size="small"
+                onPress={() => {
+                    navigation.navigate("GettingStarted");
+                }}
+            />
         </View>
         </View>
     </PageContainer>;
     </PageContainer>;
 };
 };

+ 169 - 0
example/src/pages/implementation/index.tsx

@@ -0,0 +1,169 @@
+import {
+    useLayoutEffect
+} from "react";
+import {
+    View
+} from "react-native";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    CodeViewer,
+    Button,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import {
+    ChevronLeftIcon,
+    ChevronRightIcon
+} from "lucide-react-native";
+
+const Implementation = () => {
+    const {
+        colors,
+        spaces
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("implementation-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    const exampleCode = `import {
+    type NCoreUIKitConfig,
+    setupNCoreUIKit,
+    Host
+} from "ncore-ui-kit";
+
+// Kendi temanızı ve dil dosyanızı dahil edin
+import defaultLocaleJSON from "./variants/locales/default.json";
+import defaultThemeJSON from "./variants/themes/default.json";
+
+// NCore konfigürasyonunu oluşturun
+const NCoreConfig: NCoreUIKitConfig = {
+    projectThemes: defaultThemeJSON as NCoreUIKit.Palette,
+    initialSelectedGapPropagation: "spacious",
+    projectLocales: defaultLocaleJSON,
+    initialSelectedPalette: "nibgat",
+    initialSelectedTheme: "light"
+};
+
+// NCoreUIKitBase nesnesini ayağa kaldırın
+const NCoreUIKitBase = setupNCoreUIKit(NCoreConfig);
+
+const App = () => {
+    return <NCoreUIKitBase.Provider>
+        <Host name="main-header">
+            {/* Sayfalarınız veya Navigasyon yapınız burada yer almalı */}
+        </Host>
+    </NCoreUIKitBase.Provider>;
+};
+export default App;`;
+
+    return <PageContainer
+        isWorkWithHeaderSpace={false}
+        isScrollable={true}
+    >
+        <View
+            style={{
+                padding: spaces.spacingMd,
+                width: "100%"
+            }}
+        >
+            <Text
+                variant="bodyMediumSize"
+                color="mid"
+                style={{
+                    marginBottom: spaces.spacingMd
+                }}
+            >
+                {localize("implementation-desc")}
+            </Text>
+
+            <View
+                style={{
+                    backgroundColor: colors.content.container.default,
+                    borderColor: colors.content.border.subtle,
+                    borderRadius: 10,
+                    borderWidth: 1,
+                    padding: spaces.spacingMd,
+                    marginBottom: spaces.spacingMd
+                }}
+            >
+                <Text variant="headlineSmallSize">{localize("your-project-main-directory")}/src/index.tsx</Text>
+                <CodeViewer
+                    code={exampleCode}
+                    language="tsx"
+                />
+            </View>
+
+            <View
+                style={{
+                    justifyContent: "space-between",
+                    marginTop: spaces.spacingMd,
+                    flexDirection: "row"
+                }}
+            >
+                <Button
+                    icon={({
+                        color,
+                        size
+                    }) => {
+                        return <ChevronLeftIcon
+                            color={colors.content.icon[color]}
+                            size={size + 3}
+                        />;
+                    }}
+                    title={localize("installation")}
+                    iconDirection="left"
+                    onPress={() => {
+                        navigation.navigate("GettingStarted", {
+                            screen: "Installation"
+                        });
+                    }}
+                />
+                <Button
+                    icon={({
+                        color,
+                        size
+                    }) => {
+                        return <ChevronRightIcon
+                            color={colors.content.icon[color]}
+                            size={size + 3}
+                        />;
+                    }}
+                    title={localize("coreFeatures")}
+                    iconDirection="right"
+                    onPress={() => {
+                        navigation.navigate("CoreFeatures", {
+                            screen: "ToolsUsage"
+                        });
+                    }}
+                />
+            </View>
+        </View>
+    </PageContainer>;
+};
+export default Implementation;

+ 148 - 0
example/src/pages/installation/index.tsx

@@ -0,0 +1,148 @@
+import {
+    useLayoutEffect
+} from "react";
+import {
+    View
+} from "react-native";
+import {
+    NCoreUIKitLocalize,
+    NCoreUIKitTheme,
+    PageContainer,
+    CodeViewer,
+    Button,
+    Header,
+    Text
+} from "ncore-ui-kit";
+import {
+    useNavigation
+} from "@react-navigation/native";
+import type RootStackParamList from "../../navigation/type";
+import type {
+    NativeStackNavigationProp
+} from "@react-navigation/native-stack";
+import {
+    ChevronRightIcon
+} from "lucide-react-native";
+
+const Installation = () => {
+    const {
+        colors,
+        spaces
+    } = NCoreUIKitTheme.useContext();
+
+    const {
+        localize
+    } = NCoreUIKitLocalize.useContext();
+
+    const navigation = useNavigation<NativeStackNavigationProp<RootStackParamList>>();
+
+    useLayoutEffect(() => {
+        navigation.setOptions({
+            header: () => (
+                <Header
+                    title={localize("installation-title")}
+                    isWrapSafeareaContext={false}
+                    navigation={navigation}
+                    isGoBackEnable={true}
+                />
+            ),
+            headerShown: true
+        });
+    }, []);
+
+    return (
+        <PageContainer
+            isWorkWithHeaderSpace={false}
+            isScrollable={true}
+        >
+            <View
+                style={{
+                    padding: spaces.spacingMd,
+                    width: "100%"
+                }}
+            >
+                <Text
+                    variant="bodyMediumSize"
+                    color="mid"
+                    style={{
+                        marginBottom: spaces.spacingMd
+                    }}
+                >
+                    {localize("installation-desc")}
+                </Text>
+
+                <View
+                    style={{
+                        backgroundColor: colors.content.container.default,
+                        borderColor: colors.content.border.subtle,
+                        borderRadius: 10,
+                        borderWidth: 1,
+                        padding: spaces.spacingMd,
+                        marginBottom: spaces.spacingMd
+                    }}
+                >
+                    <Text variant="headlineSmallSize">{localize("installation-installationTitle")}</Text>
+                    <CodeViewer
+                        code={"yarn add ncore-ui-kit"}
+                        language="bash"
+                    />
+                </View>
+
+                <View
+                    style={{
+                        backgroundColor: colors.content.container.default,
+                        borderColor: colors.content.border.subtle,
+                        borderRadius: 10,
+                        borderWidth: 1,
+                        padding: spaces.spacingMd,
+                        marginBottom: spaces.spacingMd
+                    }}
+                >
+                    <Text variant="headlineSmallSize">{localize("installation-peerDepsTitle")}</Text>
+                    <Text
+                        variant="bodyMediumSize"
+                        color="mid"
+                        style={{
+                            marginBottom: 10,
+                            marginTop: 10
+                        }}
+                    >
+                        {localize("installation-peerDepsDesc")}
+                    </Text>
+                    <CodeViewer
+                        code="yarn add @react-native-clipboard/clipboard lucide-react-native moment ncore-context react-native-safe-area-context react-native-svg rrule"
+                        language="bash"
+                    />
+                </View>
+
+                <View
+                    style={{
+                        flexDirection: "row",
+                        justifyContent: "flex-end",
+                        marginTop: spaces.spacingMd
+                    }}
+                >
+                    <Button
+                        icon={({
+                            color,
+                            size
+                        }) => {
+                            return <ChevronRightIcon
+                                color={colors.content.icon[color]}
+                                size={size + 3}
+                            />;
+                        }}
+                        title={localize("next")}
+                        iconDirection="right"
+                        onPress={() => {
+                            navigation.navigate("GettingStarted", {
+                                screen: "Implementation"
+                            });
+                        }}
+                    />
+                </View>
+            </View>
+        </PageContainer>
+    );
+};
+export default Installation;

+ 691 - 17
example/src/variants/locales/default.json

@@ -1,58 +1,732 @@
 [
 [
     {
     {
-        "locale": "tr-TR",
-        "isRTL": false,
         "translations": {
         "translations": {
             "ncore-about": "NCore, başta NİBGAT® ve NİBGAT® | Topluluk olmak üzere herkes için geliştirilmiş bir tasarım sistemi ve bileşen kütüphanesidir. Hızlı geliştirme süreçleri ve yüksek stabilizasyon ile şık sistemler üretmek üzere tasarlanmıştır.",
             "ncore-about": "NCore, başta NİBGAT® ve NİBGAT® | Topluluk olmak üzere herkes için geliştirilmiş bir tasarım sistemi ve bileşen kütüphanesidir. Hızlı geliştirme süreçleri ve yüksek stabilizasyon ile şık sistemler üretmek üzere tasarlanmıştır.",
+            "typesOverride-globalDtsDesc": "TypeScript projelerinde NCore UI Kit kütüphanesini kullanırken, temanızdaki veya dil dosyanızdaki özel anahtarları TypeScript'e tanıtmak için global.d.ts kullanmanız gerekir.",
+            "toolsUsage-ncoreThemeDesc": "Tema değerlerine dinamik olarak erişim sağlar, prop drilling gerektirmez. Renkleri ve boşlukları global olarak kullanabilirsiniz.",
+            "installation-peerDepsDesc": "Aşağıdaki paketlerin projenizde kurulu olması gereklidir. Geliştirme ortamınıza uygun olan komut ile (yarn/npm) kurabilirsiniz.",
+            "pageContainer-desc": "Sayfa içeriklerini sararak tema boşluklarına, güvenli alanlara ve kaydırma yapılarına uygun hale getiren temel bileşen.",
+            "typesOverride-tsconfigDesc": "Projenizin tsconfig.json dosyasında global.d.ts dosyanızı typeRoots veya include içerisine eklemeyi unutmayın.",
+            "stateCard-desc": "Boş durum, hata durumu veya başarılı işlem gibi uygulama anlarını kullanıcıya gösteren bilgilendirici kart bileşeni.",
+            "toolsUsage-ncoreToastDesc": "Kullanıcıyı bir işlemin sonucu hakkında bilgilendirmek için interaktif toast mesajları göstermeyi sağlar.",
+            "installation-desc": "NCore UI Kit kurulumu, temel kullanımı ve geliştirme ortamınıza nasıl entegre edeceğiniz hakkında bilgiler.",
+            "typesOverride-desc": "Kendi projelerinizde NCore UI Kit tiplerini (tema, dil vb.) global.d.ts ile nasıl ezebileceğinizin örneği.",
+            "webScrollbar-desc": "Web platformlarında tarayıcının varsayılan kaydırma çubuğunu özel temalı bir çubukla değiştiren bileşen.",
+            "markdownViewer-desc": "Markdown formatındaki zengin metinleri ayrıştırıp biçimlendirilmiş olarak gösteren içerik bileşeni.",
+            "implementation-desc": "Projelerinizde NCore UI Kit'i kurduktan sonra en dış katmandan nasıl uygulayacağınıza dair örnek.",
+            "modal-desc": "Mevcut sayfanın üzerine binen ve kullanıcıyı belirli bir göreve odaklayan kalıcı (modal) pencere bileşeni.",
+            "notificationIndicator-desc": "Okunmamış bildirim veya mesaj sayılarını görsel olarak belirten ufak belirteç bileşeni.",
+            "paletteSwitcher-desc": "Kullanıcının uygulamanın renk paletini ve görünümünü özelleştirmesine olanak tanıyan bileşen.",
+            "selectSheet-desc": "Ekranın altından açılarak bir liste içerisinden pratik seçim yapılmasını sağlayan sayfa bileşeni.",
+            "toolsUsage-ncoreLocalizeDesc": "Herhangi bir bileşen içinde çeviri sözlüğüne erişmeyi ve aktif dili yönetmeyi sağlar.",
+            "mainHeader-desc": "Ana menü ve genel uygulama yönlendirmeleri için kullanılan büyük ve kapsamlı üst başlık bileşeni.",
+            "dateTimePicker-desc": "Tarih ve saati aynı anda seçebilmeyi veya ayarlayabilmeyi sağlayan kapsamlı seçici bileşeni.",
+            "dialog-desc": "Kullanıcının dikkatini çekmek, onay almak veya bilgi vermek için kullanılan açılır pencere bileşeni.",
+            "radioButton-desc": "Birbirini dışlayan birden çok seçenek arasından yalnızca birini seçmeye yarayan buton bileşeni.",
+            "dateTimeSheet-desc": "Ekranın altından açılarak tarih ve saat seçimi yapılmasını sağlayan sayfa (sheet) bileşeni.",
+            "text-desc": "Uygulama içerisindeki tüm metinleri tipografi ve tema kurallarına göre işleyen temel yazı bileşeni.",
+            "textAreaInput-desc": "Kullanıcıların uzun ve çok satırlı metinler girmesini sağlayan geniş girdi alanı bileşeni.",
+            "localeSwitcher-desc": "Uygulamanın dil seçenekleri arasında anında geçiş yapılmasını sağlayan kontrol bileşeni.",
+            "themeSwitcher-desc": "Aydınlık ve karanlık tema veya sistem teması arasında geçiş yapılmasını sağlayan bileşen.",
+            "header-desc": "Sayfaların en üstünde yer alan, başlık ve navigasyon eylemlerini barındıran üst alan bileşeni.",
+            "loading-desc": "Arka planda devam eden asenkron bir işlemin veya veri yüklemesinin durumunu gösteren bileşen.",
+            "chip-desc": "Küçük bilgi parçalarını, etiketleri veya durumları göstermek için kullanılan kompakt bileşen.",
+            "snackBar-desc": "Ekranın alt kısmında geçici olarak beliren ve kısa durum mesajları sunan uyarı bileşeni.",
+            "toolsUsage-codeViewerDesc": "Kodu uygulamanızda güzel bir şekilde render etmek ve panoya kopyalamak için.",
+            "checkBox-desc": "Birden fazla seçenek arasından bağımsız seçimler yapmayı sağlayan onay kutusu bileşeni.",
+            "embeddedMenu-desc": "Sayfa içine gömülü (inline) olarak çalışan ve bağlamsal menü öğeleri sunan bileşen.",
+            "numericInput-desc": "Sadece sayısal verilerin veya miktarların girilmesini sağlayan özel girdi bileşeni.",
+            "seperator-desc": "Bileşenler veya içerikler arasında görsel bir ayrım çizgisi oluşturan boşluk bileşeni.",
+            "textInput-desc": "Kullanıcıdan kısa metin veya veri girmesini talep eden standart form girdi bileşeni.",
+            "monthSelector-desc": "Bir yıl içerisinden belirli bir ayı veya ayları seçmek için kullanılan bileşen.",
+            "sticker-desc": "Eğlenceli görseller veya ikonlar eklemek için kullanılan dinamik yapıştırma bileşeni.",
+            "toast-desc": "Ekranın üst kısmında anlık olarak belirip kaybolan sistem mesajlarını gösteren bileşen.",
+            "timeSelector-desc": "Belirli bir zamanı (saat, dakika) seçmek için optimize edilmiş arayüz bileşeni.",
+            "rowCard-desc": "Bilgileri veya görselleri yatay bir satır düzeni içinde sunan bilgi kartı bileşeni.",
+            "selectBox-desc": "Açılır liste içerisinden tekil veya çoklu seçim yapmayı sağlayan seçici bileşeni.",
+            "themeExamples-desc": "Farklı tema, palet ve tipografi kullanımları ve canlı olarak değiştirilmesi.",
+            "highlightButton-desc": "Önemli eylemleri vurgulamak için kullanılan dikkat çekici buton bileşeni.",
+            "bottomSheet-desc": "Ekranın altından açılan ve ek içerikler sunan kaydırılabilir panel bileşeni.",
+            "button-desc": "Kullanıcı etkileşimlerini tetiklemek için kullanılan temel tıklanabilir bileşen.",
+            "localeExamples-desc": "Diller arası geçiş ve localize fonksiyonu ile dinamik metin kullanımı.",
+            "menu-desc": "Kullanıcıya çeşitli seçenekler ve bağlantılar sunan genel amaçlı menü bileşeni.",
+            "yearSelector-desc": "Bir listeden sadece yılı seçmeye odaklanan özel zaman arayüzü bileşeni.",
+            "dateSelector-desc": "Kullanıcıların belirli bir tarihi seçmesini sağlayan arayüz bileşeni.",
+            "switch-desc": "İki durumlu (açık/kapalı) tercihleri değiştirmeye yarayan anahtar bileşeni.",
+            "toolsUsage-desc": "NCore UI Kit hook'ları olan useTheme, useLocale ve useToast kullanımı.",
+            "siteLogo-desc": "Markayı veya uygulamayı temsil eden ana logo görselini işleyen bileşen.",
+            "avatarGroup-desc": "Birden fazla avatarı bir arada gruplayarak gösteren bileşen.",
+            "avatar-desc": "Kullanıcı veya varlıkları temsil eden profil görseli bileşeni.",
+            "markdownViewer-title": "Markdown Görüntüleyici (Markdown Viewer)",
+            "typesOverride-tsconfigIntegration": "tsconfig.json Entegrasyonu",
+            "bottomSheet-toggleSwipeClose": "Kaydırarak Kapatmayı Aç/Kapat",
+            "highlightButton-toggleCustomPadding": "Özel Boşluğu Aç/Kapat",
+            "notificationIndicator-toggleShowCount": "Sayıyı Göster/Gizle",
+            "themeExamples-headlineLarge": "Büyük Başlık (Headline Large)",
+            "localeExamples-localizedTexts": "Yerelleştirilmiş Metinler",
+            "themeExamples-titleLarge": "Büyük Alt Başlık (Title Large)",
+            "dateTimePicker-changePickerType": "Seçici Türünü Değiştir",
+            "themeExamples-displayLarge": "Büyük Ekran (Display Large)",
+            "mainHeader-toggleSeperator": "MainHeader ToggleSeperator",
+            "highlightButton-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "textAreaInput-toggleOptional": "İsteğe Bağlıyı Aç/Kapat",
+            "themeExamples-typographyExamples": "Tipografi Örnekleri",
+            "dateTimePicker-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "numericInput-toggleOptional": "İsteğe Bağlıyı Aç/Kapat",
+            "themeExamples-labelLarge": "Büyük Etiket (Label Large)",
+            "highlightButton-toggleIconDir": "İkon Yönünü Aç/Kapat",
+            "highlightButton-toggleLoading": "Yükleniyoru Aç/Kapat",
+            "markdownViewer-enterContent": "Markdown İçeriği Girin",
+            "textAreaInput-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "checkBox-changeIsChecked": "İşaret Durumunu Değiştir",
+            "numericInput-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "radioButton-toggleFlip": "Tersine Çevirmeyi Aç/Kapat",
+            "radioButton-toggleSelected": "Seçili Durumu Aç/Kapat",
+            "selectBox-toggleMultiSelect": "Çoklu Seçimi Aç/Kapat",
             "this-is-test-sub-page": "Bu bir test alt sayfasıdır.",
             "this-is-test-sub-page": "Bu bir test alt sayfasıdır.",
-            "toggle-custom-padding": "Özel Boşluğu Aç/Kapat",
+            "your-project-main-directory": "PROJENIZIN_ANA_DIZINI",
+            "avatarGroup-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "components-dateTimeSheet": "Tarih Saat Seçim Paneli",
+            "installation-peerDepsTitle": "Gerekli Bağımlılıklar",
+            "radioButton-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "selectBox-toggleOptional": "İsteğe Bağlıyı Aç/Kapat",
+            "textInput-toggleOptional": "İsteğe Bağlıyı Aç/Kapat",
+            "themeExamples-bodyLarge": "Büyük Gövde (Body Large)",
+            "toggle-swipe-close": "Kaydırarak Kapatmayı Aç/Kapat",
+            "typesOverride-title": "Tip Değiştirme (global.d.ts)",
+            "localeExamples-languageSwitcher": "Dil Değiştirici",
+            "mainHeader-toggleGoBack": "MainHeader ToggleGoBack",
+            "mainHeader-toggleSticky": "MainHeader ToggleSticky",
+            "notificationIndicator-title": "Bildirim Göstergesi",
+            "textAreaInput-toggleRequired": "Zorunluyu Aç/Kapat",
+            "avatarGroup-toggleLoading": "Yükleniyoru Aç/Kapat",
+            "bottomSheet-toggleShowHandle": "Tutamacı Aç/Kapat",
+            "checkBox-toggleFlip": "Tersine Çevirmeyi Aç/Kapat",
+            "dateTimePicker-changeVariant": "Varyantı Değiştir",
+            "highlightButton-changeSpread": "Yayılımı Değiştir",
+            "notificationIndicator-changeType": "Türü Değiştir",
+            "numericInput-toggleRequired": "Zorunluyu Aç/Kapat",
+            "radioButton-toggleLoading": "Yükleniyoru Aç/Kapat",
+            "selectBox-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "textAreaInput-toggleClean": "Temizlemeyi Aç/Kapat",
+            "textInput-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "checkBox-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "dateTimePicker-changeSpread": "Yayılımı Değiştir",
+            "numericInput-toggleClean": "Temizlemeyi Aç/Kapat",
+            "textAreaInput-exampleTitle": "Metin Alanı Başlık",
+            "textAreaInput-placeholder": "Bir şeyler yazın...",
+            "webScrollbar-item": "Kaydırılabilir İçerik Öğesi",
+            "components-paletteSwitcher": "Palet Değiştirici",
+            "dialog-enterContentText": "İçerik Metnini Girin",
+            "numericInput-changeVariant": "Varyantı Değiştir",
+            "rowCard-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "seperator-changeThickness": "Kalınlığı Değiştir",
+            "textAreaInput-changeSpread": "Yayılımı Değiştir",
+            "avatar-enterImageUrl": "Resim Bağlantısı Girin",
+            "avatar-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "checkBox-toggleLoading": "Yükleniyoru Aç/Kapat",
+            "components-snackBar": "Bilgi Çubuğu (SnackBar)",
+            "embeddedMenu-openMenu": "EmbeddedMenu OpenMenu",
+            "embeddedMenu-settings": "EmbeddedMenu Settings",
+            "localeExamples-currentLanguage": "Mevcut Dil: ",
             "ncore-design-system": "NCore | Tasarım Sistemi",
             "ncore-design-system": "NCore | Tasarım Sistemi",
+            "numericInput-changeSpread": "Yayılımı Değiştir",
+            "selectBox-changePosition": "Pozisyonu Değiştir",
+            "selectBox-toggleSearchable": "Aramayı Aç/Kapat",
+            "switch-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "textInput-toggleRequired": "Zorunluyu Aç/Kapat",
+            "toggle-custom-padding": "Özel Boşluğu Aç/Kapat",
+            "change-is-checked": "İşaret Durumunu Değiştir",
+            "chip-toggleClosable": "Kapatılabilir Aç/Kapat",
+            "highlightButton-changeSize": "Boyutu Değiştir",
+            "radioButton-changeSpread": "Yayılımı Değiştir",
+            "radioButton-enterSubTitle": "Alt Başlık Girin",
+            "rowCard-toggleLoading": "Yükleniyoru Aç/Kapat",
+            "rowCard-toggleRightIcon": "Sağ İkonu Aç/Kapat",
+            "selectBox-toggleClean": "Temizlemeyi Aç/Kapat",
+            "textInput-exampleTitle": "Metin Girişi Başlık",
+            "textInput-toggleClean": "Temizlemeyi Aç/Kapat",
+            "themeExamples-colorExamples": "Renk Örnekleri",
             "toggle-icon-direction": "İkon Yönünü Aç/Kapat",
             "toggle-icon-direction": "İkon Yönünü Aç/Kapat",
+            "avatar-toggleLoading": "Yükleniyoru Aç/Kapat",
+            "bottomSheet-togglePortal": "Portalı Aç/Kapat",
+            "change-picker-type": "Seçici Türünü Değiştir",
+            "chip-toggleDisabled": "Devre Dışıyı Aç/Kapat",
+            "components-localeSwitcher": "Dil Değiştirici",
+            "components-pageContainer": "Sayfa Konteyneri",
+            "components-themeSwitcher": "Tema Değiştirici",
+            "highlightButton-toggleIcon": "İkonu Aç/Kapat",
+            "rowCard-toggleLeftIcon": "Sol İkonu Aç/Kapat",
+            "switch-changeIconDir": "İkon Yönünü Değiştir",
+            "switch-toggleLoading": "Yükleniyoru Aç/Kapat",
+            "textInput-changeVariant": "Varyantı Değiştir",
+            "textInput-placeholder": "Bir şeyler yazın...",
+            "highlightButton-changeType": "Türü Değiştir",
+            "notificationIndicator-addCount": "Sayı Ekle",
+            "selectBox-changeSpread": "Yayılımı Değiştir",
+            "selectBox-enterSubTitle": "Alt Başlık Girin",
+            "stateCard-enterSubTitle": "Alt Başlık Girin",
+            "stateCard-title": "Durum Kartı (State Card)",
+            "textInput-changeSpread": "Yayılımı Değiştir",
             "ui-kit-library": "KA Araçları - Kütüphanesi",
             "ui-kit-library": "KA Araçları - Kütüphanesi",
+            "checkBox-changeSpread": "Yayılımı Değiştir",
+            "chip-toggleLoading": "Yükleniyoru Aç/Kapat",
+            "components-modal": "Kalıcı Pencere (Modal)",
+            "dateTimePicker-changeType": "Türü Değiştir",
+            "enter-content-text": "İçerik Metnini Girin",
+            "header-toggleGoBack": "Header ToggleGoBack",
+            "numericInput-exampleTitle": "Sayısal Değer",
+            "numericInput-placeholder": "Bir sayı girin",
+            "rowCard-exampleSubTitle": "Kart Alt Başlık",
+            "siteLogo-enterSubTitle": "Alt Başlık Girin",
+            "toolsUsage-codeViewer": "Kod Görüntüleyici",
+            "typesOverride-globalTypes": "Global Tipler",
+            "avatarGroup-changeSize": "Boyutu Değiştir",
+            "bottom-sheet-content": "Alt Panel İçeriği",
+            "dateTimePicker-title": "Tarih Saat Seçici",
+            "dialog-changeVariant": "Varyantı Değiştir",
+            "dialog-openDialog": "İletişim Kutusunu Aç",
+            "enter-image-url": "Resim Bağlantısı Girin",
+            "installation-installationTitle": "Kurulum",
+            "numericInput-toggleIcon": "İkonu Aç/Kapat",
+            "rowCard-enterSubTitle": "Alt Başlık Girin",
+            "siteLogo-exampleSubTitle": "Design System",
+            "siteLogo-title": "Site Logosu (Site Logo)",
+            "switch-toggleActive": "Aktifliği Aç/Kapat",
+            "textAreaInput-changeType": "Türü Değiştir",
+            "themeExamples-switchers": "Değiştiriciler",
+            "toggle-closable": "Kapatılabilir Aç/Kapat",
+            "toggle-flip": "Tersine Çevirmeyi Aç/Kapat",
+            "bottomSheet-content": "Alt Panel İçeriği",
+            "checkBox-enterSubText": "Alt Metin Girin",
+            "embeddedMenu-title": "EmbeddedMenu Title",
+            "highlightButton-enterText": "Metin Girin",
+            "numericInput-changeType": "Türü Değiştir",
+            "radioButton-exampleTitle": "Radyo Başlık",
+            "switch-changeSpread": "Yayılımı Değiştir",
+            "switch-enterSubTitle": "Alt Başlık Girin",
+            "textAreaInput-enterTitle": "Başlık Girin",
             "toggle-disabled": "Devre Dışıyı Aç/Kapat",
             "toggle-disabled": "Devre Dışıyı Aç/Kapat",
+            "toolsUsage-languageTs": "Dil: TypeScript",
+            "components-dateSelector": "Tarih Seçici",
+            "components-toast": "Tost Mesajı (Toast)",
+            "numericInput-enterTitle": "Başlık Girin",
+            "radioButton-changeType": "Türü Değiştir",
+            "radioButton-subTitleLabel": "Alt Başlık",
+            "rowCard-title": "Satır Kartı (Row Card)",
+            "toggle-show-handle": "Tutamacı Aç/Kapat",
+            "avatar-changeStatus": "Durumu Değiştir",
+            "bottomSheet-openSheet": "Alt Paneli Aç",
+            "chip-changeSpread": "Yayılımı Değiştir",
+            "components-selectSheet": "Seçim Paneli",
+            "components-timeSelector": "Saat Seçici",
+            "embeddedMenu-home": "EmbeddedMenu Home",
+            "header-enterTitle": "Header EnterTitle",
+            "header-titleLabel": "Header TitleLabel",
+            "highlightButton-example": "Örnek Buton",
+            "highlightButton-title": "Vurgulu Buton",
+            "radioButton-enterTitle": "Başlık Girin",
+            "selectBox-exampleTitle": "Seçim Başlık",
+            "seperator-title": "Ayırıcı (Seperator)",
+            "stateCard-exampleSubTitle": "Nisan Ayı",
+            "textInput-toggleIcon": "İkonu Aç/Kapat",
             "toggle-loading": "Yükleniyoru Aç/Kapat",
             "toggle-loading": "Yükleniyoru Aç/Kapat",
+            "components-monthSelector": "Ay Seçici",
+            "components-yearSelector": "Yıl Seçici",
+            "date-time-picker": "Tarih Saat Seçici",
+            "loading-changeSize": "Boyutu Değiştir",
+            "loading-title": "Yükleniyor (Loading)",
+            "localeExamples-title": "Dil Örnekleri",
+            "markdownViewer-contentLabel": "İçerik",
+            "selectBox-changeType": "Türü Değiştir",
+            "selectBox-subTitleLabel": "Alt Başlık",
+            "siteLogo-toggleIcon": "İkonu Aç/Kapat",
+            "stateCard-exampleTitle": "Aylık Satış",
+            "stateCard-subTitleLabel": "Alt Başlık",
+            "switch-exampleTitle": "Anahtar Başlık",
+            "textInput-changeType": "Türü Değiştir",
+            "themeExamples-title": "Tema Örnekleri",
+            "toolsUsage-title": "Araç Kullanımları",
+            "checkBox-changeType": "Türü Değiştir",
+            "checkBox-subTitleLabel": "Alt Başlık",
+            "highlightButton-titleLabel": "Başlık",
+            "mainHeader-title": "MainHeader Title",
+            "selectBox-enterTitle": "Başlık Girin",
+            "siteLogo-subTitleLabel": "Alt Başlık",
+            "stateCard-enterTitle": "Başlık Girin",
+            "textInput-enterTitle": "Başlık Girin",
+            "avatar-imageUrl": "Resim Bağlantısı",
             "change-variant": "Varyantı Değiştir",
             "change-variant": "Varyantı Değiştir",
+            "numericInput-title": "Sayısal Giriş",
+            "open-dialog": "İletişim Kutusunu Aç",
+            "rowCard-exampleTitle": "Kart Başlık",
+            "rowCard-subTitleLabel": "Alt Başlık",
+            "seperator-enterTitle": "Metin Girin",
+            "siteLogo-enterTitle": "Başlık Girin",
+            "stateCard-enterValue": "Değer Girin",
+            "webScrollbar-title": "Web Scrollbar",
             "change-spread": "Yayılımı Değiştir",
             "change-spread": "Yayılımı Değiştir",
+            "chip-changeSize": "Boyutu Değiştir",
+            "open-bottom-sheet": "Alt Paneli Aç",
+            "rowCard-enterTitle": "Başlık Girin",
+            "stateCard-exampleValue": "$ 12,000",
+            "sticker-enterTitle": "Başlık Girin",
+            "switch-subTitleLabel": "Alt Başlık",
+            "textAreaInput-title": "Metin Alanı",
+            "textAreaInput-titleLabel": "Başlık",
+            "avatarGroup-title": "Avatar Grubu",
+            "checkBox-enterText": "Metin Girin",
+            "enter-sub-text": "Alt Metin Girin",
+            "numericInput-titleLabel": "Başlık",
+            "radioButton-title": "Radyo Butonu",
+            "sticker-title": "Etiket (Sticker)",
+            "switch-enterTitle": "Başlık Girin",
+            "themeExamples-primary": "Birincil",
+            "themeExamples-success": "Başarılı",
+            "toggle-portal": "Portalı Aç/Kapat",
+            "change-status": "Durumu Değiştir",
+            "chip-changeType": "Türü Değiştir",
+            "coreFeatures": "Temel Özellikler",
+            "implementation-title": "Uygulama",
+            "radioButton-titleLabel": "Başlık",
+            "selectBox-placeholder": "Seçiniz",
+            "switch-title": "Anahtar (Switch)",
+            "avatar-enterText": "Metin Girin",
+            "dialog-enterText": "Metin Girin",
+            "dialog-title": "İletişim Kutusu",
+            "installation-title": "Başlarken",
+            "localeExamples": "Dil Örnekleri",
+            "selectBox-title": "Seçim Kutusu",
+            "siteLogo-exampleTitle": "NİBGAT",
+            "textInput-title": "Metin Girişi",
+            "themeExamples": "Tema Örnekleri",
+            "themeExamples-danger": "Tehlike",
+            "toolsUsage": "Araç Kullanımları",
+            "typesOverride": "Tip Değiştirme",
+            "bottomSheet-title": "Alt Panel",
             "change-size": "Boyutu Değiştir",
             "change-size": "Boyutu Değiştir",
-            "example-button": "Örnek Buton",
+            "menu-openMenu": "Menu OpenMenu",
+            "menu-settings": "Menu Settings",
+            "selectBox-titleLabel": "Başlık",
+            "stateCard-titleLabel": "Başlık",
+            "textInput-titleLabel": "Başlık",
+            "themeExamples-warning": "Uyarı",
             "button-title": "Buton Başlığı",
             "button-title": "Buton Başlığı",
+            "checkBox-title": "Onay Kutusu",
+            "checkBox-titleLabel": "Başlık",
+            "chip-enterText": "Metin Girin",
+            "dialog-contentLabel": "İçerik",
+            "example-button": "Örnek Buton",
+            "image-url": "Resim Bağlantısı",
+            "seperator-titleLabel": "Metin",
+            "siteLogo-titleLabel": "Başlık",
+            "stateCard-valueLabel": "Değer",
             "toggle-icon": "İkonu Aç/Kapat",
             "toggle-icon": "İkonu Aç/Kapat",
+            "avatar-group": "Avatar Grubu",
             "change-type": "Türü Değiştir",
             "change-type": "Türü Değiştir",
+            "getting-started": "Başlarken",
+            "header-title": "Header Title",
+            "hello-world": "Merhaba Dünya",
+            "rowCard-titleLabel": "Başlık",
+            "sticker-exampleTitle": "Yeni",
+            "sticker-titleLabel": "Başlık",
+            "avatar-titleLabel": "Başlık",
+            "dialog-titleLabel": "Başlık",
+            "gettingStarted": "Başlarken",
+            "switch-titleLabel": "Başlık",
+            "themeExamples-info": "Bilgi",
+            "bottomSheet-close": "Kapat",
+            "implementation": "Uygulama",
+            "bottom-sheet": "Alt Panel",
+            "chip-titleLabel": "Başlık",
+            "dialog": "İletişim Kutusu",
             "enter-text": "Metin Girin",
             "enter-text": "Metin Girin",
+            "check-box": "Onay Kutusu",
+            "menu-title": "Menu Title",
+            "installation": "Kurulum",
+            "sub-title": "Alt Başlık",
+            "avatar-title": "Avatar",
+            "menu-home": "Menu Home",
             "text": "Text ( Metin )",
             "text": "Text ( Metin )",
+            "chip-title": "Çip",
+            "content": "İçerik",
             "home": "Ana Sayfa",
             "home": "Ana Sayfa",
-            "version": "Sürüm",
+            "avatar": "Avatar",
             "button": "Button",
             "button": "Button",
+            "version": "Sürüm",
+            "next": "Sonraki",
+            "title": "Başlık",
+            "close": "Kapat",
             "right": "Sağ",
             "right": "Sağ",
+            "chip": "Çip",
             "left": "Sol"
             "left": "Sol"
-        }
+        },
+        "locale": "tr-TR",
+        "isRTL": false
     },
     },
     {
     {
-        "locale": "en-US",
-        "isRTL": false,
         "translations": {
         "translations": {
             "ncore-about": "NCore is a design system and component library developed for everyone, primarily NİBGAT® and NİBGAT® | Community. It is designed to build elegant systems with rapid development processes and high stability.",
             "ncore-about": "NCore is a design system and component library developed for everyone, primarily NİBGAT® and NİBGAT® | Community. It is designed to build elegant systems with rapid development processes and high stability.",
+            "installation-peerDepsDesc": "The following packages must be installed in your project. You can install them using the appropriate command (yarn/npm) for your development environment.",
+            "toolsUsage-ncoreThemeDesc": "Provides access to theme values dynamically without needing prop drilling. You can consume colors, spaces, radiuses globally.",
+            "typesOverride-globalDtsDesc": "When using NCore UI Kit in TypeScript projects, you must use global.d.ts to introduce your custom keys to TypeScript.",
+            "pageContainer-desc": "A foundational component that wraps page content to comply with theme spacing, safe areas, and scrolling structures.",
+            "installation-desc": "Information on how to install NCore UI Kit, basic usage, and how to integrate it into your development environment.",
+            "toolsUsage-ncoreToastDesc": "Gives the ability to throw interactive toast messages globally to inform the user about an action result.",
+            "stateCard-desc": "An informative card component that shows application moments to the user, such as empty states, errors, or success.",
+            "typesOverride-desc": "Example of how to override NCore UI Kit types (theme, locale, etc.) with global.d.ts in your own projects.",
+            "implementation-desc": "Example of how to implement NCore UI Kit from the outermost layer after installing it in your projects.",
+            "notificationIndicator-desc": "A small indicator component that visually shows the number of unread notifications or messages.",
+            "webScrollbar-desc": "A component that replaces the default browser scrollbar with a custom-themed scrollbar on web platforms.",
+            "dateTimePicker-desc": "A comprehensive picker component that allows selecting or setting both date and time simultaneously.",
+            "loading-desc": "A component that indicates the status of an ongoing asynchronous process or data loading in the background.",
+            "snackBar-desc": "An alert component that temporarily appears at the bottom of the screen to provide short status messages.",
+            "mainHeader-desc": "A large and comprehensive top header component used for main menus and general application navigation.",
+            "bottomSheet-desc": "A scrollable panel component that opens from the bottom of the screen to present additional content.",
+            "selectSheet-desc": "A sheet component that opens from the bottom of the screen to allow practical selection from a list.",
+            "toolsUsage-ncoreLocalizeDesc": "Allows translation dictionary lookups and managing active language inside any component.",
+            "dialog-desc": "A pop-up window component used to draw the user's attention, get confirmation, or provide information.",
+            "markdownViewer-desc": "A content component that parses and displays rich text in Markdown format as formatted output.",
+            "paletteSwitcher-desc": "A component that allows the user to customize the application's color palette and appearance.",
+            "toast-desc": "A component that shows system messages appearing and disappearing momentarily at the top of the screen.",
+            "localeSwitcher-desc": "A control component that allows instant switching between the application's language options.",
+            "dateTimeSheet-desc": "A sheet component that opens from the bottom of the screen to allow date and time selection.",
+            "radioButton-desc": "A button component used to select exactly one option from a set of mutually exclusive choices.",
+            "typesOverride-tsconfigDesc": "Don't forget to add your global.d.ts to typeRoots or include in your tsconfig.json.",
+            "numericInput-desc": "A specialized input component that only allows numerical data or quantities to be entered.",
+            "modal-desc": "A modal window component that overlays the current page and focuses the user on a specific task.",
+            "text-desc": "The core typography component that handles all text in the application according to theme rules.",
+            "yearSelector-desc": "A specialized time interface component focused solely on selecting the year from a list.",
+            "themeSwitcher-desc": "A component that allows switching between light and dark themes, or the system theme.",
+            "themeExamples-desc": "Usage of different themes, palettes, and typography, and switching them dynamically.",
+            "header-desc": "A top-area component located at the top of pages, containing title and navigation actions.",
+            "seperator-desc": "A spacing component that creates a visual dividing line between components or content.",
+            "rowCard-desc": "An information card component that presents data or visuals in a horizontal row layout.",
+            "textAreaInput-desc": "A large input area component that allows users to enter long and multi-line text.",
+            "checkBox-desc": "A checkbox component that allows making independent selections from multiple options.",
+            "embeddedMenu-desc": "A component that works inline within the page and provides contextual menu items.",
+            "selectBox-desc": "A selector component that enables single or multiple selection from a dropdown list.",
+            "textInput-desc": "A standard form input component that requests the user to enter short text or data.",
+            "siteLogo-desc": "A component that renders the main logo image representing the brand or application.",
+            "timeSelector-desc": "An interface component optimized for selecting a specific time (hour, minute).",
+            "menu-desc": "A general-purpose menu component that presents various options and links to the user.",
+            "chip-desc": "A compact component used to display small pieces of information, tags, or statuses.",
+            "localeExamples-desc": "Switching between locales and dynamic text usage with localize function.",
+            "highlightButton-desc": "An eye-catching button component used to highlight important actions.",
+            "toolsUsage-codeViewerDesc": "To render code beautifully in your app and copy it to clipboard.",
+            "monthSelector-desc": "A component used to select a specific month or months within a year.",
+            "dateSelector-desc": "An interface component that allows users to select a specific date.",
+            "sticker-desc": "A dynamic sticker component used for adding playful visuals or icons.",
+            "switch-desc": "A toggle switch component used to change binary (on/off) preferences.",
+            "avatarGroup-desc": "A component that groups and displays multiple avatars together.",
+            "toolsUsage-desc": "Usage of NCore UI Kit hooks useTheme, useLocale, and useToast.",
+            "button-desc": "A basic clickable component used to trigger user interactions.",
+            "avatar-desc": "A profile image component representing users or entities.",
+            "typesOverride-tsconfigIntegration": "tsconfig.json Integration",
+            "highlightButton-toggleCustomPadding": "Toggle Custom Padding",
+            "notificationIndicator-toggleShowCount": "Toggle Show Count",
+            "your-project-main-directory": "YOUR_PROJECT_MAIN_DIRECTORY",
+            "mainHeader-toggleSeperator": "MainHeader ToggleSeperator",
+            "themeExamples-typographyExamples": "Typography Examples",
+            "highlightButton-toggleIconDir": "Toggle Icon Direction",
+            "dateTimePicker-changePickerType": "Change Picker Type",
+            "markdownViewer-enterContent": "Enter Markdown Content",
+            "notificationIndicator-title": "Notification Indicator",
+            "localeExamples-currentLanguage": "Current Language: ",
+            "localeExamples-languageSwitcher": "Language Switcher",
+            "typesOverride-title": "Types Override (global.d.ts)",
+            "bottomSheet-toggleShowHandle": "Toggle Show Handle",
+            "bottomSheet-toggleSwipeClose": "Toggle Swipe Close",
+            "mainHeader-toggleGoBack": "MainHeader ToggleGoBack",
+            "mainHeader-toggleSticky": "MainHeader ToggleSticky",
+            "selectBox-toggleMultiSelect": "Toggle Multi-Select",
+            "highlightButton-toggleDisabled": "Toggle Disabled",
+            "checkBox-changeIsChecked": "Change Checked State",
+            "dateTimePicker-toggleDisabled": "Toggle Disabled",
+            "localeExamples-localizedTexts": "Localized Texts",
+            "highlightButton-toggleLoading": "Toggle Loading",
+            "installation-peerDepsTitle": "Peer Dependencies",
+            "notificationIndicator-changeType": "Change Type",
+            "selectBox-toggleSearchable": "Toggle Searchable",
+            "textAreaInput-toggleDisabled": "Toggle Disabled",
+            "textAreaInput-toggleOptional": "Toggle Optional",
+            "textAreaInput-toggleRequired": "Toggle Required",
             "this-is-test-sub-page": "This is test sub-page.",
             "this-is-test-sub-page": "This is test sub-page.",
-            "toggle-icon-direction": "Toggle Icon Direction",
+            "components-paletteSwitcher": "Palette Switcher",
+            "dateTimePicker-changeVariant": "Change Variant",
+            "embeddedMenu-openMenu": "EmbeddedMenu OpenMenu",
+            "embeddedMenu-settings": "EmbeddedMenu Settings",
+            "installation-installationTitle": "Installation",
+            "numericInput-toggleDisabled": "Toggle Disabled",
+            "numericInput-toggleOptional": "Toggle Optional",
+            "numericInput-toggleRequired": "Toggle Required",
+            "textAreaInput-placeholder": "Type something...",
             "toggle-custom-padding": "Toggle Custom Padding",
             "toggle-custom-padding": "Toggle Custom Padding",
+            "toggle-icon-direction": "Toggle Icon Direction",
+            "avatarGroup-toggleDisabled": "Toggle Disabled",
+            "dialog-enterContentText": "Enter Content Text",
+            "highlightButton-changeSpread": "Change Spread",
+            "radioButton-toggleDisabled": "Toggle Disabled",
+            "radioButton-toggleSelected": "Toggle Selected",
+            "seperator-changeThickness": "Change Thickness",
+            "switch-changeIconDir": "Change Icon Direction",
+            "textAreaInput-exampleTitle": "Text Area Title",
+            "themeExamples-colorExamples": "Color Examples",
+            "themeExamples-headlineLarge": "Headline Large",
+            "toolsUsage-languageTs": "Language: TypeScript",
+            "bottom-sheet-content": "Bottom Sheet Content",
+            "components-localeSwitcher": "Locale Switcher",
+            "dateTimePicker-changeSpread": "Change Spread",
             "ncore-design-system": "NCore | Design System",
             "ncore-design-system": "NCore | Design System",
-            "ui-kit-library": "UI Kit - Library",
+            "numericInput-changeVariant": "Change Variant",
+            "rowCard-toggleRightIcon": "Toggle Right Icon",
+            "webScrollbar-item": "Scrollable Content Item",
+            "avatarGroup-toggleLoading": "Toggle Loading",
+            "bottomSheet-content": "Bottom Sheet Content",
+            "components-dateTimeSheet": "Date Time Sheet",
+            "notificationIndicator-addCount": "Add Count",
+            "radioButton-enterSubTitle": "Enter Subtitle",
+            "radioButton-toggleLoading": "Toggle Loading",
+            "selectBox-changePosition": "Change Position",
+            "selectBox-toggleDisabled": "Toggle Disabled",
+            "selectBox-toggleOptional": "Toggle Optional",
+            "textAreaInput-changeSpread": "Change Spread",
+            "textInput-toggleDisabled": "Toggle Disabled",
+            "textInput-toggleOptional": "Toggle Optional",
+            "textInput-toggleRequired": "Toggle Required",
+            "themeExamples-displayLarge": "Display Large",
+            "bottomSheet-openSheet": "Open Bottom Sheet",
+            "checkBox-toggleDisabled": "Toggle Disabled",
+            "components-monthSelector": "Month Selector",
+            "components-pageContainer": "Page Container",
+            "components-themeSwitcher": "Theme Switcher",
+            "header-toggleGoBack": "Header ToggleGoBack",
+            "numericInput-changeSpread": "Change Spread",
+            "numericInput-exampleTitle": "Numeric Value",
+            "numericInput-placeholder": "Enter a number",
+            "rowCard-toggleLeftIcon": "Toggle Left Icon",
+            "textInput-exampleTitle": "Text Input Title",
+            "textInput-placeholder": "Type something...",
+            "bottomSheet-togglePortal": "Toggle Portal",
+            "change-is-checked": "Change Checked State",
+            "highlightButton-changeSize": "Change Size",
+            "highlightButton-changeType": "Change Type",
+            "highlightButton-example": "Example Button",
+            "highlightButton-title": "Highlight Button",
+            "highlightButton-toggleIcon": "Toggle Icon",
+            "radioButton-changeSpread": "Change Spread",
+            "rowCard-toggleDisabled": "Toggle Disabled",
+            "selectBox-enterSubTitle": "Enter Subtitle",
+            "siteLogo-exampleSubTitle": "Design System",
+            "stateCard-enterSubTitle": "Enter Subtitle",
+            "textAreaInput-toggleClean": "Toggle Clean",
+            "textInput-changeVariant": "Change Variant",
+            "typesOverride-globalTypes": "Global Types",
+            "avatar-toggleDisabled": "Toggle Disabled",
+            "change-picker-type": "Change Picker Type",
+            "checkBox-toggleLoading": "Toggle Loading",
+            "components-dateSelector": "Date Selector",
+            "components-timeSelector": "Time Selector",
+            "components-yearSelector": "Year Selector",
+            "dateTimePicker-changeType": "Change Type",
+            "dateTimePicker-title": "Date Time Picker",
+            "embeddedMenu-title": "EmbeddedMenu Title",
+            "enter-content-text": "Enter Content Text",
+            "numericInput-toggleClean": "Toggle Clean",
+            "rowCard-exampleSubTitle": "Card Subtitle",
+            "siteLogo-enterSubTitle": "Enter Subtitle",
+            "switch-toggleDisabled": "Toggle Disabled",
+            "toggle-show-handle": "Toggle Show Handle",
+            "toggle-swipe-close": "Toggle Swipe Close",
+            "avatar-enterImageUrl": "Enter Image URL",
+            "checkBox-enterSubText": "Enter Sub Text",
+            "highlightButton-enterText": "Enter Text",
+            "localeExamples-title": "Locale Examples",
+            "markdownViewer-title": "Markdown Viewer",
+            "radioButton-exampleTitle": "Radio Title",
+            "rowCard-enterSubTitle": "Enter Subtitle",
+            "rowCard-toggleLoading": "Toggle Loading",
+            "selectBox-changeSpread": "Change Spread",
+            "stateCard-exampleTitle": "Monthly Sales",
+            "textAreaInput-changeType": "Change Type",
+            "textAreaInput-enterTitle": "Enter Title",
+            "textInput-changeSpread": "Change Spread",
+            "themeExamples-labelLarge": "Label Large",
+            "themeExamples-titleLarge": "Title Large",
+            "avatar-toggleLoading": "Toggle Loading",
+            "checkBox-changeSpread": "Change Spread",
+            "chip-toggleClosable": "Toggle Closable",
+            "chip-toggleDisabled": "Toggle Disabled",
+            "components-selectSheet": "Select Sheet",
+            "dialog-changeVariant": "Change Variant",
+            "embeddedMenu-home": "EmbeddedMenu Home",
+            "header-enterTitle": "Header EnterTitle",
+            "header-titleLabel": "Header TitleLabel",
+            "implementation-title": "Implementation",
+            "markdownViewer-contentLabel": "Content",
+            "numericInput-changeType": "Change Type",
+            "numericInput-enterTitle": "Enter Title",
+            "numericInput-toggleIcon": "Toggle Icon",
+            "open-bottom-sheet": "Open Bottom Sheet",
+            "selectBox-exampleTitle": "Select Title",
+            "switch-enterSubTitle": "Enter Subtitle",
+            "switch-toggleLoading": "Toggle Loading",
+            "avatarGroup-changeSize": "Change Size",
+            "installation-title": "Getting Started",
+            "radioButton-changeType": "Change Type",
+            "radioButton-enterTitle": "Enter Title",
+            "radioButton-subTitleLabel": "Subtitle",
+            "radioButton-toggleFlip": "Toggle Flip",
+            "selectBox-toggleClean": "Toggle Clean",
+            "textInput-toggleClean": "Toggle Clean",
+            "themeExamples-bodyLarge": "Body Large",
+            "themeExamples-title": "Theme Examples",
+            "avatar-changeStatus": "Change Status",
+            "chip-toggleLoading": "Toggle Loading",
+            "date-time-picker": "Date Time Picker",
+            "mainHeader-title": "MainHeader Title",
+            "switch-changeSpread": "Change Spread",
+            "switch-toggleActive": "Toggle Active",
+            "themeExamples-switchers": "Switchers",
+            "toolsUsage-codeViewer": "Code Viewer",
+            "checkBox-subTitleLabel": "Sub Title",
+            "highlightButton-titleLabel": "Title",
+            "numericInput-title": "Numeric Input",
+            "selectBox-changeType": "Change Type",
+            "selectBox-enterTitle": "Enter Title",
+            "selectBox-subTitleLabel": "Subtitle",
+            "stateCard-enterTitle": "Enter Title",
+            "stateCard-enterValue": "Enter Value",
+            "stateCard-subTitleLabel": "Subtitle",
+            "switch-exampleTitle": "Switch Title",
+            "textInput-changeType": "Change Type",
+            "textInput-enterTitle": "Enter Title",
+            "textInput-toggleIcon": "Toggle Icon",
+            "webScrollbar-title": "Web Scrollbar",
+            "checkBox-changeType": "Change Type",
+            "checkBox-toggleFlip": "Toggle Flip",
+            "chip-changeSpread": "Change Spread",
+            "enter-image-url": "Enter Image URL",
+            "getting-started": "Getting Started",
+            "rowCard-exampleTitle": "Card Title",
+            "selectBox-placeholder": "Select...",
+            "seperator-enterTitle": "Enter Text",
+            "siteLogo-enterTitle": "Enter Title",
+            "siteLogo-subTitleLabel": "Subtitle",
+            "siteLogo-toggleIcon": "Toggle Icon",
+            "stateCard-exampleSubTitle": "April",
+            "stateCard-exampleValue": "$ 12,000",
+            "toggle-closable": "Toggle Closable",
             "toggle-disabled": "Toggle Disabled",
             "toggle-disabled": "Toggle Disabled",
-            "toggle-loading": "Toggle Loading",
-            "example-button": "Example Button",
+            "ui-kit-library": "UI Kit - Library",
+            "avatarGroup-title": "Avatar Group",
+            "bottomSheet-title": "Bottom Sheet",
+            "gettingStarted": "Getting Started",
+            "loading-changeSize": "Change Size",
+            "localeExamples": "Locale Examples",
+            "radioButton-title": "Radio Button",
+            "rowCard-enterTitle": "Enter Title",
+            "rowCard-subTitleLabel": "Subtitle",
+            "sticker-enterTitle": "Enter Title",
+            "textAreaInput-titleLabel": "Title",
             "change-variant": "Change Variant",
             "change-variant": "Change Variant",
+            "checkBox-enterText": "Enter Text",
+            "dialog-openDialog": "Open Dialog",
+            "enter-sub-text": "Enter Sub Text",
+            "example-button": "Example Button",
+            "implementation": "Implementation",
+            "numericInput-titleLabel": "Title",
+            "switch-enterTitle": "Enter Title",
+            "switch-subTitleLabel": "Subtitle",
+            "textAreaInput-title": "Text Area",
+            "themeExamples-primary": "Primary",
+            "themeExamples-success": "Success",
+            "themeExamples-warning": "Warning",
+            "toggle-loading": "Toggle Loading",
+            "components-snackBar": "SnackBar",
+            "radioButton-titleLabel": "Title",
+            "siteLogo-exampleTitle": "NİBGAT",
+            "themeExamples": "Theme Examples",
+            "toolsUsage-title": "Tools Usage",
+            "typesOverride": "Types Override",
+            "avatar-enterText": "Enter Text",
             "change-spread": "Change Spread",
             "change-spread": "Change Spread",
+            "change-status": "Change Status",
+            "chip-changeSize": "Change Size",
+            "chip-changeType": "Change Type",
+            "dialog-contentLabel": "Content",
+            "dialog-enterText": "Enter Text",
+            "menu-openMenu": "Menu OpenMenu",
+            "menu-settings": "Menu Settings",
+            "themeExamples-danger": "Danger",
+            "toggle-portal": "Toggle Portal",
+            "coreFeatures": "Core Features",
+            "selectBox-title": "Select Box",
+            "selectBox-titleLabel": "Title",
+            "stateCard-title": "State Card",
+            "stateCard-titleLabel": "Title",
+            "stateCard-valueLabel": "Value",
+            "textInput-title": "Text Input",
+            "textInput-titleLabel": "Title",
+            "avatar-group": "Avatar Group",
+            "avatar-imageUrl": "Image URL",
+            "bottom-sheet": "Bottom Sheet",
             "button-title": "Button Title",
             "button-title": "Button Title",
-            "change-type": "Change Type",
+            "checkBox-titleLabel": "Title",
+            "chip-enterText": "Enter Text",
+            "header-title": "Header Title",
+            "installation": "Installation",
+            "seperator-title": "Seperator",
+            "seperator-titleLabel": "Text",
+            "siteLogo-titleLabel": "Title",
+            "checkBox-title": "Check Box",
+            "rowCard-titleLabel": "Title",
+            "siteLogo-title": "Site Logo",
+            "sticker-exampleTitle": "New",
+            "sticker-titleLabel": "Title",
+            "avatar-titleLabel": "Title",
+            "bottomSheet-close": "Close",
             "change-size": "Change Size",
             "change-size": "Change Size",
+            "change-type": "Change Type",
+            "dialog-titleLabel": "Title",
+            "hello-world": "Hello World",
+            "open-dialog": "Open Dialog",
+            "switch-titleLabel": "Title",
+            "themeExamples-info": "Info",
+            "toggle-flip": "Toggle Flip",
             "toggle-icon": "Toggle Icon",
             "toggle-icon": "Toggle Icon",
+            "components-modal": "Modal",
+            "components-toast": "Toast",
+            "rowCard-title": "Row Card",
+            "toolsUsage": "Tools Usage",
+            "chip-titleLabel": "Title",
             "enter-text": "Enter Text",
             "enter-text": "Enter Text",
+            "loading-title": "Loading",
+            "menu-title": "Menu Title",
+            "sticker-title": "Sticker",
+            "avatar-title": "Avatar",
+            "check-box": "Check Box",
+            "dialog-title": "Dialog",
+            "image-url": "Image URL",
+            "menu-home": "Menu Home",
+            "sub-title": "Sub Title",
+            "switch-title": "Switch",
+            "chip-title": "Chip",
+            "content": "Content",
             "version": "Version",
             "version": "Version",
             "home": "Home Page",
             "home": "Home Page",
+            "avatar": "Avatar",
             "button": "Button",
             "button": "Button",
+            "dialog": "Dialog",
+            "close": "Close",
             "right": "Right",
             "right": "Right",
-            "text": "Text",
-            "left": "Left"
-        }
+            "title": "Title",
+            "chip": "Chip",
+            "left": "Left",
+            "next": "Next",
+            "text": "Text"
+        },
+        "locale": "en-US",
+        "isRTL": false
     }
     }
-]
+]

+ 43 - 0
example/src/variants/themes/default.json

@@ -3,6 +3,10 @@
     "shapes": {
     "shapes": {
         "radiuses": {
         "radiuses": {
             "soft": {
             "soft": {
+                "scrollBarThumbActive": 14,
+                "scrollBarThumbHover": 14,
+                "scrollBarTrack": 14,
+                "scrollBarThumb": 14,
                 "form": 8,
                 "form": 8,
                 "surface": 12,
                 "surface": 12,
                 "actions": 8,
                 "actions": 8,
@@ -16,6 +20,10 @@
                 "xl": 28
                 "xl": 28
             },
             },
             "sharp": {
             "sharp": {
+                "scrollBarThumbActive": 10,
+                "scrollBarThumbHover": 8,
+                "scrollBarTrack": 10,
+                "scrollBarThumb": 8,
                 "form": 4,
                 "form": 4,
                 "surface": 8,
                 "surface": 8,
                 "actions": 4,
                 "actions": 4,
@@ -29,6 +37,10 @@
                 "xl": 16
                 "xl": 16
             },
             },
             "rounded": {
             "rounded": {
+                "scrollBarThumbActive": 24,
+                "scrollBarThumbHover": 20,
+                "scrollBarTrack": 18,
+                "scrollBarThumb": 20,
                 "form": 12,
                 "form": 12,
                 "surface": 28,
                 "surface": 28,
                 "actions": 9999,
                 "actions": 9999,
@@ -47,6 +59,11 @@
             "required": 4
             "required": 4
         },
         },
         "borders": {
         "borders": {
+            "scrollBarThumbActive": 2,
+            "scrollBarThumbHover": 3,
+            "scrollBarTrack": 6,
+            "scrollBarThumb": 4,
+            "seperator": 1,
             "subtract": 3,
             "subtract": 3,
             "line": 2
             "line": 2
         },
         },
@@ -65,6 +82,10 @@
                 "spacingLg": 16,
                 "spacingLg": 16,
                 "spacingXl": 24
                 "spacingXl": 24
             }
             }
+        },
+        "shapeConfigs": {
+            "scrollBarHeight": 14,
+            "scrollBarWidth": 14
         }
         }
     },
     },
     "typography": {
     "typography": {
@@ -479,6 +500,17 @@
                         "turkish": "#FF5555",
                         "turkish": "#FF5555",
                         "moon": "#0F5792",
                         "moon": "#0F5792",
                         "sun": "#C09E13"
                         "sun": "#C09E13"
+                    },
+                    "code": {
+                        "punctuation": "#ABB2BF",
+                        "operator": "#56B6C2",
+                        "default": "#D4D4D4",
+                        "keyword": "#C678DD",
+                        "comment": "#5C6370",
+                        "htmlTag": "#E06C75",
+                        "string": "#98C379",
+                        "number": "#D19A66",
+                        "text": "#D4D4D4"
                     }
                     }
                 },
                 },
                 "light": {
                 "light": {
@@ -673,6 +705,17 @@
                         "turkish": "#FF3333",
                         "turkish": "#FF3333",
                         "moon": "#54A7EB",
                         "moon": "#54A7EB",
                         "sun": "#FFCF11"
                         "sun": "#FFCF11"
+                    },
+                    "code": {
+                        "punctuation": "#383A42",
+                        "operator": "#0184BC",
+                        "default": "#383A42",
+                        "keyword": "#A626A4",
+                        "comment": "#A0A1A7",
+                        "htmlTag": "#E45649",
+                        "string": "#50A14F",
+                        "number": "#986801",
+                        "text": "#383A42"
                     }
                     }
                 }
                 }
             }
             }

+ 41 - 0
example/web/global.d.ts

@@ -0,0 +1,41 @@
+import "../../src/types/index";
+import defaultLocaleJSON from "../src/variants/locales/default.json";
+import defaultThemeJSON from "../src/variants/themes/default.json";
+
+declare global {
+    namespace NCoreUIKit {
+        type PaletteNames = "gmcore";
+
+        interface PaletteKey extends Record<PaletteType, unknown>, Record<PaletteNames, unknown> {
+        }
+
+        type ProjectLocalizationL = typeof defaultLocaleJSON[0];
+
+        type GeneratedProjectTranslations = {
+            [K in keyof ProjectLocalizationL["translations"]]: ProjectLocalizationL["translations"][K];
+        };
+
+        interface Translation extends GeneratedTranslations, GeneratedProjectTranslations {
+        }
+
+        type DefaultPaletteL = typeof defaultThemeJSON.palettes[0];
+
+        type ProjectDataL = DefaultPaletteL["themes"]["dark"]["project"];
+        type DefaultProjectColorsL = ProjectDataL;
+
+        interface ProjectColorPalette extends DefaultProjectColors, DefaultProjectColorsL {
+        }
+
+        type SystemDataL = DefaultPaletteL["themes"]["dark"]["system"];
+        type DefaultSystemColorsL = SystemDataL;
+
+        interface SystemColorPalette extends DefaultSystemColors, DefaultSystemColorsL {
+        }
+
+        type ContentDataL = DefaultPaletteL["themes"]["dark"]["content"];
+        type DefaultContentColorsL = ContentDataL;
+
+        interface ContentColorPalette extends DefaultContentColors, DefaultContentColorsL {
+        }
+    }
+}

+ 3 - 2
example/web/tsconfig.json

@@ -6,11 +6,12 @@
         ]
         ]
     },
     },
     "include": [
     "include": [
+        "../../src/assets/svg/nibgatIcon",
+        "../../src/**/*",
         "../src/**/*",
         "../src/**/*",
         "**/*.json",
         "**/*.json",
         "**/*.tsx",
         "**/*.tsx",
-        "**/*.ts",
-        "../../src/assets/svg/nibgatIcon"
+        "**/*.ts"
     ],
     ],
     "exclude": [
     "exclude": [
         "**/node_modules",
         "**/node_modules",

+ 2 - 1
package.json

@@ -101,7 +101,6 @@
         "@types/node": "25.9.3",
         "@types/node": "25.9.3",
         "@types/react": "19.2.0",
         "@types/react": "19.2.0",
         "@types/react-dom": "19.2.3",
         "@types/react-dom": "19.2.3",
-        "@types/react-native": "0.73.0",
         "@types/react-test-renderer": "19.1.0",
         "@types/react-test-renderer": "19.1.0",
         "babel-loader": "10.1.1",
         "babel-loader": "10.1.1",
         "babel-plugin-module-resolver": "5.0.3",
         "babel-plugin-module-resolver": "5.0.3",
@@ -146,6 +145,7 @@
         "webpack-dev-server": "5.2.4"
         "webpack-dev-server": "5.2.4"
     },
     },
     "peerDependencies": {
     "peerDependencies": {
+        "@react-native-clipboard/clipboard": ">= 1.16.3",
         "lucide-react-native": ">= 1.16.0",
         "lucide-react-native": ">= 1.16.0",
         "moment": "*",
         "moment": "*",
         "ncore-context": ">= 1.0.7",
         "ncore-context": ">= 1.0.7",
@@ -207,6 +207,7 @@
         "version": "0.57.2"
         "version": "0.57.2"
     },
     },
     "dependencies": {
     "dependencies": {
+        "@react-native-clipboard/clipboard": "1.16.3",
         "lucide-react-native": "1.16.0",
         "lucide-react-native": "1.16.0",
         "moment": "https://git.nibgat.space/nibgat-community/moment.git",
         "moment": "https://git.nibgat.space/nibgat-community/moment.git",
         "ncore-context": "1.0.8",
         "ncore-context": "1.0.8",

Some files were not shown because too many files changed in this diff