@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.1.4 → 0.1.6

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 (164) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/index.d.ts +131 -131
  3. package/dist/index.esm.js +148 -148
  4. package/dist/index.js +148 -148
  5. package/dist/styles.css +1 -1
  6. package/package.json +1 -1
  7. package/src/components/ui/accessibility-demo.tsx +271 -0
  8. package/src/components/ui/advanced-component-architecture-demo.tsx +916 -0
  9. package/src/components/ui/advanced-transition-system-demo.tsx +670 -0
  10. package/src/components/ui/advanced-transition-system.tsx +395 -0
  11. package/src/components/ui/animation/animated-container.tsx +166 -0
  12. package/src/components/ui/animation/index.ts +19 -0
  13. package/src/components/ui/animation/staggered-container.tsx +68 -0
  14. package/src/components/ui/animation-demo.tsx +250 -0
  15. package/src/components/ui/badge.tsx +33 -0
  16. package/src/components/ui/battery-conscious-animation-demo.tsx +568 -0
  17. package/src/components/ui/border-radius-shadow-demo.tsx +187 -0
  18. package/src/components/ui/button.tsx +36 -0
  19. package/src/components/ui/card.tsx +207 -0
  20. package/src/components/ui/checkbox.tsx +30 -0
  21. package/src/components/ui/color-preview.tsx +411 -0
  22. package/src/components/ui/data-display/chart.tsx +653 -0
  23. package/src/components/ui/data-display/data-grid-simple.tsx +76 -0
  24. package/src/components/ui/data-display/data-grid.tsx +680 -0
  25. package/src/components/ui/data-display/list.tsx +456 -0
  26. package/src/components/ui/data-display/table.tsx +482 -0
  27. package/src/components/ui/data-display/timeline.tsx +441 -0
  28. package/src/components/ui/data-display/tree.tsx +602 -0
  29. package/src/components/ui/data-display/types.ts +536 -0
  30. package/src/components/ui/enterprise-mobile-experience-demo.tsx +749 -0
  31. package/src/components/ui/enterprise-mobile-experience.tsx +464 -0
  32. package/src/components/ui/feedback/alert.tsx +157 -0
  33. package/src/components/ui/feedback/progress.tsx +292 -0
  34. package/src/components/ui/feedback/skeleton.tsx +185 -0
  35. package/src/components/ui/feedback/toast.tsx +280 -0
  36. package/src/components/ui/feedback/types.ts +125 -0
  37. package/src/components/ui/font-preview.tsx +288 -0
  38. package/src/components/ui/form-demo.tsx +553 -0
  39. package/src/components/ui/hardware-acceleration-demo.tsx +547 -0
  40. package/src/components/ui/input.tsx +35 -0
  41. package/src/components/ui/label.tsx +16 -0
  42. package/src/components/ui/layout-demo.tsx +367 -0
  43. package/src/components/ui/layouts/adaptive-layout.tsx +139 -0
  44. package/src/components/ui/layouts/desktop-layout.tsx +224 -0
  45. package/src/components/ui/layouts/index.ts +10 -0
  46. package/src/components/ui/layouts/mobile-layout.tsx +162 -0
  47. package/src/components/ui/layouts/tablet-layout.tsx +197 -0
  48. package/src/components/ui/mobile-form-validation.tsx +451 -0
  49. package/src/components/ui/mobile-input-demo.tsx +201 -0
  50. package/src/components/ui/mobile-input.tsx +281 -0
  51. package/src/components/ui/mobile-skeleton-loading-demo.tsx +638 -0
  52. package/src/components/ui/navigation/breadcrumb.tsx +158 -0
  53. package/src/components/ui/navigation/index.ts +36 -0
  54. package/src/components/ui/navigation/menu.tsx +374 -0
  55. package/src/components/ui/navigation/navigation-demo.tsx +324 -0
  56. package/src/components/ui/navigation/pagination.tsx +272 -0
  57. package/src/components/ui/navigation/sidebar.tsx +383 -0
  58. package/src/components/ui/navigation/stepper.tsx +303 -0
  59. package/src/components/ui/navigation/tabs.tsx +205 -0
  60. package/src/components/ui/navigation/types.ts +299 -0
  61. package/src/components/ui/overlay/backdrop.tsx +81 -0
  62. package/src/components/ui/overlay/focus-manager.tsx +143 -0
  63. package/src/components/ui/overlay/index.ts +36 -0
  64. package/src/components/ui/overlay/modal.tsx +270 -0
  65. package/src/components/ui/overlay/overlay-manager.tsx +110 -0
  66. package/src/components/ui/overlay/popover.tsx +462 -0
  67. package/src/components/ui/overlay/portal.tsx +79 -0
  68. package/src/components/ui/overlay/tooltip.tsx +303 -0
  69. package/src/components/ui/overlay/types.ts +196 -0
  70. package/src/components/ui/performance-demo.tsx +596 -0
  71. package/src/components/ui/semantic-input-system-demo.tsx +502 -0
  72. package/src/components/ui/semantic-input-system-demo.tsx.disabled +873 -0
  73. package/src/components/ui/tablet-layout.tsx +192 -0
  74. package/src/components/ui/theme-customizer.tsx +386 -0
  75. package/src/components/ui/theme-preview.tsx +310 -0
  76. package/src/components/ui/theme-switcher.tsx +264 -0
  77. package/src/components/ui/theme-toggle.tsx +38 -0
  78. package/src/components/ui/token-demo.tsx +195 -0
  79. package/src/components/ui/touch-demo.tsx +462 -0
  80. package/src/components/ui/touch-friendly-interface-demo.tsx +519 -0
  81. package/src/components/ui/touch-friendly-interface.tsx +296 -0
  82. package/src/hooks/index.ts +190 -0
  83. package/src/hooks/use-accessibility-support.ts +518 -0
  84. package/src/hooks/use-adaptive-layout.ts +289 -0
  85. package/src/hooks/use-advanced-patterns.ts +294 -0
  86. package/src/hooks/use-advanced-transition-system.ts +393 -0
  87. package/src/hooks/use-animation-profile.ts +288 -0
  88. package/src/hooks/use-battery-animations.ts +384 -0
  89. package/src/hooks/use-battery-conscious-loading.ts +475 -0
  90. package/src/hooks/use-battery-optimization.ts +330 -0
  91. package/src/hooks/use-battery-status.ts +299 -0
  92. package/src/hooks/use-component-performance.ts +344 -0
  93. package/src/hooks/use-device-loading-states.ts +459 -0
  94. package/src/hooks/use-device.tsx +110 -0
  95. package/src/hooks/use-enterprise-mobile-experience.ts +488 -0
  96. package/src/hooks/use-form-feedback.ts +403 -0
  97. package/src/hooks/use-form-performance.ts +513 -0
  98. package/src/hooks/use-frame-rate.ts +251 -0
  99. package/src/hooks/use-gestures.ts +338 -0
  100. package/src/hooks/use-hardware-acceleration.ts +341 -0
  101. package/src/hooks/use-input-accessibility.ts +455 -0
  102. package/src/hooks/use-input-performance.ts +506 -0
  103. package/src/hooks/use-layout-performance.ts +319 -0
  104. package/src/hooks/use-loading-accessibility.ts +535 -0
  105. package/src/hooks/use-loading-performance.ts +473 -0
  106. package/src/hooks/use-memory-usage.ts +287 -0
  107. package/src/hooks/use-mobile-form-layout.ts +464 -0
  108. package/src/hooks/use-mobile-form-validation.ts +518 -0
  109. package/src/hooks/use-mobile-keyboard-optimization.ts +472 -0
  110. package/src/hooks/use-mobile-layout.ts +302 -0
  111. package/src/hooks/use-mobile-optimization.ts +406 -0
  112. package/src/hooks/use-mobile-skeleton.ts +402 -0
  113. package/src/hooks/use-mobile-touch.ts +414 -0
  114. package/src/hooks/use-performance-throttling.ts +348 -0
  115. package/src/hooks/use-performance.ts +316 -0
  116. package/src/hooks/use-reusable-architecture.ts +414 -0
  117. package/src/hooks/use-semantic-input-types.ts +357 -0
  118. package/src/hooks/use-semantic-input.ts +565 -0
  119. package/src/hooks/use-tablet-layout.ts +384 -0
  120. package/src/hooks/use-touch-friendly-input.ts +524 -0
  121. package/src/hooks/use-touch-friendly-interface.ts +331 -0
  122. package/src/hooks/use-touch-optimization.ts +375 -0
  123. package/src/index.ts +279 -279
  124. package/src/lib/utils.ts +6 -0
  125. package/src/themes/README.md +272 -0
  126. package/src/themes/ThemeContext.tsx +31 -0
  127. package/src/themes/ThemeProvider.tsx +232 -0
  128. package/src/themes/accessibility/index.ts +27 -0
  129. package/src/themes/accessibility.ts +259 -0
  130. package/src/themes/aria-patterns.ts +420 -0
  131. package/src/themes/base-themes.ts +55 -0
  132. package/src/themes/colorManager.ts +380 -0
  133. package/src/themes/examples/dark-theme.ts +154 -0
  134. package/src/themes/examples/minimal-theme.ts +108 -0
  135. package/src/themes/focus-management.ts +701 -0
  136. package/src/themes/fontLoader.ts +201 -0
  137. package/src/themes/high-contrast.ts +621 -0
  138. package/src/themes/index.ts +19 -0
  139. package/src/themes/inheritance.ts +227 -0
  140. package/src/themes/keyboard-navigation.ts +550 -0
  141. package/src/themes/motion-reduction.ts +662 -0
  142. package/src/themes/navigation.ts +238 -0
  143. package/src/themes/screen-reader.ts +645 -0
  144. package/src/themes/systemThemeDetector.ts +182 -0
  145. package/src/themes/themeCSSUpdater.ts +262 -0
  146. package/src/themes/themePersistence.ts +238 -0
  147. package/src/themes/themes/default.ts +586 -0
  148. package/src/themes/themes/harvey.ts +554 -0
  149. package/src/themes/themes/stan-design.ts +683 -0
  150. package/src/themes/types.ts +460 -0
  151. package/src/themes/useSystemTheme.ts +48 -0
  152. package/src/themes/useTheme.ts +87 -0
  153. package/src/themes/validation.ts +462 -0
  154. package/src/tokens/index.ts +34 -0
  155. package/src/tokens/tokenExporter.ts +397 -0
  156. package/src/tokens/tokenGenerator.ts +276 -0
  157. package/src/tokens/tokenManager.ts +248 -0
  158. package/src/tokens/tokenValidator.ts +543 -0
  159. package/src/tokens/types.ts +78 -0
  160. package/src/utils/bundle-analyzer.ts +260 -0
  161. package/src/utils/bundle-splitting.ts +483 -0
  162. package/src/utils/lazy-loading.ts +441 -0
  163. package/src/utils/performance-monitor.ts +513 -0
  164. package/src/utils/tree-shaking.ts +274 -0
@@ -0,0 +1,281 @@
1
+ import * as React from "react"
2
+ import { cn } from "../../lib/utils"
3
+ import { Input } from "./input"
4
+
5
+ // Input type mappings for mobile optimization
6
+ export type MobileInputType =
7
+ | 'text'
8
+ | 'email'
9
+ | 'tel'
10
+ | 'url'
11
+ | 'number'
12
+ | 'decimal'
13
+ | 'search'
14
+ | 'password'
15
+ | 'date'
16
+ | 'time'
17
+ | 'datetime-local'
18
+ | 'month'
19
+ | 'week'
20
+
21
+ interface MobileInputConfig {
22
+ /** Semantic input type for better mobile keyboards */
23
+ semanticType?: 'name' | 'username' | 'email' | 'phone' | 'address' | 'city' | 'zipcode' | 'creditcard' | 'amount' | 'age' | 'search' | 'url' | 'newPassword' | 'currentPassword'
24
+ /** Enable autocomplete suggestions */
25
+ enableAutocomplete?: boolean
26
+ /** Custom input mode for mobile keyboards */
27
+ inputMode?: 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'
28
+ /** Enable spell checking (disabled by default for better UX) */
29
+ spellCheck?: boolean
30
+ /** Capitalize behavior */
31
+ autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters'
32
+ /** Auto-correct behavior */
33
+ autoCorrect?: 'on' | 'off'
34
+ }
35
+
36
+ export interface MobileInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
37
+ type?: MobileInputType
38
+ mobileConfig?: MobileInputConfig
39
+ }
40
+
41
+ /**
42
+ * Mobile-optimized input component with smart keyboard handling
43
+ * Automatically configures input attributes for the best mobile experience
44
+ */
45
+ export const MobileInput = React.forwardRef<HTMLInputElement, MobileInputProps>(
46
+ ({ className, type, mobileConfig = {}, ...props }, ref) => {
47
+ const {
48
+ semanticType,
49
+ enableAutocomplete = true,
50
+ inputMode,
51
+ spellCheck,
52
+ autoCapitalize,
53
+ autoCorrect
54
+ } = mobileConfig
55
+
56
+ // Get optimized input attributes based on semantic type
57
+ const getInputAttributes = () => {
58
+ const baseAttributes = {
59
+ spellCheck: spellCheck ?? false,
60
+ autoCapitalize: autoCapitalize ?? 'none',
61
+ autoCorrect: autoCorrect ?? 'off',
62
+ autoComplete: enableAutocomplete ? 'on' : 'off'
63
+ }
64
+
65
+ // If explicit type is provided, don't override it with semantic type
66
+ if (type) {
67
+ return {
68
+ ...baseAttributes,
69
+ type: type,
70
+ inputMode: inputMode || getDefaultInputMode(type as MobileInputType)
71
+ }
72
+ }
73
+
74
+ // Override based on semantic type, but respect custom mobile config
75
+ switch (semanticType) {
76
+ case 'name':
77
+ return {
78
+ ...baseAttributes,
79
+ type: 'text' as const,
80
+ autoComplete: enableAutocomplete ? 'name' : 'off',
81
+ autoCapitalize: autoCapitalize || 'words' as const,
82
+ inputMode: inputMode || 'text' as const
83
+ }
84
+
85
+ case 'username':
86
+ return {
87
+ ...baseAttributes,
88
+ type: 'text' as const,
89
+ autoComplete: enableAutocomplete ? 'username' : 'off',
90
+ autoCapitalize: autoCapitalize || 'none' as const,
91
+ inputMode: inputMode || 'text' as const
92
+ }
93
+
94
+ case 'email':
95
+ return {
96
+ ...baseAttributes,
97
+ type: 'email' as const,
98
+ autoComplete: enableAutocomplete ? 'email' : 'off',
99
+ autoCapitalize: autoCapitalize || 'none' as const,
100
+ inputMode: inputMode || 'email' as const,
101
+ spellCheck: spellCheck ?? false
102
+ }
103
+
104
+ case 'phone':
105
+ return {
106
+ ...baseAttributes,
107
+ type: 'tel' as const,
108
+ autoComplete: enableAutocomplete ? 'tel' : 'off',
109
+ autoCapitalize: autoCapitalize || 'none' as const,
110
+ inputMode: inputMode || 'tel' as const,
111
+ spellCheck: spellCheck ?? false
112
+ }
113
+
114
+ case 'address':
115
+ return {
116
+ ...baseAttributes,
117
+ type: 'text' as const,
118
+ autoComplete: enableAutocomplete ? 'street-address' : 'off',
119
+ autoCapitalize: autoCapitalize || 'words' as const,
120
+ inputMode: inputMode || 'text' as const
121
+ }
122
+
123
+ case 'city':
124
+ return {
125
+ ...baseAttributes,
126
+ type: 'text' as const,
127
+ autoComplete: enableAutocomplete ? 'address-level2' : 'off',
128
+ autoCapitalize: autoCapitalize || 'words' as const,
129
+ inputMode: inputMode || 'text' as const
130
+ }
131
+
132
+ case 'zipcode':
133
+ return {
134
+ ...baseAttributes,
135
+ type: 'text' as const,
136
+ autoComplete: enableAutocomplete ? 'postal-code' : 'off',
137
+ autoCapitalize: autoCapitalize || 'none' as const,
138
+ inputMode: inputMode || 'numeric' as const,
139
+ spellCheck: spellCheck ?? false
140
+ }
141
+
142
+ case 'creditcard':
143
+ return {
144
+ ...baseAttributes,
145
+ type: 'text' as const,
146
+ autoComplete: enableAutocomplete ? 'cc-number' : 'off',
147
+ autoCapitalize: autoCapitalize || 'none' as const,
148
+ inputMode: inputMode || 'numeric' as const,
149
+ spellCheck: spellCheck ?? false
150
+ }
151
+
152
+ case 'amount':
153
+ return {
154
+ ...baseAttributes,
155
+ type: 'number' as const,
156
+ autoComplete: 'off',
157
+ autoCapitalize: autoCapitalize || 'none' as const,
158
+ inputMode: inputMode || 'decimal' as const,
159
+ spellCheck: spellCheck ?? false
160
+ }
161
+
162
+ case 'age':
163
+ return {
164
+ ...baseAttributes,
165
+ type: 'text' as const,
166
+ autoComplete: enableAutocomplete ? 'bday-year' : 'off',
167
+ autoCapitalize: autoCapitalize || 'none' as const,
168
+ inputMode: inputMode || 'numeric' as const,
169
+ spellCheck: spellCheck ?? false
170
+ }
171
+
172
+ case 'search':
173
+ return {
174
+ ...baseAttributes,
175
+ type: 'search' as const,
176
+ autoComplete: 'off',
177
+ autoCapitalize: autoCapitalize || 'none' as const,
178
+ inputMode: inputMode || 'search' as const
179
+ }
180
+
181
+ case 'url':
182
+ return {
183
+ ...baseAttributes,
184
+ type: 'url' as const,
185
+ autoComplete: enableAutocomplete ? 'url' : 'off',
186
+ autoCapitalize: autoCapitalize || 'none' as const,
187
+ inputMode: inputMode || 'url' as const,
188
+ spellCheck: spellCheck ?? false
189
+ }
190
+
191
+ case 'newPassword':
192
+ return {
193
+ ...baseAttributes,
194
+ type: 'password' as const,
195
+ autoComplete: enableAutocomplete ? 'new-password' : 'off',
196
+ autoCapitalize: autoCapitalize || 'none' as const,
197
+ inputMode: inputMode || 'text' as const,
198
+ spellCheck: spellCheck ?? false
199
+ }
200
+
201
+ case 'currentPassword':
202
+ return {
203
+ ...baseAttributes,
204
+ type: 'password' as const,
205
+ autoComplete: enableAutocomplete ? 'current-password' : 'off',
206
+ autoCapitalize: autoCapitalize || 'none' as const,
207
+ inputMode: inputMode || 'text' as const,
208
+ spellCheck: spellCheck ?? false
209
+ }
210
+
211
+ default:
212
+ // Use provided type or fallback settings
213
+ const finalInputMode = inputMode || getDefaultInputMode(type || 'text')
214
+ return {
215
+ ...baseAttributes,
216
+ type: type || 'text',
217
+ inputMode: finalInputMode
218
+ }
219
+ }
220
+ }
221
+
222
+ const getDefaultInputMode = (inputType: MobileInputType): string => {
223
+ switch (inputType) {
224
+ case 'email': return 'email'
225
+ case 'tel': return 'tel'
226
+ case 'url': return 'url'
227
+ case 'number':
228
+ case 'decimal': return 'decimal'
229
+ case 'search': return 'search'
230
+ default: return 'text'
231
+ }
232
+ }
233
+
234
+ const inputAttributes = getInputAttributes()
235
+
236
+ return (
237
+ <Input
238
+ className={cn(
239
+ "coach-stan-mobile-input",
240
+ // Add mobile-specific styling
241
+ "touch-manipulation", // Disable double-tap zoom
242
+ className
243
+ )}
244
+ ref={ref}
245
+ {...inputAttributes}
246
+ // Ensure mobile config doesn't override explicit props
247
+ type={type || inputAttributes.type}
248
+ inputMode={(props.inputMode || inputAttributes.inputMode) as React.InputHTMLAttributes<HTMLInputElement>['inputMode']}
249
+ autoComplete={props.autoComplete || inputAttributes.autoComplete}
250
+ autoCapitalize={props.autoCapitalize || inputAttributes.autoCapitalize}
251
+ autoCorrect={props.autoCorrect || inputAttributes.autoCorrect}
252
+ spellCheck={props.spellCheck ?? inputAttributes.spellCheck}
253
+ {...props}
254
+ size="md"
255
+ />
256
+ )
257
+ }
258
+ )
259
+
260
+ MobileInput.displayName = "MobileInput"
261
+
262
+ // Utility function to get optimal mobile input props for common scenarios
263
+ export const getMobileInputProps = (semanticType: MobileInputConfig['semanticType']): MobileInputConfig => {
264
+ return { semanticType, enableAutocomplete: true }
265
+ }
266
+
267
+ // Common mobile input configurations
268
+ export const mobileInputConfigs = {
269
+ name: { semanticType: 'name' as const },
270
+ email: { semanticType: 'email' as const },
271
+ phone: { semanticType: 'phone' as const },
272
+ address: { semanticType: 'address' as const },
273
+ city: { semanticType: 'city' as const },
274
+ zipcode: { semanticType: 'zipcode' as const },
275
+ creditCard: { semanticType: 'creditcard' as const },
276
+ amount: { semanticType: 'amount' as const },
277
+ search: { semanticType: 'search' as const },
278
+ url: { semanticType: 'url' as const },
279
+ newPassword: { semanticType: 'newPassword' as const },
280
+ currentPassword: { semanticType: 'currentPassword' as const }
281
+ } as const