@newtonschool/grauity 3.0.0-beta.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/css/grauity-icons.scss +486 -406
  2. package/dist/fonts/grauity-icons.eot +0 -0
  3. package/dist/fonts/grauity-icons.ttf +0 -0
  4. package/dist/fonts/grauity-icons.woff +0 -0
  5. package/dist/fonts/grauity-icons.woff2 +0 -0
  6. package/dist/index.d.ts +665 -4
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/main.cjs +1 -1
  9. package/dist/main.cjs.map +1 -1
  10. package/dist/module.mjs +1 -1
  11. package/dist/module.mjs.map +1 -1
  12. package/dist/ui/core/icons/iconTags.d.ts +21 -0
  13. package/dist/ui/core/icons/iconTags.d.ts.map +1 -1
  14. package/dist/ui/core/icons/iconTypes.d.ts +22 -2
  15. package/dist/ui/core/icons/iconTypes.d.ts.map +1 -1
  16. package/dist/ui/elements/BottomSheet/BottomSheet.d.ts.map +1 -1
  17. package/dist/ui/elements/BottomSheet/BottomSheet.styles.d.ts.map +1 -1
  18. package/dist/ui/elements/BottomSheet/types.d.ts +10 -0
  19. package/dist/ui/elements/BottomSheet/types.d.ts.map +1 -1
  20. package/dist/ui/elements/Button/Button.styles.d.ts.map +1 -1
  21. package/dist/ui/elements/Button/constants.d.ts +1 -8
  22. package/dist/ui/elements/Button/constants.d.ts.map +1 -1
  23. package/dist/ui/elements/Button/types.d.ts +1 -1
  24. package/dist/ui/elements/Button/utils.d.ts +6 -0
  25. package/dist/ui/elements/Button/utils.d.ts.map +1 -0
  26. package/dist/ui/elements/DropdownMenu/DropdownMenu.d.ts +5 -0
  27. package/dist/ui/elements/DropdownMenu/DropdownMenu.d.ts.map +1 -0
  28. package/dist/ui/elements/DropdownMenu/DropdownMenu.styles.d.ts +16 -0
  29. package/dist/ui/elements/DropdownMenu/DropdownMenu.styles.d.ts.map +1 -0
  30. package/dist/ui/elements/DropdownMenu/components/DropdownMenuFooter.d.ts +12 -0
  31. package/dist/ui/elements/DropdownMenu/components/DropdownMenuFooter.d.ts.map +1 -0
  32. package/dist/ui/elements/DropdownMenu/components/DropdownMenuHeader.d.ts +11 -0
  33. package/dist/ui/elements/DropdownMenu/components/DropdownMenuHeader.d.ts.map +1 -0
  34. package/dist/ui/elements/DropdownMenu/components/DropdownMenuOption.d.ts +9 -0
  35. package/dist/ui/elements/DropdownMenu/components/DropdownMenuOption.d.ts.map +1 -0
  36. package/dist/ui/elements/DropdownMenu/components/DropdownMenuSubHeader.d.ts +4 -0
  37. package/dist/ui/elements/DropdownMenu/components/DropdownMenuSubHeader.d.ts.map +1 -0
  38. package/dist/ui/elements/DropdownMenu/components/DropdownSearchBox.d.ts +10 -0
  39. package/dist/ui/elements/DropdownMenu/components/DropdownSearchBox.d.ts.map +1 -0
  40. package/dist/ui/elements/DropdownMenu/constants.d.ts +25 -0
  41. package/dist/ui/elements/DropdownMenu/constants.d.ts.map +1 -0
  42. package/dist/ui/elements/DropdownMenu/index.d.ts +3 -0
  43. package/dist/ui/elements/DropdownMenu/index.d.ts.map +1 -0
  44. package/dist/ui/elements/DropdownMenu/types.d.ts +173 -0
  45. package/dist/ui/elements/DropdownMenu/types.d.ts.map +1 -0
  46. package/dist/ui/elements/DropdownMenu/utils.d.ts +22 -0
  47. package/dist/ui/elements/DropdownMenu/utils.d.ts.map +1 -0
  48. package/dist/ui/elements/Form/Checkbox/Checkbox.styles.d.ts.map +1 -1
  49. package/dist/ui/elements/Form/Checkbox/types.d.ts +6 -2
  50. package/dist/ui/elements/Form/Checkbox/types.d.ts.map +1 -1
  51. package/dist/ui/elements/Form/CheckboxGroup/CheckboxGroup.d.ts +5 -0
  52. package/dist/ui/elements/Form/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
  53. package/dist/ui/elements/Form/CheckboxGroup/CheckboxGroup.styles.d.ts +3 -0
  54. package/dist/ui/elements/Form/CheckboxGroup/CheckboxGroup.styles.d.ts.map +1 -0
  55. package/dist/ui/elements/Form/CheckboxGroup/index.d.ts +3 -0
  56. package/dist/ui/elements/Form/CheckboxGroup/index.d.ts.map +1 -0
  57. package/dist/ui/elements/Form/CheckboxGroup/types.d.ts +54 -0
  58. package/dist/ui/elements/Form/CheckboxGroup/types.d.ts.map +1 -0
  59. package/dist/ui/elements/Form/Dropdown/Dropdown.d.ts +4 -0
  60. package/dist/ui/elements/Form/Dropdown/Dropdown.d.ts.map +1 -0
  61. package/dist/ui/elements/Form/Dropdown/Dropdown.styles.d.ts +5 -0
  62. package/dist/ui/elements/Form/Dropdown/Dropdown.styles.d.ts.map +1 -0
  63. package/dist/ui/elements/Form/Dropdown/DropdownTrigger.d.ts +5 -0
  64. package/dist/ui/elements/Form/Dropdown/DropdownTrigger.d.ts.map +1 -0
  65. package/dist/ui/elements/Form/Dropdown/index.d.ts +3 -0
  66. package/dist/ui/elements/Form/Dropdown/index.d.ts.map +1 -0
  67. package/dist/ui/elements/Form/Dropdown/types.d.ts +76 -0
  68. package/dist/ui/elements/Form/Dropdown/types.d.ts.map +1 -0
  69. package/dist/ui/elements/Form/Dropdown/utils.d.ts +13 -0
  70. package/dist/ui/elements/Form/Dropdown/utils.d.ts.map +1 -0
  71. package/dist/ui/elements/Form/RadioButtonGroup/RadioButtonGroup.d.ts +30 -0
  72. package/dist/ui/elements/Form/RadioButtonGroup/RadioButtonGroup.d.ts.map +1 -0
  73. package/dist/ui/elements/Form/RadioButtonGroup/RadioButtonGroup.styles.d.ts +3 -0
  74. package/dist/ui/elements/Form/RadioButtonGroup/RadioButtonGroup.styles.d.ts.map +1 -0
  75. package/dist/ui/elements/Form/RadioButtonGroup/index.d.ts +3 -0
  76. package/dist/ui/elements/Form/RadioButtonGroup/index.d.ts.map +1 -0
  77. package/dist/ui/elements/Form/RadioButtonGroup/types.d.ts +54 -0
  78. package/dist/ui/elements/Form/RadioButtonGroup/types.d.ts.map +1 -0
  79. package/dist/ui/elements/Form/useForm/FormField.d.ts +5 -0
  80. package/dist/ui/elements/Form/useForm/FormField.d.ts.map +1 -0
  81. package/dist/ui/elements/Form/useForm/FormRenderer.d.ts +4 -0
  82. package/dist/ui/elements/Form/useForm/FormRenderer.d.ts.map +1 -0
  83. package/dist/ui/elements/Form/useForm/index.d.ts +3 -0
  84. package/dist/ui/elements/Form/useForm/index.d.ts.map +1 -0
  85. package/dist/ui/elements/Form/useForm/types.d.ts +224 -0
  86. package/dist/ui/elements/Form/useForm/types.d.ts.map +1 -0
  87. package/dist/ui/elements/Form/useForm/useForm.d.ts +31 -0
  88. package/dist/ui/elements/Form/useForm/useForm.d.ts.map +1 -0
  89. package/dist/ui/elements/Form/useForm/utils.d.ts +9 -0
  90. package/dist/ui/elements/Form/useForm/utils.d.ts.map +1 -0
  91. package/dist/ui/elements/Modal/Modal.d.ts.map +1 -1
  92. package/dist/ui/elements/Modal/types.d.ts +10 -0
  93. package/dist/ui/elements/Modal/types.d.ts.map +1 -1
  94. package/dist/ui/elements/MultiSelectDropdown/MultiSelectDropdown.d.ts +5 -0
  95. package/dist/ui/elements/MultiSelectDropdown/MultiSelectDropdown.d.ts.map +1 -1
  96. package/dist/ui/elements/MultiSelectDropdown/types.d.ts +5 -0
  97. package/dist/ui/elements/MultiSelectDropdown/types.d.ts.map +1 -1
  98. package/dist/ui/elements/Overlay/Overlay.d.ts.map +1 -1
  99. package/dist/ui/elements/Overlay/Overlay.styles.d.ts +3 -1
  100. package/dist/ui/elements/Overlay/Overlay.styles.d.ts.map +1 -1
  101. package/dist/ui/elements/Overlay/types.d.ts +17 -0
  102. package/dist/ui/elements/Overlay/types.d.ts.map +1 -1
  103. package/dist/ui/elements/PopOver/PopOver.d.ts.map +1 -1
  104. package/dist/ui/elements/PopOver/types.d.ts +5 -0
  105. package/dist/ui/elements/PopOver/types.d.ts.map +1 -1
  106. package/dist/ui/elements/SelectDropdown/SelectDropdown.d.ts +5 -0
  107. package/dist/ui/elements/SelectDropdown/SelectDropdown.d.ts.map +1 -1
  108. package/dist/ui/elements/SelectDropdown/types.d.ts +5 -0
  109. package/dist/ui/elements/SelectDropdown/types.d.ts.map +1 -1
  110. package/dist/ui/index.d.ts +5 -0
  111. package/dist/ui/index.d.ts.map +1 -1
  112. package/package.json +3 -2
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ import React, { NamedExoticComponent, ReactNode, RefAttributes, Component, HTMLA
2
2
  import { Substitute, IStyledComponentBase } from "styled-components/dist/types";
3
3
  import { HTMLMotionProps, ForwardRefComponent } from "framer-motion";
4
4
  import { FastOmit } from "styled-components";
5
+ import { Schema } from "yup";
5
6
  /**
6
7
  * The list of colors which should be available for all action components.
7
8
  */
@@ -41,6 +42,8 @@ export const ICON_TAGS: {
41
42
  project: string[];
42
43
  "terminal-filled": string[];
43
44
  terminal: string[];
45
+ "nst-filled": string[];
46
+ nst: string[];
44
47
  "desktop-filled": string[];
45
48
  desktop: string[];
46
49
  "gamepad-filled": string[];
@@ -123,6 +126,8 @@ export const ICON_TAGS: {
123
126
  "lock-open-filled": string[];
124
127
  "lock-open": string[];
125
128
  lock: string[];
129
+ "magic-orb-filled": string[];
130
+ "magic-orb": string[];
126
131
  "message-filled": string[];
127
132
  "message-info-filled": string[];
128
133
  "message-info": string[];
@@ -167,10 +172,20 @@ export const ICON_TAGS: {
167
172
  star: string[];
168
173
  "trophy-filled": string[];
169
174
  trophy: string[];
175
+ codechef: string[];
176
+ codeforces: string[];
170
177
  facebook: string[];
178
+ github: string[];
179
+ google: string[];
180
+ hackerearth: string[];
181
+ hackerrank: string[];
182
+ instagram: string[];
183
+ leetcode: string[];
171
184
  linkedin: string[];
172
185
  twitter: string[];
173
186
  whatsapp: string[];
187
+ x: string[];
188
+ youtube: string[];
174
189
  "arrow-double-filled": string[];
175
190
  "arrow-double": string[];
176
191
  "arrow-down-filled": string[];
@@ -357,6 +372,12 @@ export const ICON_TAGS: {
357
372
  "power-bi": string[];
358
373
  "printer-filled": string[];
359
374
  printer: string[];
375
+ "progress-half-filled": string[];
376
+ "progress-half": string[];
377
+ "progress-quarter-filled": string[];
378
+ "progress-quarter": string[];
379
+ "progress-zero-filled": string[];
380
+ "progress-zero": string[];
360
381
  "python-filled": string[];
361
382
  python: string[];
362
383
  "quiz-filled": string[];
@@ -447,6 +468,7 @@ export const ICON_TAGS: {
447
468
  export const TAG_ICONS: {
448
469
  Alert: string[];
449
470
  Code: string[];
471
+ College: string[];
450
472
  Device: string[];
451
473
  Docs: string[];
452
474
  Finance: string[];
@@ -458,7 +480,7 @@ export const TAG_ICONS: {
458
480
  Time: string[];
459
481
  User: string[];
460
482
  };
461
- type grauityIconName = 'exclamation-circle-filled' | 'exclamation-circle' | 'exclamation-triangle-filled' | 'exclamation-triangle' | 'info-circle-filled' | 'info-circle' | 'question-circle-filled' | 'question-circle' | 'code-alt-filled' | 'code-alt' | 'code-filled' | 'code' | 'project-filled' | 'project' | 'terminal-filled' | 'terminal' | 'desktop-filled' | 'desktop' | 'gamepad-filled' | 'gamepad' | 'lamp-filled' | 'lamp' | 'laptop-filled' | 'laptop' | 'mobile-filled' | 'mobile' | 'archive-filled' | 'archive' | 'bookmark-filled' | 'bookmark' | 'file-alt-filled' | 'file-alt' | 'file-filled' | 'file-lightning-filled' | 'file-lightning' | 'file' | 'folder-filled' | 'folder-open-filled' | 'folder-open' | 'folder' | 'label-filled' | 'label' | 'note-filled' | 'note' | 'pen-filled' | 'pen' | 'pin-filled' | 'pin' | 'currency-rupee-filled' | 'currency-rupee' | 'headphone-filled' | 'headphone-mic-filled' | 'headphone-mic' | 'headphone' | 'mic-filled' | 'mic' | 'micmute-filled' | 'micmute' | 'pause-circle-filled' | 'pause-circle' | 'pause-filled' | 'pause' | 'play-circle-filled' | 'play-circle' | 'play-filled' | 'play-rectangle-filled' | 'play-rectangle' | 'play' | 'video-filled' | 'video-off-filled' | 'video-off' | 'video' | 'volume-maximum-filled' | 'volume-maximum' | 'volume-minimum-filled' | 'volume-minimum' | 'volume-mute-filled' | 'volume-mute' | 'comment-filled' | 'comment' | 'connector-filled' | 'connector' | 'doubt-alt2-filled' | 'doubt-alt2' | 'doubt-filled' | 'doubt-message-filled' | 'doubt-message' | 'doubt' | 'hearing-filled' | 'hearing' | 'heart-filled' | 'heart' | 'hearthands-filled' | 'hearthands' | 'lock-filled' | 'lock-open-filled' | 'lock-open' | 'lock' | 'message-filled' | 'message-info-filled' | 'message-info' | 'message' | 'milestone-filled' | 'milestone' | 'scholar-hat-filled' | 'scholar-hat' | 'smiley-bad-filled' | 'smiley-bad' | 'smiley-filled' | 'smiley-happy-filled' | 'smiley-happy' | 'smiley-neutral-filled' | 'smiley-neutral' | 'smiley-sad-filled' | 'smiley-sad' | 'smiley-very-bad-filled' | 'smiley-very-bad' | 'smiley-very-happy-filled' | 'smiley-very-happy' | 'smiley' | 'spark-filled' | 'spark' | 'sparkle-filled' | 'sparkle' | 'target-filled' | 'target' | 'check-badge-filled' | 'check-badge' | 'crown-filled' | 'crown' | 'flag-filled' | 'flag' | 'gift-filled' | 'gift' | 'leaderboard-filled' | 'leaderboard' | 'medal-filled' | 'medal' | 'star-filled' | 'star' | 'trophy-filled' | 'trophy' | 'facebook' | 'linkedin' | 'twitter' | 'whatsapp' | 'arrow-double-filled' | 'arrow-double' | 'arrow-down-filled' | 'arrow-down-left-filled' | 'arrow-down-left' | 'arrow-down-right-filled' | 'arrow-down-right' | 'arrow-down' | 'arrow-left-filled' | 'arrow-left' | 'arrow-right-filled' | 'arrow-right' | 'arrow-up-filled' | 'arrow-up-left-filled' | 'arrow-up-left' | 'arrow-up-right-filled' | 'arrow-up-right' | 'arrow-up' | 'ban-filled' | 'ban' | 'bin-filled' | 'bin' | 'book-alt-filled' | 'book-alt' | 'book-alt2-filled' | 'book-alt2' | 'book-alt3-filled' | 'book-alt3' | 'book-filled' | 'book' | 'briefcase-alt2-filled' | 'briefcase-alt2' | 'briefcase-filled' | 'briefcase' | 'broadcast-filled' | 'broadcast' | 'bug-filled' | 'bug' | 'bulb-filled' | 'bulb' | 'call-end-filled' | 'call-end' | 'call-start-filled' | 'call-start' | 'camera-filled' | 'camera' | 'caret-double-filled' | 'caret-double' | 'caret-down-filled' | 'caret-down' | 'caret-left-filled' | 'caret-left' | 'caret-right-filled' | 'caret-right' | 'caret-up-filled' | 'caret-up' | 'check-circle-filled' | 'check-circle' | 'check-filled' | 'check-square-filled' | 'check-square' | 'check' | 'chevron-down-double-filled' | 'chevron-down-double' | 'chevron-down-filled' | 'chevron-down' | 'chevron-left-double-filled' | 'chevron-left-double' | 'chevron-left-filled' | 'chevron-left' | 'chevron-right-double-filled' | 'chevron-right-double' | 'chevron-right-filled' | 'chevron-right' | 'chevron-up-double-filled' | 'chevron-up-double' | 'chevron-up-filled' | 'chevron-up' | 'circle-filled' | 'circle' | 'clock-alarm-filled' | 'clock-alarm' | 'close-circle-filled' | 'close-circle' | 'close-filled' | 'close-square-filled' | 'close-square' | 'close' | 'compass-filled' | 'compass' | 'database-filled' | 'database' | 'diamond-filled' | 'diamond' | 'double-check-filled' | 'double-check' | 'download-filled' | 'download' | 'eda-filled' | 'eda' | 'email-alt-filled' | 'email-alt' | 'email-filled' | 'email' | 'filter-filled' | 'filter' | 'floppy-filled' | 'floppy' | 'forward-filled' | 'forward' | 'gear-filled' | 'gear' | 'git-commit-filled' | 'git-commit' | 'globe-filled' | 'globe' | 'grip-hortizontal-filled' | 'grip-hortizontal' | 'grip-vertical-filled' | 'grip-vertical' | 'growth-down-filled' | 'growth-down' | 'growth-up-filled' | 'growth-up' | 'help-filled' | 'help' | 'hold-filled' | 'hold' | 'home-filled' | 'home' | 'hourglass-filled' | 'hourglass' | 'kebab-horizontal-filled' | 'kebab-horizontal' | 'kebab-vertical-filled' | 'kebab-vertical' | 'link-filled' | 'link' | 'list-checked-filled' | 'list-checked' | 'list-filled' | 'list' | 'load-filled' | 'load' | 'loudspeaker-filled' | 'loudspeaker' | 'machine-learning-filled' | 'machine-learning' | 'map-pin-alt1-filled' | 'map-pin-alt1' | 'map-pin-alt2-filled' | 'map-pin-alt2' | 'map-pin-filled' | 'map-pin' | 'maximize-filled' | 'maximize' | 'menu-alt2-filled' | 'menu-alt2' | 'menu-filled' | 'menu-grid-filled' | 'menu-grid' | 'menu' | 'microchip-filled' | 'microchip' | 'minimize-filled' | 'minimize' | 'minus-circle-filled' | 'minus-circle' | 'minus-square-filled' | 'minus-square' | 'moon-filled' | 'moon' | 'new-tab-filled' | 'new-tab' | 'paper-clip-filled' | 'paper-clip' | 'plus-circle-filled' | 'plus-circle' | 'plus-filled' | 'plus-square-filled' | 'plus-square' | 'plus' | 'power-bi-filled' | 'power-bi' | 'printer-filled' | 'printer' | 'python-filled' | 'python' | 'quiz-filled' | 'quiz' | 'refresh-filled' | 'refresh' | 'remove-filled' | 'remove' | 'reply-filled' | 'reply' | 'retail-filled' | 'retail' | 'screenshare-start-filled' | 'screenshare-start' | 'screenshare-stop-filled' | 'screenshare-stop' | 'search-filled' | 'search' | 'share-filled' | 'share' | 'shield-alert-filled' | 'shield-alert' | 'shield-check-filled' | 'shield-check' | 'shield-filled' | 'shield-lock-filled' | 'shield-lock' | 'shield-x-filled' | 'shield-x' | 'shield' | 'shop-filled' | 'shop' | 'sidebar-left-filled' | 'sidebar-left' | 'sidebar-right-filled' | 'sidebar-right' | 'signin-filled' | 'signin' | 'signout-filled' | 'signout' | 'slider-filled' | 'slider' | 'square-filled' | 'square' | 'sticky-note-filled' | 'sticky-note' | 'sun-filled' | 'sun' | 'thumbs-down-filled' | 'thumbs-down' | 'thumbs-up-filled' | 'thumbs-up' | 'thunder-filled' | 'thunder' | 'truck-filled' | 'truck' | 'upload-filled' | 'upload' | 'wrench-filled' | 'wrench' | 'bell-filled' | 'bell' | 'calender-check-filled' | 'calender-check' | 'calender-filled' | 'calender-plus-filled' | 'calender-plus' | 'calender' | 'clock-filled' | 'clock' | 'rewatch-filled' | 'rewatch' | 'stopwatch-filled' | 'stopwatch' | 'bot-filled' | 'bot' | 'person-check-filled' | 'person-check' | 'person-filled' | 'person-plus-filled' | 'person-plus' | 'person' | 'user-speak-filled' | 'user-speak' | 'users-filled' | 'users';
483
+ type grauityIconName = 'exclamation-circle-filled' | 'exclamation-circle' | 'exclamation-triangle-filled' | 'exclamation-triangle' | 'info-circle-filled' | 'info-circle' | 'question-circle-filled' | 'question-circle' | 'code-alt-filled' | 'code-alt' | 'code-filled' | 'code' | 'project-filled' | 'project' | 'terminal-filled' | 'terminal' | 'nst-filled' | 'nst' | 'desktop-filled' | 'desktop' | 'gamepad-filled' | 'gamepad' | 'lamp-filled' | 'lamp' | 'laptop-filled' | 'laptop' | 'mobile-filled' | 'mobile' | 'archive-filled' | 'archive' | 'bookmark-filled' | 'bookmark' | 'file-alt-filled' | 'file-alt' | 'file-filled' | 'file-lightning-filled' | 'file-lightning' | 'file' | 'folder-filled' | 'folder-open-filled' | 'folder-open' | 'folder' | 'label-filled' | 'label' | 'note-filled' | 'note' | 'pen-filled' | 'pen' | 'pin-filled' | 'pin' | 'currency-rupee-filled' | 'currency-rupee' | 'headphone-filled' | 'headphone-mic-filled' | 'headphone-mic' | 'headphone' | 'mic-filled' | 'mic' | 'micmute-filled' | 'micmute' | 'pause-circle-filled' | 'pause-circle' | 'pause-filled' | 'pause' | 'play-circle-filled' | 'play-circle' | 'play-filled' | 'play-rectangle-filled' | 'play-rectangle' | 'play' | 'video-filled' | 'video-off-filled' | 'video-off' | 'video' | 'volume-maximum-filled' | 'volume-maximum' | 'volume-minimum-filled' | 'volume-minimum' | 'volume-mute-filled' | 'volume-mute' | 'comment-filled' | 'comment' | 'connector-filled' | 'connector' | 'doubt-alt2-filled' | 'doubt-alt2' | 'doubt-filled' | 'doubt-message-filled' | 'doubt-message' | 'doubt' | 'hearing-filled' | 'hearing' | 'heart-filled' | 'heart' | 'hearthands-filled' | 'hearthands' | 'lock-filled' | 'lock-open-filled' | 'lock-open' | 'lock' | 'magic-orb-filled' | 'magic-orb' | 'message-filled' | 'message-info-filled' | 'message-info' | 'message' | 'milestone-filled' | 'milestone' | 'scholar-hat-filled' | 'scholar-hat' | 'smiley-bad-filled' | 'smiley-bad' | 'smiley-filled' | 'smiley-happy-filled' | 'smiley-happy' | 'smiley-neutral-filled' | 'smiley-neutral' | 'smiley-sad-filled' | 'smiley-sad' | 'smiley-very-bad-filled' | 'smiley-very-bad' | 'smiley-very-happy-filled' | 'smiley-very-happy' | 'smiley' | 'spark-filled' | 'spark' | 'sparkle-filled' | 'sparkle' | 'target-filled' | 'target' | 'check-badge-filled' | 'check-badge' | 'crown-filled' | 'crown' | 'flag-filled' | 'flag' | 'gift-filled' | 'gift' | 'leaderboard-filled' | 'leaderboard' | 'medal-filled' | 'medal' | 'star-filled' | 'star' | 'trophy-filled' | 'trophy' | 'codechef' | 'codeforces' | 'facebook' | 'github' | 'google' | 'hackerearth' | 'hackerrank' | 'instagram' | 'leetcode' | 'linkedin' | 'twitter' | 'whatsapp' | 'x' | 'youtube' | 'arrow-double-filled' | 'arrow-double' | 'arrow-down-filled' | 'arrow-down-left-filled' | 'arrow-down-left' | 'arrow-down-right-filled' | 'arrow-down-right' | 'arrow-down' | 'arrow-left-filled' | 'arrow-left' | 'arrow-right-filled' | 'arrow-right' | 'arrow-up-filled' | 'arrow-up-left-filled' | 'arrow-up-left' | 'arrow-up-right-filled' | 'arrow-up-right' | 'arrow-up' | 'ban-filled' | 'ban' | 'bin-filled' | 'bin' | 'book-alt-filled' | 'book-alt' | 'book-alt2-filled' | 'book-alt2' | 'book-alt3-filled' | 'book-alt3' | 'book-filled' | 'book' | 'briefcase-alt2-filled' | 'briefcase-alt2' | 'briefcase-filled' | 'briefcase' | 'broadcast-filled' | 'broadcast' | 'bug-filled' | 'bug' | 'bulb-filled' | 'bulb' | 'call-end-filled' | 'call-end' | 'call-start-filled' | 'call-start' | 'camera-filled' | 'camera' | 'caret-double-filled' | 'caret-double' | 'caret-down-filled' | 'caret-down' | 'caret-left-filled' | 'caret-left' | 'caret-right-filled' | 'caret-right' | 'caret-up-filled' | 'caret-up' | 'check-circle-filled' | 'check-circle' | 'check-filled' | 'check-square-filled' | 'check-square' | 'check' | 'chevron-down-double-filled' | 'chevron-down-double' | 'chevron-down-filled' | 'chevron-down' | 'chevron-left-double-filled' | 'chevron-left-double' | 'chevron-left-filled' | 'chevron-left' | 'chevron-right-double-filled' | 'chevron-right-double' | 'chevron-right-filled' | 'chevron-right' | 'chevron-up-double-filled' | 'chevron-up-double' | 'chevron-up-filled' | 'chevron-up' | 'circle-filled' | 'circle' | 'clock-alarm-filled' | 'clock-alarm' | 'close-circle-filled' | 'close-circle' | 'close-filled' | 'close-square-filled' | 'close-square' | 'close' | 'compass-filled' | 'compass' | 'database-filled' | 'database' | 'diamond-filled' | 'diamond' | 'double-check-filled' | 'double-check' | 'download-filled' | 'download' | 'eda-filled' | 'eda' | 'email-alt-filled' | 'email-alt' | 'email-filled' | 'email' | 'filter-filled' | 'filter' | 'floppy-filled' | 'floppy' | 'forward-filled' | 'forward' | 'gear-filled' | 'gear' | 'git-commit-filled' | 'git-commit' | 'globe-filled' | 'globe' | 'grip-hortizontal-filled' | 'grip-hortizontal' | 'grip-vertical-filled' | 'grip-vertical' | 'growth-down-filled' | 'growth-down' | 'growth-up-filled' | 'growth-up' | 'help-filled' | 'help' | 'hold-filled' | 'hold' | 'home-filled' | 'home' | 'hourglass-filled' | 'hourglass' | 'kebab-horizontal-filled' | 'kebab-horizontal' | 'kebab-vertical-filled' | 'kebab-vertical' | 'link-filled' | 'link' | 'list-checked-filled' | 'list-checked' | 'list-filled' | 'list' | 'load-filled' | 'load' | 'loudspeaker-filled' | 'loudspeaker' | 'machine-learning-filled' | 'machine-learning' | 'map-pin-alt1-filled' | 'map-pin-alt1' | 'map-pin-alt2-filled' | 'map-pin-alt2' | 'map-pin-filled' | 'map-pin' | 'maximize-filled' | 'maximize' | 'menu-alt2-filled' | 'menu-alt2' | 'menu-filled' | 'menu-grid-filled' | 'menu-grid' | 'menu' | 'microchip-filled' | 'microchip' | 'minimize-filled' | 'minimize' | 'minus-circle-filled' | 'minus-circle' | 'minus-square-filled' | 'minus-square' | 'moon-filled' | 'moon' | 'new-tab-filled' | 'new-tab' | 'paper-clip-filled' | 'paper-clip' | 'plus-circle-filled' | 'plus-circle' | 'plus-filled' | 'plus-square-filled' | 'plus-square' | 'plus' | 'power-bi-filled' | 'power-bi' | 'printer-filled' | 'printer' | 'progress-half-filled' | 'progress-half' | 'progress-quarter-filled' | 'progress-quarter' | 'progress-zero-filled' | 'progress-zero' | 'python-filled' | 'python' | 'quiz-filled' | 'quiz' | 'refresh-filled' | 'refresh' | 'remove-filled' | 'remove' | 'reply-filled' | 'reply' | 'retail-filled' | 'retail' | 'screenshare-start-filled' | 'screenshare-start' | 'screenshare-stop-filled' | 'screenshare-stop' | 'search-filled' | 'search' | 'share-filled' | 'share' | 'shield-alert-filled' | 'shield-alert' | 'shield-check-filled' | 'shield-check' | 'shield-filled' | 'shield-lock-filled' | 'shield-lock' | 'shield-x-filled' | 'shield-x' | 'shield' | 'shop-filled' | 'shop' | 'sidebar-left-filled' | 'sidebar-left' | 'sidebar-right-filled' | 'sidebar-right' | 'signin-filled' | 'signin' | 'signout-filled' | 'signout' | 'slider-filled' | 'slider' | 'square-filled' | 'square' | 'sticky-note-filled' | 'sticky-note' | 'sun-filled' | 'sun' | 'thumbs-down-filled' | 'thumbs-down' | 'thumbs-up-filled' | 'thumbs-up' | 'thunder-filled' | 'thunder' | 'truck-filled' | 'truck' | 'upload-filled' | 'upload' | 'wrench-filled' | 'wrench' | 'bell-filled' | 'bell' | 'calender-check-filled' | 'calender-check' | 'calender-filled' | 'calender-plus-filled' | 'calender-plus' | 'calender' | 'clock-filled' | 'clock' | 'rewatch-filled' | 'rewatch' | 'stopwatch-filled' | 'stopwatch' | 'bot-filled' | 'bot' | 'person-check-filled' | 'person-check' | 'person-filled' | 'person-plus-filled' | 'person-plus' | 'person' | 'user-speak-filled' | 'user-speak' | 'users-filled' | 'users';
462
484
  type grauityFlippedChoiceName = 'vertically' | 'horizontally';
463
485
  type grauityRotatedChoiceName = 'clockwise' | 'counterclockwise';
464
486
  type grauityIconSizeName = '4' | '8' | '12' | '14' | '16' | '20' | '24' | '28' | '32' | '36' | '40';
@@ -2863,7 +2885,7 @@ interface IconButtonProps {
2863
2885
  /**
2864
2886
  * Variant of the button
2865
2887
  *
2866
- * Available choices: `primary`, `secondary`, `tertiary`, `success`, `danger`, `warning`, `primary-outlined`, `secondary-outlined`, `tertiary-outlined`, `success-outlined`, `danger-outlined`, `warning-outlined`
2888
+ * Available choices: `primary` (solid filled), `secondary` (outlined), `tertiary (text)`
2867
2889
  *
2868
2890
  * Default: `primary`
2869
2891
  * */
@@ -3527,6 +3549,19 @@ export interface OverlayProps {
3527
3549
  * Additional className to be passed to the Overlay
3528
3550
  */
3529
3551
  className?: string;
3552
+ /**
3553
+ * The custom position of the overlay
3554
+ * @default { top: 0, left: 0 }
3555
+ */
3556
+ position?: {
3557
+ top?: number;
3558
+ left?: number;
3559
+ };
3560
+ /**
3561
+ * Should focus on the first element in the overlay
3562
+ * @default true
3563
+ */
3564
+ shouldFocusOnFirstElement?: boolean;
3530
3565
  }
3531
3566
  export const NSOverlay: React.ForwardRefExoticComponent<OverlayProps & React.RefAttributes<HTMLDivElement>>;
3532
3567
  type ModalContentType = React.ReactNode;
@@ -3698,6 +3733,16 @@ export interface ModalProps {
3698
3733
  * Click even object, to be passed by the onClick event for use with `emanate` modal animation
3699
3734
  * */
3700
3735
  clickEvent?: any;
3736
+ /**
3737
+ * Should focus on the first element in the modal
3738
+ * @default true
3739
+ */
3740
+ shouldFocusOnFirstElement?: boolean;
3741
+ /**
3742
+ * Flag to determine if the background scroll should be disabled.
3743
+ * @default true
3744
+ */
3745
+ shouldDisableScroll?: boolean;
3701
3746
  }
3702
3747
  export interface MultiStepModalProps {
3703
3748
  /**
@@ -4106,12 +4151,22 @@ export interface PopOverProps {
4106
4151
  * This will directly open the popover at given position without any adjustments.
4107
4152
  */
4108
4153
  position?: PopoverPosition;
4154
+ /**
4155
+ * Should focus on the first element in the popover
4156
+ * @default true
4157
+ */
4158
+ shouldFocusOnFirstElement?: boolean;
4109
4159
  }
4110
4160
  export function NSPopOver(props: PopOverProps): JSX.Element;
4111
4161
  interface DropdownOption {
4112
4162
  id: number | string;
4113
4163
  label: string;
4114
4164
  }
4165
+ /**
4166
+ * @deprecated This interface is deprecated and will be removed in future versions.
4167
+ * - Use the `Dropdown` component instead.
4168
+ * @see {@link https://grauity.newtonschool.co/?path=/docs/elements-form-dropdown--docs}
4169
+ */
4115
4170
  export interface SelectDropdownProps {
4116
4171
  /**
4117
4172
  * Set of options available for selection.
@@ -4163,11 +4218,21 @@ export interface SelectDropdownProps {
4163
4218
  */
4164
4219
  width?: string | null;
4165
4220
  }
4221
+ /**
4222
+ * @deprecated This component is deprecated and will be removed in future releases.
4223
+ * - Use the `Dropdown` component instead.
4224
+ * @see {@link https://grauity.newtonschool.co/?path=/docs/elements-form-dropdown--docs}
4225
+ */
4166
4226
  export const NSSelectDropdown: React.ForwardRefExoticComponent<SelectDropdownProps & React.RefAttributes<HTMLSelectElement>>;
4167
4227
  interface _DropdownOption1 {
4168
4228
  id: string;
4169
4229
  label: string;
4170
4230
  }
4231
+ /**
4232
+ * @deprecated This interface is deprecated and will be removed in future versions.
4233
+ * - Use the `Dropdown` component instead.
4234
+ * @see {@link https://grauity.newtonschool.co/?path=/docs/elements-form-dropdown--docs}
4235
+ */
4171
4236
  export interface MultiSelectDropdownProps {
4172
4237
  /**
4173
4238
  * Text to display when no option is selected.
@@ -4220,6 +4285,11 @@ export interface MultiSelectDropdownProps {
4220
4285
  */
4221
4286
  triggerComponent?: React.ReactNode;
4222
4287
  }
4288
+ /**
4289
+ * @deprecated This component is deprecated and will be removed in future releases.
4290
+ * - Use the `Dropdown` component instead.
4291
+ * @see {@link https://grauity.newtonschool.co/?path=/docs/elements-form-dropdown--docs}
4292
+ */
4223
4293
  export const NSMultiSelectDropdown: React.ForwardRefExoticComponent<MultiSelectDropdownProps & React.RefAttributes<HTMLSelectElement>>;
4224
4294
  type ChipVariants = 'brand' | 'success' | 'error' | 'warning' | 'yellow' | 'purple' | 'disabled' | 'action-brand' | 'action-success' | 'action-error' | 'action-warning' | 'action-yellow' | 'action-purple';
4225
4295
  type ChipSizes = 'small' | 'medium' | 'large' | 'extra-large';
@@ -4377,6 +4447,16 @@ export interface BottomSheetProps {
4377
4447
  * Additional class name to be passed to the BottomSheet.
4378
4448
  */
4379
4449
  className?: string;
4450
+ /**
4451
+ * Should focus on the first element in the bottomsheet
4452
+ * @default true
4453
+ */
4454
+ shouldFocusOnFirstElement?: boolean;
4455
+ /**
4456
+ * Flag to determine if the background scroll should be disabled.
4457
+ * @default true
4458
+ */
4459
+ shouldDisableScroll?: boolean;
4380
4460
  }
4381
4461
  export const NSBottomSheet: React.ForwardRefExoticComponent<BottomSheetProps & React.RefAttributes<HTMLDivElement>>;
4382
4462
  export interface CalendarEventProps {
@@ -5296,11 +5376,11 @@ export interface CheckboxProps {
5296
5376
  /**
5297
5377
  * The size of the checkbox.
5298
5378
  * @default medium
5299
- * @deprecated Use color prop instead
5300
5379
  */
5301
5380
  size?: CheckboxSize;
5302
5381
  /**
5303
5382
  * The state of the checkbox.
5383
+ * @deprecated Use color prop instead
5304
5384
  * @default default
5305
5385
  */
5306
5386
  state?: CheckboxState;
@@ -5341,9 +5421,13 @@ export interface CheckboxProps {
5341
5421
  value?: string | number;
5342
5422
  /**
5343
5423
  * Additional class names to apply to the checkbox.
5344
- * @default brand
5424
+ * @default undefined
5345
5425
  */
5346
5426
  className?: string;
5427
+ /**
5428
+ * The color of the checkbox.
5429
+ * @default brand
5430
+ */
5347
5431
  color?: CheckboxColors;
5348
5432
  }
5349
5433
  /**
@@ -5557,5 +5641,582 @@ export interface OtpInputFieldProps {
5557
5641
  color?: OtpFieldColors;
5558
5642
  }
5559
5643
  export const NSOtpInput: (props: OtpInputFieldProps) => JSX.Element;
5644
+ export enum NSDropdownMenuBaseItemType {
5645
+ SUB_HEADER = "subheader",
5646
+ DIVIDER = "divider",
5647
+ OPTION = "option"
5648
+ }
5649
+ type OptionValue = string | number;
5650
+ export type NSDropdownMenuBaseItemSubHeaderProps = {
5651
+ type: NSDropdownMenuBaseItemType.SUB_HEADER;
5652
+ title: string;
5653
+ };
5654
+ export type NSDropdownMenuBaseItemDividerProps = {
5655
+ type: NSDropdownMenuBaseItemType.DIVIDER;
5656
+ };
5657
+ export type NSDropdownMenuBaseItemOptionProps = {
5658
+ type: NSDropdownMenuBaseItemType.OPTION;
5659
+ label: string;
5660
+ value: OptionValue;
5661
+ description?: string;
5662
+ leftIcon?: grauityIconName;
5663
+ rightIcon?: grauityIconName;
5664
+ disabled?: boolean;
5665
+ };
5666
+ export type NSDropdownMenuBaseItemProps = NSDropdownMenuBaseItemSubHeaderProps | NSDropdownMenuBaseItemDividerProps | NSDropdownMenuBaseItemOptionProps;
5667
+ export interface NSDropdownMenuProps {
5668
+ /**
5669
+ * Whether to show the header of the dropdown menu.
5670
+ * - If `showHeader` is false, `title`, `overline`, and `subtext` will be ignored.
5671
+ * - if `title`, `overline`, and `subtext` all are not provided, `showHeader` will be ignored.
5672
+ * @default true
5673
+ */
5674
+ showHeader?: boolean;
5675
+ /**
5676
+ * The title of the dropdown menu.
5677
+ * @default 'Select'
5678
+ */
5679
+ title?: string;
5680
+ /**
5681
+ * The overline text of the dropdown menu.
5682
+ * @default ''
5683
+ */
5684
+ overline?: string;
5685
+ /**
5686
+ * The subtext of the dropdown menu.
5687
+ * @default ''
5688
+ */
5689
+ subtext?: string;
5690
+ /**
5691
+ * Custom header component for the dropdown menu.
5692
+ * - If `customHeader` is provided, `showHeader`, `title`, `overline`, and `subtext` will be ignored.
5693
+ * @default null
5694
+ */
5695
+ customHeader?: React.ReactNode;
5696
+ /**
5697
+ * Whether the dropdown menu is searchable.
5698
+ * @default false
5699
+ */
5700
+ searchable?: boolean;
5701
+ /**
5702
+ * Placeholder text for the search input.
5703
+ * @default 'Search'
5704
+ */
5705
+ searchPlaceholder?: string;
5706
+ /**
5707
+ * Icon name for the search input.
5708
+ * @default 'search'
5709
+ */
5710
+ searchIcon?: grauityIconName;
5711
+ /**
5712
+ * Callback function called when the search input value changes.
5713
+ * @param value - The new value of the search input.
5714
+ * @default A function that searches on label and description of items.
5715
+ */
5716
+ onSearchInputChange?: (value: string) => void;
5717
+ /**
5718
+ * Whether multiple items can be selected.
5719
+ * @default false
5720
+ */
5721
+ multiple?: boolean;
5722
+ /**
5723
+ * List of items to be displayed in the dropdown menu.
5724
+ * @type {
5725
+ type: 'subheader'
5726
+ title?: string;
5727
+ } | {
5728
+ type: 'divider'
5729
+ } | {
5730
+ type: 'option'
5731
+ label: string;
5732
+ value: string;
5733
+ description?: string;
5734
+ leftIcon?: grauityIconName;
5735
+ rightIcon?: grauityIconName;
5736
+ disabled?: boolean;
5737
+ }
5738
+ * @default []
5739
+ */
5740
+ items: NSDropdownMenuBaseItemProps[];
5741
+ /**
5742
+ * Whether to show action buttons (e.g., Apply, Clear All).
5743
+ * @default false in single select mode, true in multiple select mode
5744
+ */
5745
+ showActionButtons?: boolean;
5746
+ /**
5747
+ * Whether to show the "Clear All" button.
5748
+ * - If `showActionButtons` is false, `showClearAllButton` will be ignored.
5749
+ * - If `multiple` is false, `showClearAllButton` will always be false.
5750
+ * @default true
5751
+ */
5752
+ showClearAllButton?: boolean;
5753
+ /**
5754
+ * Text for the "Clear All" button.
5755
+ * @default 'Clear All'
5756
+ */
5757
+ clearAllButtonText?: string;
5758
+ /**
5759
+ * Text for the "Apply" button.
5760
+ * @default 'Apply'
5761
+ */
5762
+ applyButtonText?: string;
5763
+ /**
5764
+ * Callback function called when the "Clear All" button is clicked.
5765
+ * @default null
5766
+ */
5767
+ onClearAll?: () => void;
5768
+ /**
5769
+ * Callback function called to apply the selected items.
5770
+ * - In single select mode, if `showActionButtons` is false, `onChange` will be called when an option is clicked.
5771
+ * - In multiple select mode, if `showActionButtons` is false, `onChange` will be called when clicked outside the dropdown menu.
5772
+ * - If `showActionButtons` is true, `onChange` will be called when the "Apply" button is clicked.
5773
+ * @param items - The selected items.
5774
+ * - If `multiple` is false, `items` will be a single object.
5775
+ * - If `multiple` is true, `items` will be an array of objects.
5776
+ * @default null
5777
+ */
5778
+ onChange?: (items: NSDropdownMenuBaseItemOptionProps | NSDropdownMenuBaseItemOptionProps[]) => void;
5779
+ /**
5780
+ * Callback function called when the dropdown menu is scrolled to the bottom.
5781
+ * @default null
5782
+ */
5783
+ onScrollToBottom?: () => void;
5784
+ /**
5785
+ * Additional class names for the dropdown menu.
5786
+ * @default null
5787
+ */
5788
+ className?: string;
5789
+ /**
5790
+ * Additional styles for the dropdown menu.
5791
+ * @default {}
5792
+ */
5793
+ styles?: React.CSSProperties;
5794
+ /**
5795
+ * The values of the selected items.
5796
+ * - If `multiple` is false, `value` should be a selected object
5797
+ * - If `multiple` is true, `value` should be an array of selected objects
5798
+ * @default null
5799
+ */
5800
+ value?: NSDropdownMenuBaseItemOptionProps | NSDropdownMenuBaseItemOptionProps[];
5801
+ /**
5802
+ * The width of the dropdown menu.
5803
+ * @default '300px'
5804
+ */
5805
+ width?: string;
5806
+ }
5807
+ export const NSDropdownMenu: React.ForwardRefExoticComponent<NSDropdownMenuProps & React.RefAttributes<HTMLDivElement>>;
5808
+ interface DropdownTriggerProps {
5809
+ /**
5810
+ * The name of the dropdown field
5811
+ * @required
5812
+ */
5813
+ name: string;
5814
+ /**
5815
+ * The label for the dropdown field
5816
+ */
5817
+ label?: string;
5818
+ /**
5819
+ * The placeholder text for the dropdown field
5820
+ * @default 'Select'
5821
+ */
5822
+ placeholder?: string;
5823
+ /**
5824
+ * Whether the dropdown field is required
5825
+ * @default false
5826
+ */
5827
+ isRequired?: boolean;
5828
+ /**
5829
+ * Whether to disable the dropdown field
5830
+ * @default false
5831
+ */
5832
+ isDisabled?: boolean;
5833
+ /**
5834
+ * The help message to display below the dropdown field
5835
+ */
5836
+ helpMessage?: string;
5837
+ /**
5838
+ * The error message to display when the dropdown field is invalid
5839
+ */
5840
+ errorMessage?: string;
5841
+ /**
5842
+ * Whether to show the selected value on trigger
5843
+ * - If it is false, the placeholder will be shown always.
5844
+ * - In single select mode, value will be shown.
5845
+ * - In multi select mode, 'n selected' will be shown.
5846
+ * @default true
5847
+ */
5848
+ showSelectedValueOnTrigger?: boolean;
5849
+ /**
5850
+ * The custom trigger element to display in the dropdown
5851
+ * @default null
5852
+ * @example <Button>Click me</Button>
5853
+ */
5854
+ trigger?: React.ReactNode;
5855
+ /**
5856
+ * The function to call when the dropdown menu is closed
5857
+ *
5858
+ * @param value The selected value(s) in the dropdown menu
5859
+ */
5860
+ onClose?: (value: NSDropdownMenuBaseItemOptionProps | NSDropdownMenuBaseItemOptionProps[]) => void;
5861
+ }
5862
+ export interface DropdownProps extends DropdownTriggerProps, NSDropdownMenuProps {
5863
+ menuProps?: {
5864
+ /**
5865
+ * The width of the dropdown menu.
5866
+ * @default '300px'
5867
+ */
5868
+ width?: string;
5869
+ /**
5870
+ * Whether the dropdown menu is same width as trigger
5871
+ * @default true
5872
+ */
5873
+ fullWidth?: boolean;
5874
+ };
5875
+ }
5876
+ export const NSDropdown: (props: DropdownProps) => JSX.Element;
5877
+ type CheckBoxValue = string | number;
5878
+ interface CheckboxItemProps extends Omit<CheckboxProps, 'name'> {
5879
+ name?: string;
5880
+ }
5881
+ export interface CheckboxGroupProps {
5882
+ /**
5883
+ * The name of the checkbox fields.
5884
+ * @required
5885
+ */
5886
+ name: string;
5887
+ /**
5888
+ * The label for the checkbox group.
5889
+ * @default undefined
5890
+ */
5891
+ label?: string;
5892
+ /**
5893
+ * The items available in the checkbox group.
5894
+ * Each item should adhere to the `CheckboxProps` interface.
5895
+ * @default []
5896
+ */
5897
+ items: CheckboxItemProps[];
5898
+ /**
5899
+ * The currently selected values in the checkbox group.
5900
+ * @default []
5901
+ */
5902
+ value?: CheckBoxValue[];
5903
+ /**
5904
+ * Callback function to handle changes in the checkbox group.
5905
+ * @param value - The updated array of selected values.
5906
+ */
5907
+ onChange?: (value: CheckBoxValue[]) => void;
5908
+ /**
5909
+ * Whether the checkbox group is required.
5910
+ * @default false
5911
+ */
5912
+ isRequired?: boolean;
5913
+ /**
5914
+ * The help message for the checkbox group.
5915
+ * @default undefined
5916
+ */
5917
+ helpMessage?: string;
5918
+ /**
5919
+ * The error message for the checkbox group.
5920
+ * @default undefined
5921
+ */
5922
+ errorMessage?: string;
5923
+ /**
5924
+ * Additional class names to apply to the checkbox.
5925
+ * @default undefined
5926
+ */
5927
+ className?: string;
5928
+ }
5929
+ export const NSCheckboxGroup: React.ForwardRefExoticComponent<CheckboxGroupProps & React.RefAttributes<HTMLDivElement>>;
5930
+ type RadioButtonValue = string | number;
5931
+ interface RadioButtonItemProps extends Omit<RadioButtonProps, 'name'> {
5932
+ name?: string;
5933
+ }
5934
+ export interface RadioButtonGroupProps {
5935
+ /**
5936
+ * The name of the radio button group.
5937
+ * @required
5938
+ */
5939
+ name: string;
5940
+ /**
5941
+ * The label for the radio button group.
5942
+ * @default undefined
5943
+ */
5944
+ label?: string;
5945
+ /**
5946
+ * The items available in the radio button group.
5947
+ * Each item should adhere to the `RadioButtonProps` interface.
5948
+ * @default []
5949
+ */
5950
+ items: RadioButtonItemProps[];
5951
+ /**
5952
+ * The currently selected value in the radio button group.
5953
+ * @default null
5954
+ */
5955
+ value?: RadioButtonValue;
5956
+ /**
5957
+ * Callback function to handle changes in the radio button group.
5958
+ * @param value - The updated value.
5959
+ */
5960
+ onChange?: (value: RadioButtonValue) => void;
5961
+ /**
5962
+ * Whether the radio button group is required.
5963
+ * @default false
5964
+ */
5965
+ isRequired?: boolean;
5966
+ /**
5967
+ * The help message for the radio button group.
5968
+ * @default undefined
5969
+ */
5970
+ helpMessage?: string;
5971
+ /**
5972
+ * The error message for the radio button group.
5973
+ * @default undefined
5974
+ */
5975
+ errorMessage?: string;
5976
+ /**
5977
+ * Additional class names to apply to the radio button.
5978
+ * @default undefined
5979
+ */
5980
+ className?: string;
5981
+ }
5982
+ /**
5983
+ * RadioButtonGroup component is used to render a group of radio buttons.
5984
+ * - It is used to select one option from a list of options.
5985
+ * - It can be used to render a list of radio buttons with a label, help message, and error message.
5986
+ *
5987
+ * @example
5988
+ * <RadioButtonGroup
5989
+ * name="radio-button-group"
5990
+ * label="Radio button group"
5991
+ * items={[
5992
+ * { value: 'option1', label: 'Option 1' },
5993
+ * { value: 'option2', label: 'Option 2' },
5994
+ * { value: 'option3', label: 'Option 3' },
5995
+ * { value: 'option4', label: 'Option 4', isDisabled: true },
5996
+ * ]}
5997
+ * value="option1"
5998
+ * onChange={(value) => {
5999
+ * console.log(value);
6000
+ * }}
6001
+ * isRequired={true}
6002
+ * helpMessage="This is a help message"
6003
+ * errorMessage="This is an error message"
6004
+ * className=""
6005
+ * />
6006
+ */
6007
+ export const NSRadioButtonGroup: React.ForwardRefExoticComponent<RadioButtonGroupProps & React.RefAttributes<HTMLDivElement>>;
6008
+ export type NSFieldName = string;
6009
+ export interface NSFormState {
6010
+ [key: NSFieldName]: any;
6011
+ }
6012
+ export interface NSFormErrors {
6013
+ [key: NSFieldName]: string;
6014
+ }
6015
+ export enum NSFormFieldType {
6016
+ TEXTFIELD = "textfield",
6017
+ DROPDOWN = "dropdown",
6018
+ DROPDOWN_MENU = "dropdown-menu",
6019
+ CHECKBOX_GROUP = "checkbox-group",
6020
+ RADIOBUTTON_GROUP = "radio-button-group",
6021
+ CUSTOM = "custom"
6022
+ }
6023
+ export interface NSConditionalProp {
6024
+ prop: string;
6025
+ is: (data: NSFormState) => boolean;
6026
+ then?: any;
6027
+ otherwise?: any;
6028
+ }
6029
+ export interface NSFormFieldBaseProps {
6030
+ type: NSFormFieldType;
6031
+ renderer?: (props: FormFieldProps) => React.ReactNode;
6032
+ rendererProps?: any;
6033
+ conditionalProps?: NSConditionalProp[];
6034
+ configProps?: any;
6035
+ }
6036
+ export interface NSFormFieldTextFieldProps extends NSFormFieldBaseProps {
6037
+ type: NSFormFieldType.TEXTFIELD;
6038
+ rendererProps: TextFieldProps;
6039
+ }
6040
+ export interface NSFormFieldDropdownProps extends NSFormFieldBaseProps {
6041
+ type: NSFormFieldType.DROPDOWN;
6042
+ rendererProps: DropdownProps;
6043
+ }
6044
+ export interface NSFormFieldDropdownMenuProps extends NSFormFieldBaseProps {
6045
+ type: NSFormFieldType.DROPDOWN_MENU;
6046
+ rendererProps: DropdownProps;
6047
+ }
6048
+ export interface NSFormFieldCheckboxGroupProps extends NSFormFieldBaseProps {
6049
+ type: NSFormFieldType.CHECKBOX_GROUP;
6050
+ rendererProps: CheckboxGroupProps;
6051
+ }
6052
+ interface FormFieldRadioButtonGroupProps extends NSFormFieldBaseProps {
6053
+ type: NSFormFieldType.RADIOBUTTON_GROUP;
6054
+ rendererProps: RadioButtonGroupProps;
6055
+ }
6056
+ export interface NSFormFieldCustomProps extends NSFormFieldBaseProps {
6057
+ type: NSFormFieldType.CUSTOM;
6058
+ rendererProps: any;
6059
+ }
6060
+ export type NSFormField = NSFormFieldTextFieldProps | NSFormFieldDropdownProps | NSFormFieldDropdownMenuProps | NSFormFieldCheckboxGroupProps | FormFieldRadioButtonGroupProps | NSFormFieldCustomProps;
6061
+ export interface NSFormFields {
6062
+ [key: NSFieldName]: NSFormField;
6063
+ }
6064
+ export interface NSFormRowProps {
6065
+ widths?: string;
6066
+ column?: NSFormRowColumnCondition;
6067
+ items?: NSFormField[];
6068
+ }
6069
+ export enum NSFormRowColumnCondition {
6070
+ ALWAYS_COLUMN = "always-column",
6071
+ ALWAYS_ROW = "always-row",
6072
+ COLUMN_ON_MOBILE = "column-on-mobile"
6073
+ }
6074
+ export interface NSFormConfig {
6075
+ fieldNames: NSFieldName[];
6076
+ initialState: NSFormState;
6077
+ rows: NSFormRowProps[];
6078
+ schema?: Schema;
6079
+ }
6080
+ export enum NSFormValidationType {
6081
+ ON_BLUR = "onBlur",
6082
+ ON_CHANGE = "onChange"
6083
+ }
6084
+ export interface NSUseFormProps {
6085
+ /**
6086
+ * The form configuration object.
6087
+ * - This object contains the form field names, initial state, and form rows.
6088
+ * - `fieldNames`: An array of strings representing the field names.
6089
+ * - `initialState`: An object with the field name as the key and the initial value as the value.
6090
+ * - `rows`: An array of objects with the following properties:
6091
+ * - `widths`: A string representing the column widths for the row. (Eg: '1fr 1fr')
6092
+ * - `column`: A string representing the column condition for the row. (Options: 'always-column', 'always-row', 'column-on-mobile')
6093
+ * - `items`: An array of form field objects.
6094
+ * - Each form field object contains the following properties:
6095
+ * - `type`: A string representing the form field type. (Options: 'textfield', 'dropdown', 'dropdown-menu', 'checkbox-group', 'radio-button-group', 'custom')
6096
+ * - `renderer`: A function that returns a React node. (Props: formField, error, formData, handleChange)
6097
+ * - `rendererProps`: Props required for the form field renderer. (Eg: name, label, placeholder, etc.)
6098
+ * - `configProps`: An object with additional form field props required at user side.
6099
+ * - `schema`: A Yup schema object to validate the form fields.
6100
+ * @required
6101
+ */
6102
+ formConfig: NSFormConfig;
6103
+ /**
6104
+ * CSS properties to style the form rows.
6105
+ * @default {}
6106
+ */
6107
+ rowStyles?: React.CSSProperties;
6108
+ /**
6109
+ * The type of validation to be used for the form fields.
6110
+ * - 'onBlur': Validate the form fields on blur.
6111
+ * - 'onChange': Validate the form fields on change.
6112
+ * - If not provided, all fields will be validated on submit.
6113
+ * @default null
6114
+ */
6115
+ whenToValidate?: NSFormValidationType;
6116
+ /**
6117
+ * Flag to indicate if the form is being viewed on a mobile device.
6118
+ * @default false
6119
+ */
6120
+ isMobileView?: boolean;
6121
+ /**
6122
+ * Flag to indicate if the form should focus on the first error when the form is validated.
6123
+ * @default true
6124
+ */
6125
+ shouldFocusOnFirstError?: boolean;
6126
+ /**
6127
+ * Flag to indicate if the form should submit on pressing the 'Enter' key.
6128
+ * @default true
6129
+ */
6130
+ shouldSubmitOnEnter?: boolean;
6131
+ /**
6132
+ * Flag to indicate if the form should show the submit button.
6133
+ * - A default submit button will be rendered at the end of the form.
6134
+ * - If set to false, the user can provide a custom submit button and call the `submit` function to submit the form.
6135
+ * @default true
6136
+ */
6137
+ shouldShowSubmitButton?: boolean;
6138
+ /**
6139
+ * Props for the submit button.
6140
+ * - These props will be passed to the default submit button.
6141
+ */
6142
+ submitButtonProps?: ButtonProps;
6143
+ /**
6144
+ * Function to be called when the form is submitted.
6145
+ * - This function will be called after the form is validated and there are no errors.
6146
+ * @param data - The form data to be submitted.
6147
+ */
6148
+ onSubmit?: (data: NSFormState) => void;
6149
+ }
6150
+ export interface NSUseFormReturnProps {
6151
+ /**
6152
+ * The current state of the form.
6153
+ */
6154
+ formData: NSFormState;
6155
+ /**
6156
+ * The form renderer to render the form fields.
6157
+ * - This is a React node that renders the form fields based on the form configuration.
6158
+ * - Place this node in the component to render the form.
6159
+ */
6160
+ formRenderer: React.ReactNode;
6161
+ /**
6162
+ * Function to validate the form fields.
6163
+ * @param fields - The form fields to validate. (Default: All fields)
6164
+ * @param data - The form data to validate. (Default: Current form data)
6165
+ */
6166
+ validate: (fields: NSFieldName[], data: NSFormState) => void;
6167
+ /**
6168
+ * Function to submit the form.
6169
+ * - This function will validate the form fields and submit the form if there are no errors.
6170
+ * - Will be called on pressing Enter key if the `shouldSubmitOnEnter` flag is set to true.
6171
+ * - Will be called on pressing Submit button if the `shouldShowSubmitButton` flag is set to true.
6172
+ * - If the `shouldShowSubmitButton` flag is set to false, the user can create a custom submit button and call this function to submit the form.
6173
+ */
6174
+ submit: () => void;
6175
+ /**
6176
+ * Function to change the form data.
6177
+ * @param newData - The new form data to update.
6178
+ */
6179
+ changeFormData: (newData: NSFormState) => void;
6180
+ }
6181
+ interface HandleFormFieldChangeProps {
6182
+ name: string;
6183
+ value: any;
6184
+ }
6185
+ interface FormFieldProps {
6186
+ formField: NSFormField;
6187
+ error?: string;
6188
+ formData: NSFormState;
6189
+ handleChange: (props: HandleFormFieldChangeProps) => void;
6190
+ whenToValidate?: NSFormValidationType;
6191
+ handleValidate: (props: HandleFormFieldChangeProps) => void;
6192
+ }
6193
+ /**
6194
+ * Custom hook to manage form state, validation, submission and rendering.
6195
+ *
6196
+ * @param {Object} formConfig - Configuration object for the form.
6197
+ * @param {Object} [rowStyles={}] - Optional styles for form rows.
6198
+ * @param {string} whenToValidate - Determines when to validate the form fields.
6199
+ * @param {boolean} [isMobileView=false] - Flag to indicate if the form is in mobile view.
6200
+ * @param {boolean} [shouldFocusOnFirstError=true] - Flag to indicate if the first error field should be focused.
6201
+ * @param {boolean} [shouldSubmitOnEnter=true] - Flag to indicate if the form should be submitted on pressing Enter.
6202
+ * @param {boolean} [shouldShowSubmitButton=true] - Flag to indicate if the submit button should be shown.
6203
+ * @param {Object} [submitButtonProps={}] - Optional properties for the submit button.
6204
+ * @param {Function} [onSubmit=() => {}] - Callback function to handle form submission.
6205
+ *
6206
+ * @returns {Object} - Returns an object containing:
6207
+ * - `formData`: The current state of the form data.
6208
+ * - `formRenderer`: The rendered form component.
6209
+ * - `validate`: Function to validate form fields.
6210
+ * - `submit`: Function to submit the form.
6211
+ * - `changeFormData`: Function to update form data externally.
6212
+ *
6213
+ * @description
6214
+ * This hook provides the following functionalities:
6215
+ * - Validates form fields based on the provided schema in `formConfig`.
6216
+ * - Handles form submission and triggers the `onSubmit` callback if there are no validation errors.
6217
+ * - Provides a form renderer component to render the form UI with default submit button.
6218
+ * - Allows updating form data and handling individual field changes.
6219
+ */
6220
+ export const useNSForm: ({ formConfig, rowStyles, whenToValidate, isMobileView, shouldFocusOnFirstError, shouldSubmitOnEnter, shouldShowSubmitButton, submitButtonProps, onSubmit, }: NSUseFormProps) => NSUseFormReturnProps;
5560
6221
 
5561
6222
  //# sourceMappingURL=index.d.ts.map