@qwickapps/react-framework 1.5.6 → 1.5.7
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.
- package/dist/components/QwickApp.d.ts.map +1 -1
- package/dist/contexts/NavigationContext.d.ts.map +1 -1
- package/dist/hooks/useBaseProps.d.ts +12 -1161
- package/dist/hooks/useBaseProps.d.ts.map +1 -1
- package/dist/index.esm.js +387 -232
- package/dist/index.js +385 -230
- package/dist/palettes/manifest.json +19 -19
- package/dist/palettes/palette-autumn.1.4.9.css +172 -0
- package/dist/palettes/palette-autumn.1.4.9.min.css +1 -0
- package/dist/palettes/palette-autumn.1.5.0.css +172 -0
- package/dist/palettes/palette-autumn.1.5.0.min.css +1 -0
- package/dist/palettes/palette-autumn.1.5.1.css +172 -0
- package/dist/palettes/palette-autumn.1.5.1.min.css +1 -0
- package/dist/palettes/palette-autumn.1.5.2.css +172 -0
- package/dist/palettes/palette-autumn.1.5.2.min.css +1 -0
- package/dist/palettes/palette-autumn.1.5.3.css +172 -0
- package/dist/palettes/palette-autumn.1.5.3.min.css +1 -0
- package/dist/palettes/palette-autumn.1.5.4.css +172 -0
- package/dist/palettes/palette-autumn.1.5.4.min.css +1 -0
- package/dist/palettes/palette-autumn.1.5.5.css +172 -0
- package/dist/palettes/palette-autumn.1.5.5.min.css +1 -0
- package/dist/palettes/palette-autumn.1.5.7.css +172 -0
- package/dist/palettes/palette-autumn.1.5.7.min.css +1 -0
- package/dist/palettes/palette-cosmic.1.4.9.css +172 -0
- package/dist/palettes/palette-cosmic.1.4.9.min.css +1 -0
- package/dist/palettes/palette-cosmic.1.5.0.css +172 -0
- package/dist/palettes/palette-cosmic.1.5.0.min.css +1 -0
- package/dist/palettes/palette-cosmic.1.5.1.css +172 -0
- package/dist/palettes/palette-cosmic.1.5.1.min.css +1 -0
- package/dist/palettes/palette-cosmic.1.5.2.css +172 -0
- package/dist/palettes/palette-cosmic.1.5.2.min.css +1 -0
- package/dist/palettes/palette-cosmic.1.5.3.css +172 -0
- package/dist/palettes/palette-cosmic.1.5.3.min.css +1 -0
- package/dist/palettes/palette-cosmic.1.5.4.css +172 -0
- package/dist/palettes/palette-cosmic.1.5.4.min.css +1 -0
- package/dist/palettes/palette-cosmic.1.5.5.css +172 -0
- package/dist/palettes/palette-cosmic.1.5.5.min.css +1 -0
- package/dist/palettes/palette-cosmic.1.5.7.css +172 -0
- package/dist/palettes/palette-cosmic.1.5.7.min.css +1 -0
- package/dist/palettes/palette-default.1.4.9.css +178 -0
- package/dist/palettes/palette-default.1.4.9.min.css +1 -0
- package/dist/palettes/palette-default.1.5.0.css +178 -0
- package/dist/palettes/palette-default.1.5.0.min.css +1 -0
- package/dist/palettes/palette-default.1.5.1.css +178 -0
- package/dist/palettes/palette-default.1.5.1.min.css +1 -0
- package/dist/palettes/palette-default.1.5.2.css +178 -0
- package/dist/palettes/palette-default.1.5.2.min.css +1 -0
- package/dist/palettes/palette-default.1.5.3.css +178 -0
- package/dist/palettes/palette-default.1.5.3.min.css +1 -0
- package/dist/palettes/palette-default.1.5.4.css +178 -0
- package/dist/palettes/palette-default.1.5.4.min.css +1 -0
- package/dist/palettes/palette-default.1.5.5.css +178 -0
- package/dist/palettes/palette-default.1.5.5.min.css +1 -0
- package/dist/palettes/palette-default.1.5.7.css +178 -0
- package/dist/palettes/palette-default.1.5.7.min.css +1 -0
- package/dist/palettes/palette-ocean.1.4.9.css +172 -0
- package/dist/palettes/palette-ocean.1.4.9.min.css +1 -0
- package/dist/palettes/palette-ocean.1.5.0.css +172 -0
- package/dist/palettes/palette-ocean.1.5.0.min.css +1 -0
- package/dist/palettes/palette-ocean.1.5.1.css +172 -0
- package/dist/palettes/palette-ocean.1.5.1.min.css +1 -0
- package/dist/palettes/palette-ocean.1.5.2.css +172 -0
- package/dist/palettes/palette-ocean.1.5.2.min.css +1 -0
- package/dist/palettes/palette-ocean.1.5.3.css +172 -0
- package/dist/palettes/palette-ocean.1.5.3.min.css +1 -0
- package/dist/palettes/palette-ocean.1.5.4.css +172 -0
- package/dist/palettes/palette-ocean.1.5.4.min.css +1 -0
- package/dist/palettes/palette-ocean.1.5.5.css +172 -0
- package/dist/palettes/palette-ocean.1.5.5.min.css +1 -0
- package/dist/palettes/palette-ocean.1.5.7.css +172 -0
- package/dist/palettes/palette-ocean.1.5.7.min.css +1 -0
- package/dist/palettes/palette-spring.1.4.9.css +160 -0
- package/dist/palettes/palette-spring.1.4.9.min.css +1 -0
- package/dist/palettes/palette-spring.1.5.0.css +160 -0
- package/dist/palettes/palette-spring.1.5.0.min.css +1 -0
- package/dist/palettes/palette-spring.1.5.1.css +160 -0
- package/dist/palettes/palette-spring.1.5.1.min.css +1 -0
- package/dist/palettes/palette-spring.1.5.2.css +160 -0
- package/dist/palettes/palette-spring.1.5.2.min.css +1 -0
- package/dist/palettes/palette-spring.1.5.3.css +166 -0
- package/dist/palettes/palette-spring.1.5.3.min.css +1 -0
- package/dist/palettes/palette-spring.1.5.4.css +166 -0
- package/dist/palettes/palette-spring.1.5.4.min.css +1 -0
- package/dist/palettes/palette-spring.1.5.5.css +166 -0
- package/dist/palettes/palette-spring.1.5.5.min.css +1 -0
- package/dist/palettes/palette-spring.1.5.7.css +166 -0
- package/dist/palettes/palette-spring.1.5.7.min.css +1 -0
- package/dist/palettes/palette-winter.1.4.9.css +172 -0
- package/dist/palettes/palette-winter.1.4.9.min.css +1 -0
- package/dist/palettes/palette-winter.1.5.0.css +172 -0
- package/dist/palettes/palette-winter.1.5.0.min.css +1 -0
- package/dist/palettes/palette-winter.1.5.1.css +172 -0
- package/dist/palettes/palette-winter.1.5.1.min.css +1 -0
- package/dist/palettes/palette-winter.1.5.2.css +172 -0
- package/dist/palettes/palette-winter.1.5.2.min.css +1 -0
- package/dist/palettes/palette-winter.1.5.3.css +172 -0
- package/dist/palettes/palette-winter.1.5.3.min.css +1 -0
- package/dist/palettes/palette-winter.1.5.4.css +172 -0
- package/dist/palettes/palette-winter.1.5.4.min.css +1 -0
- package/dist/palettes/palette-winter.1.5.5.css +172 -0
- package/dist/palettes/palette-winter.1.5.5.min.css +1 -0
- package/dist/palettes/palette-winter.1.5.7.css +172 -0
- package/dist/palettes/palette-winter.1.5.7.min.css +1 -0
- package/dist/utils/iconMap.d.ts +21 -8
- package/dist/utils/iconMap.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/utils/iconMap.test.tsx +197 -0
- package/src/components/QwickApp.tsx +8 -1
- package/src/contexts/NavigationContext.tsx +21 -15
- package/src/utils/iconMap.tsx +209 -153
package/dist/index.js
CHANGED
|
@@ -3075,181 +3075,189 @@ Code.transformCodeHighlight = element => {
|
|
|
3075
3075
|
};
|
|
3076
3076
|
|
|
3077
3077
|
/**
|
|
3078
|
-
* Centralized icon registry mapping icon names to their representations
|
|
3079
|
-
*
|
|
3078
|
+
* Centralized icon registry mapping icon names to their representations.
|
|
3079
|
+
* Sorted alphabetically by category, then by key within each category.
|
|
3080
|
+
*
|
|
3081
|
+
* For icons not in this map, getIconComponent() will return a HelpOutline fallback
|
|
3082
|
+
* and log a warning. Use registerIcon() to add app-specific icons at runtime.
|
|
3080
3083
|
*/
|
|
3081
3084
|
const iconMap = {
|
|
3082
|
-
//
|
|
3083
|
-
home: {
|
|
3084
|
-
emoji: '🏠',
|
|
3085
|
-
component: iconsMaterial.Home
|
|
3086
|
-
},
|
|
3087
|
-
menu: {
|
|
3088
|
-
emoji: '☰',
|
|
3089
|
-
component: iconsMaterial.Menu
|
|
3090
|
-
},
|
|
3091
|
-
dashboard: {
|
|
3092
|
-
emoji: '📊',
|
|
3093
|
-
component: iconsMaterial.Dashboard
|
|
3094
|
-
},
|
|
3095
|
-
// Information & Help
|
|
3096
|
-
info: {
|
|
3097
|
-
emoji: 'ℹ️',
|
|
3098
|
-
component: iconsMaterial.Info
|
|
3099
|
-
},
|
|
3100
|
-
about: {
|
|
3101
|
-
emoji: 'ℹ️',
|
|
3102
|
-
component: iconsMaterial.Info
|
|
3103
|
-
},
|
|
3104
|
-
help: {
|
|
3105
|
-
emoji: '❓',
|
|
3106
|
-
component: iconsMaterial.Help
|
|
3107
|
-
},
|
|
3108
|
-
book: {
|
|
3109
|
-
emoji: '📖',
|
|
3110
|
-
component: iconsMaterial.Book
|
|
3111
|
-
},
|
|
3112
|
-
// Communication
|
|
3113
|
-
email: {
|
|
3114
|
-
emoji: '📧',
|
|
3115
|
-
component: iconsMaterial.Email
|
|
3116
|
-
},
|
|
3117
|
-
contact: {
|
|
3118
|
-
emoji: '📧',
|
|
3119
|
-
component: iconsMaterial.Email
|
|
3120
|
-
},
|
|
3121
|
-
phone: {
|
|
3122
|
-
emoji: '📱',
|
|
3123
|
-
component: iconsMaterial.Phone
|
|
3124
|
-
},
|
|
3125
|
-
send: {
|
|
3126
|
-
emoji: '📤',
|
|
3127
|
-
component: iconsMaterial.Send
|
|
3128
|
-
},
|
|
3129
|
-
// Actions
|
|
3085
|
+
// === Actions ===
|
|
3130
3086
|
add: {
|
|
3131
3087
|
emoji: '➕',
|
|
3132
3088
|
component: iconsMaterial.Add
|
|
3133
3089
|
},
|
|
3134
|
-
edit: {
|
|
3135
|
-
emoji: '✏️',
|
|
3136
|
-
component: iconsMaterial.Edit
|
|
3137
|
-
},
|
|
3138
|
-
delete: {
|
|
3139
|
-
emoji: '🗑️',
|
|
3140
|
-
component: iconsMaterial.Delete
|
|
3141
|
-
},
|
|
3142
|
-
save: {
|
|
3143
|
-
emoji: '💾',
|
|
3144
|
-
component: iconsMaterial.Save
|
|
3145
|
-
},
|
|
3146
3090
|
check: {
|
|
3147
3091
|
emoji: '✓',
|
|
3148
3092
|
component: iconsMaterial.Check
|
|
3149
3093
|
},
|
|
3094
|
+
check_circle: {
|
|
3095
|
+
emoji: '✅',
|
|
3096
|
+
component: iconsMaterial.CheckCircle
|
|
3097
|
+
},
|
|
3150
3098
|
close: {
|
|
3151
3099
|
emoji: '✕',
|
|
3152
3100
|
component: iconsMaterial.Close
|
|
3153
3101
|
},
|
|
3154
|
-
|
|
3155
|
-
|
|
3156
|
-
|
|
3157
|
-
component: iconsMaterial.ArrowForward
|
|
3102
|
+
delete: {
|
|
3103
|
+
emoji: '🗑️',
|
|
3104
|
+
component: iconsMaterial.Delete
|
|
3158
3105
|
},
|
|
3159
|
-
|
|
3160
|
-
emoji: '
|
|
3161
|
-
component: iconsMaterial.
|
|
3106
|
+
edit: {
|
|
3107
|
+
emoji: '✏️',
|
|
3108
|
+
component: iconsMaterial.Edit
|
|
3109
|
+
},
|
|
3110
|
+
refresh: {
|
|
3111
|
+
emoji: '🔄',
|
|
3112
|
+
component: iconsMaterial.Refresh
|
|
3113
|
+
},
|
|
3114
|
+
rotate_right: {
|
|
3115
|
+
emoji: '🔄',
|
|
3116
|
+
component: iconsMaterial.RotateRight
|
|
3117
|
+
},
|
|
3118
|
+
save: {
|
|
3119
|
+
emoji: '💾',
|
|
3120
|
+
component: iconsMaterial.Save
|
|
3162
3121
|
},
|
|
3163
|
-
// Content
|
|
3164
3122
|
search: {
|
|
3165
3123
|
emoji: '🔍',
|
|
3166
3124
|
component: iconsMaterial.Search
|
|
3167
3125
|
},
|
|
3126
|
+
send: {
|
|
3127
|
+
emoji: '📤',
|
|
3128
|
+
component: iconsMaterial.Send
|
|
3129
|
+
},
|
|
3168
3130
|
share: {
|
|
3169
3131
|
emoji: '🔗',
|
|
3170
3132
|
component: iconsMaterial.Share
|
|
3171
3133
|
},
|
|
3172
|
-
|
|
3173
|
-
emoji: '
|
|
3174
|
-
component: iconsMaterial.
|
|
3134
|
+
sync: {
|
|
3135
|
+
emoji: '🔄',
|
|
3136
|
+
component: iconsMaterial.Sync
|
|
3175
3137
|
},
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3138
|
+
// === Authentication & Security ===
|
|
3139
|
+
block: {
|
|
3140
|
+
emoji: '🚫',
|
|
3141
|
+
component: iconsMaterial.Block
|
|
3179
3142
|
},
|
|
3180
|
-
|
|
3181
|
-
emoji: '
|
|
3182
|
-
component: iconsMaterial.
|
|
3143
|
+
key: {
|
|
3144
|
+
emoji: '🔑',
|
|
3145
|
+
component: iconsMaterial.Key
|
|
3183
3146
|
},
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
component: iconsMaterial.Person
|
|
3147
|
+
lock: {
|
|
3148
|
+
emoji: '🔒',
|
|
3149
|
+
component: iconsMaterial.Lock
|
|
3188
3150
|
},
|
|
3189
|
-
|
|
3190
|
-
emoji: '
|
|
3191
|
-
component: iconsMaterial.
|
|
3151
|
+
lock_open: {
|
|
3152
|
+
emoji: '🔓',
|
|
3153
|
+
component: iconsMaterial.LockOpen
|
|
3192
3154
|
},
|
|
3193
|
-
|
|
3194
|
-
emoji: '
|
|
3195
|
-
component: iconsMaterial.
|
|
3155
|
+
lockopen: {
|
|
3156
|
+
emoji: '🔓',
|
|
3157
|
+
component: iconsMaterial.LockOpen
|
|
3196
3158
|
},
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3159
|
+
// alias
|
|
3160
|
+
login: {
|
|
3161
|
+
emoji: '🔑',
|
|
3162
|
+
component: iconsMaterial.Login
|
|
3200
3163
|
},
|
|
3201
|
-
|
|
3202
|
-
emoji: '
|
|
3203
|
-
component: iconsMaterial.
|
|
3164
|
+
logout: {
|
|
3165
|
+
emoji: '🚪',
|
|
3166
|
+
component: iconsMaterial.Logout
|
|
3167
|
+
},
|
|
3168
|
+
security: {
|
|
3169
|
+
emoji: '🔐',
|
|
3170
|
+
component: iconsMaterial.Security
|
|
3171
|
+
},
|
|
3172
|
+
shield: {
|
|
3173
|
+
emoji: '🛡️',
|
|
3174
|
+
component: iconsMaterial.Shield
|
|
3204
3175
|
},
|
|
3205
3176
|
verified_user: {
|
|
3206
3177
|
emoji: '✅',
|
|
3207
3178
|
component: iconsMaterial.VerifiedUser
|
|
3208
3179
|
},
|
|
3209
|
-
|
|
3180
|
+
visibility: {
|
|
3181
|
+
emoji: '👁️',
|
|
3182
|
+
component: iconsMaterial.Visibility
|
|
3183
|
+
},
|
|
3184
|
+
visibility_off: {
|
|
3185
|
+
emoji: '🙈',
|
|
3186
|
+
component: iconsMaterial.VisibilityOff
|
|
3187
|
+
},
|
|
3188
|
+
visibilityoff: {
|
|
3189
|
+
emoji: '🙈',
|
|
3190
|
+
component: iconsMaterial.VisibilityOff
|
|
3191
|
+
},
|
|
3192
|
+
// alias
|
|
3193
|
+
vpn_key: {
|
|
3194
|
+
emoji: '🔐',
|
|
3195
|
+
component: iconsMaterial.VpnKey
|
|
3196
|
+
},
|
|
3197
|
+
// === Business & Commerce ===
|
|
3198
|
+
attach_money: {
|
|
3199
|
+
emoji: '💰',
|
|
3200
|
+
component: iconsMaterial.AttachMoney
|
|
3201
|
+
},
|
|
3202
|
+
attachmoney: {
|
|
3203
|
+
emoji: '💰',
|
|
3204
|
+
component: iconsMaterial.AttachMoney
|
|
3205
|
+
},
|
|
3206
|
+
// alias
|
|
3210
3207
|
business: {
|
|
3211
3208
|
emoji: '🏢',
|
|
3212
3209
|
component: iconsMaterial.Business
|
|
3213
3210
|
},
|
|
3214
|
-
|
|
3211
|
+
cart: {
|
|
3215
3212
|
emoji: '🛒',
|
|
3216
3213
|
component: iconsMaterial.ShoppingCart
|
|
3217
3214
|
},
|
|
3218
|
-
|
|
3215
|
+
// alias
|
|
3216
|
+
shopping_cart: {
|
|
3219
3217
|
emoji: '🛒',
|
|
3220
3218
|
component: iconsMaterial.ShoppingCart
|
|
3221
3219
|
},
|
|
3222
|
-
|
|
3223
|
-
emoji: '
|
|
3224
|
-
component: iconsMaterial.
|
|
3220
|
+
shoppingcart: {
|
|
3221
|
+
emoji: '🛒',
|
|
3222
|
+
component: iconsMaterial.ShoppingCart
|
|
3225
3223
|
},
|
|
3226
|
-
//
|
|
3227
|
-
|
|
3228
|
-
emoji: '
|
|
3229
|
-
component: iconsMaterial.
|
|
3224
|
+
// alias
|
|
3225
|
+
work: {
|
|
3226
|
+
emoji: '💼',
|
|
3227
|
+
component: iconsMaterial.Work
|
|
3230
3228
|
},
|
|
3231
|
-
|
|
3232
|
-
emoji: '
|
|
3233
|
-
component: iconsMaterial.
|
|
3229
|
+
workspace_premium: {
|
|
3230
|
+
emoji: '⭐',
|
|
3231
|
+
component: iconsMaterial.WorkspacePremium
|
|
3234
3232
|
},
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
|
|
3233
|
+
// === Communication ===
|
|
3234
|
+
contact: {
|
|
3235
|
+
emoji: '📧',
|
|
3236
|
+
component: iconsMaterial.Email
|
|
3238
3237
|
},
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
|
|
3238
|
+
// alias
|
|
3239
|
+
email: {
|
|
3240
|
+
emoji: '📧',
|
|
3241
|
+
component: iconsMaterial.Email
|
|
3242
3242
|
},
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
component: iconsMaterial.Settings
|
|
3243
|
+
mail: {
|
|
3244
|
+
emoji: '📧',
|
|
3245
|
+
component: iconsMaterial.Email
|
|
3247
3246
|
},
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3247
|
+
// alias
|
|
3248
|
+
notifications: {
|
|
3249
|
+
emoji: '🔔',
|
|
3250
|
+
component: iconsMaterial.Notifications
|
|
3251
3251
|
},
|
|
3252
|
-
|
|
3252
|
+
phone: {
|
|
3253
|
+
emoji: '📱',
|
|
3254
|
+
component: iconsMaterial.Phone
|
|
3255
|
+
},
|
|
3256
|
+
support_agent: {
|
|
3257
|
+
emoji: '🛎️',
|
|
3258
|
+
component: iconsMaterial.SupportAgent
|
|
3259
|
+
},
|
|
3260
|
+
// === Content & Media ===
|
|
3253
3261
|
article: {
|
|
3254
3262
|
emoji: '📰',
|
|
3255
3263
|
component: iconsMaterial.Article
|
|
@@ -3258,166 +3266,297 @@ const iconMap = {
|
|
|
3258
3266
|
emoji: '📝',
|
|
3259
3267
|
component: iconsMaterial.Book
|
|
3260
3268
|
},
|
|
3269
|
+
// alias
|
|
3270
|
+
book: {
|
|
3271
|
+
emoji: '📖',
|
|
3272
|
+
component: iconsMaterial.Book
|
|
3273
|
+
},
|
|
3274
|
+
gallery: {
|
|
3275
|
+
emoji: '🖼️',
|
|
3276
|
+
component: iconsMaterial.InsertPhoto
|
|
3277
|
+
},
|
|
3278
|
+
// alias
|
|
3279
|
+
image: {
|
|
3280
|
+
emoji: '🖼️',
|
|
3281
|
+
component: iconsMaterial.InsertPhoto
|
|
3282
|
+
},
|
|
3283
|
+
insert_photo: {
|
|
3284
|
+
emoji: '🖼️',
|
|
3285
|
+
component: iconsMaterial.InsertPhoto
|
|
3286
|
+
},
|
|
3287
|
+
library_books: {
|
|
3288
|
+
emoji: '📚',
|
|
3289
|
+
component: iconsMaterial.LibraryBooks
|
|
3290
|
+
},
|
|
3261
3291
|
news: {
|
|
3262
3292
|
emoji: '📰',
|
|
3263
|
-
component: iconsMaterial.
|
|
3293
|
+
component: iconsMaterial.Article
|
|
3264
3294
|
},
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3295
|
+
// alias
|
|
3296
|
+
photo_library: {
|
|
3297
|
+
emoji: '📸',
|
|
3298
|
+
component: iconsMaterial.PhotoLibrary
|
|
3268
3299
|
},
|
|
3269
|
-
|
|
3270
|
-
emoji: '
|
|
3271
|
-
component: iconsMaterial.
|
|
3300
|
+
play: {
|
|
3301
|
+
emoji: '▶️',
|
|
3302
|
+
component: iconsMaterial.PlayArrow
|
|
3303
|
+
},
|
|
3304
|
+
// alias
|
|
3305
|
+
play_arrow: {
|
|
3306
|
+
emoji: '▶️',
|
|
3307
|
+
component: iconsMaterial.PlayArrow
|
|
3272
3308
|
},
|
|
3273
3309
|
portfolio: {
|
|
3274
3310
|
emoji: '💼',
|
|
3275
3311
|
component: iconsMaterial.Business
|
|
3276
3312
|
},
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3313
|
+
// alias
|
|
3314
|
+
// === Development & Technology ===
|
|
3315
|
+
architecture: {
|
|
3316
|
+
emoji: '🏛️',
|
|
3317
|
+
component: iconsMaterial.Architecture
|
|
3280
3318
|
},
|
|
3281
|
-
|
|
3282
|
-
emoji: '
|
|
3283
|
-
component: iconsMaterial.
|
|
3319
|
+
autorenew: {
|
|
3320
|
+
emoji: '🔄',
|
|
3321
|
+
component: iconsMaterial.Autorenew
|
|
3284
3322
|
},
|
|
3285
|
-
|
|
3286
|
-
emoji: '
|
|
3287
|
-
component: iconsMaterial.
|
|
3323
|
+
cloud: {
|
|
3324
|
+
emoji: '☁️',
|
|
3325
|
+
component: iconsMaterial.Cloud
|
|
3288
3326
|
},
|
|
3289
|
-
|
|
3290
|
-
emoji: '
|
|
3291
|
-
component: iconsMaterial.
|
|
3327
|
+
cloud_download: {
|
|
3328
|
+
emoji: '☁️⬇️',
|
|
3329
|
+
component: iconsMaterial.CloudDownload
|
|
3292
3330
|
},
|
|
3293
|
-
|
|
3294
|
-
emoji: '
|
|
3295
|
-
component: iconsMaterial.
|
|
3331
|
+
cloud_upload: {
|
|
3332
|
+
emoji: '☁️⬆️',
|
|
3333
|
+
component: iconsMaterial.CloudUpload
|
|
3296
3334
|
},
|
|
3297
|
-
|
|
3298
|
-
emoji: '
|
|
3299
|
-
component: iconsMaterial.
|
|
3335
|
+
clouddownload: {
|
|
3336
|
+
emoji: '☁️⬇️',
|
|
3337
|
+
component: iconsMaterial.CloudDownload
|
|
3338
|
+
},
|
|
3339
|
+
// alias
|
|
3340
|
+
cloudupload: {
|
|
3341
|
+
emoji: '☁️⬆️',
|
|
3342
|
+
component: iconsMaterial.CloudUpload
|
|
3300
3343
|
},
|
|
3301
|
-
//
|
|
3344
|
+
// alias
|
|
3302
3345
|
code: {
|
|
3303
3346
|
emoji: '💻',
|
|
3304
3347
|
component: iconsMaterial.Code
|
|
3305
3348
|
},
|
|
3306
|
-
|
|
3307
|
-
emoji: '
|
|
3308
|
-
component: iconsMaterial.
|
|
3349
|
+
computer: {
|
|
3350
|
+
emoji: '💻',
|
|
3351
|
+
component: iconsMaterial.Computer
|
|
3309
3352
|
},
|
|
3310
|
-
|
|
3311
|
-
emoji: '
|
|
3312
|
-
component: iconsMaterial.
|
|
3353
|
+
construction: {
|
|
3354
|
+
emoji: '🚧',
|
|
3355
|
+
component: iconsMaterial.Construction
|
|
3313
3356
|
},
|
|
3314
3357
|
integration_instructions: {
|
|
3315
3358
|
emoji: '🔌',
|
|
3316
3359
|
component: iconsMaterial.IntegrationInstructions
|
|
3317
3360
|
},
|
|
3318
|
-
|
|
3319
|
-
emoji: '
|
|
3320
|
-
component: iconsMaterial.
|
|
3361
|
+
memory: {
|
|
3362
|
+
emoji: '🧠',
|
|
3363
|
+
component: iconsMaterial.Memory
|
|
3321
3364
|
},
|
|
3322
|
-
|
|
3323
|
-
emoji: '
|
|
3324
|
-
component: iconsMaterial.
|
|
3365
|
+
psychology: {
|
|
3366
|
+
emoji: '🧠',
|
|
3367
|
+
component: iconsMaterial.Psychology
|
|
3368
|
+
},
|
|
3369
|
+
rocket: {
|
|
3370
|
+
emoji: '🚀',
|
|
3371
|
+
component: iconsMaterial.Rocket
|
|
3372
|
+
},
|
|
3373
|
+
storage: {
|
|
3374
|
+
emoji: '💾',
|
|
3375
|
+
component: iconsMaterial.Storage
|
|
3376
|
+
},
|
|
3377
|
+
// === Navigation & Layout ===
|
|
3378
|
+
arrow_back: {
|
|
3379
|
+
emoji: '←',
|
|
3380
|
+
component: iconsMaterial.ArrowBack
|
|
3381
|
+
},
|
|
3382
|
+
arrow_forward: {
|
|
3383
|
+
emoji: '→',
|
|
3384
|
+
component: iconsMaterial.ArrowForward
|
|
3385
|
+
},
|
|
3386
|
+
arrowback: {
|
|
3387
|
+
emoji: '←',
|
|
3388
|
+
component: iconsMaterial.ArrowBack
|
|
3389
|
+
},
|
|
3390
|
+
// alias
|
|
3391
|
+
arrowforward: {
|
|
3392
|
+
emoji: '→',
|
|
3393
|
+
component: iconsMaterial.ArrowForward
|
|
3394
|
+
},
|
|
3395
|
+
// alias
|
|
3396
|
+
dashboard: {
|
|
3397
|
+
emoji: '📊',
|
|
3398
|
+
component: iconsMaterial.Dashboard
|
|
3399
|
+
},
|
|
3400
|
+
download: {
|
|
3401
|
+
emoji: '⬇️',
|
|
3402
|
+
component: iconsMaterial.Download
|
|
3403
|
+
},
|
|
3404
|
+
explore: {
|
|
3405
|
+
emoji: '🧭',
|
|
3406
|
+
component: iconsMaterial.Explore
|
|
3407
|
+
},
|
|
3408
|
+
home: {
|
|
3409
|
+
emoji: '🏠',
|
|
3410
|
+
component: iconsMaterial.Home
|
|
3325
3411
|
},
|
|
3326
3412
|
layers: {
|
|
3327
3413
|
emoji: '📚',
|
|
3328
3414
|
component: iconsMaterial.Layers
|
|
3329
3415
|
},
|
|
3330
|
-
|
|
3331
|
-
emoji: '
|
|
3332
|
-
component: iconsMaterial.
|
|
3416
|
+
menu: {
|
|
3417
|
+
emoji: '☰',
|
|
3418
|
+
component: iconsMaterial.Menu
|
|
3333
3419
|
},
|
|
3334
3420
|
route: {
|
|
3335
3421
|
emoji: '🗺️',
|
|
3336
3422
|
component: iconsMaterial.Route
|
|
3337
3423
|
},
|
|
3338
|
-
|
|
3339
|
-
emoji: '
|
|
3340
|
-
component: iconsMaterial.
|
|
3424
|
+
settings: {
|
|
3425
|
+
emoji: '⚙️',
|
|
3426
|
+
component: iconsMaterial.Settings
|
|
3341
3427
|
},
|
|
3342
|
-
|
|
3343
|
-
emoji: '
|
|
3344
|
-
component: iconsMaterial.
|
|
3428
|
+
trending_up: {
|
|
3429
|
+
emoji: '📈',
|
|
3430
|
+
component: iconsMaterial.TrendingUp
|
|
3345
3431
|
},
|
|
3346
|
-
|
|
3347
|
-
emoji: '
|
|
3348
|
-
component: iconsMaterial.
|
|
3432
|
+
tune: {
|
|
3433
|
+
emoji: '🎛️',
|
|
3434
|
+
component: iconsMaterial.Tune
|
|
3349
3435
|
},
|
|
3350
|
-
//
|
|
3351
|
-
|
|
3352
|
-
emoji: '
|
|
3353
|
-
component: iconsMaterial.
|
|
3436
|
+
// === Products & Inventory ===
|
|
3437
|
+
inventory: {
|
|
3438
|
+
emoji: '📦',
|
|
3439
|
+
component: iconsMaterial.Inventory
|
|
3354
3440
|
},
|
|
3355
|
-
|
|
3356
|
-
emoji: '
|
|
3357
|
-
component: iconsMaterial.
|
|
3441
|
+
inventory_2: {
|
|
3442
|
+
emoji: '📦',
|
|
3443
|
+
component: iconsMaterial.Inventory2
|
|
3358
3444
|
},
|
|
3359
|
-
|
|
3360
|
-
emoji: '
|
|
3361
|
-
component: iconsMaterial.
|
|
3445
|
+
local_offer: {
|
|
3446
|
+
emoji: '🏷️',
|
|
3447
|
+
component: iconsMaterial.LocalOffer
|
|
3362
3448
|
},
|
|
3363
|
-
|
|
3364
|
-
emoji: '
|
|
3365
|
-
component: iconsMaterial.
|
|
3449
|
+
products: {
|
|
3450
|
+
emoji: '🛍️',
|
|
3451
|
+
component: iconsMaterial.ShoppingCart
|
|
3366
3452
|
},
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3453
|
+
// alias
|
|
3454
|
+
services: {
|
|
3455
|
+
emoji: '⚙️',
|
|
3456
|
+
component: iconsMaterial.Settings
|
|
3370
3457
|
},
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3458
|
+
// alias
|
|
3459
|
+
speed: {
|
|
3460
|
+
emoji: '⚡',
|
|
3461
|
+
component: iconsMaterial.Speed
|
|
3374
3462
|
},
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
|
|
3463
|
+
// === Status & Feedback ===
|
|
3464
|
+
about: {
|
|
3465
|
+
emoji: 'ℹ️',
|
|
3466
|
+
component: iconsMaterial.Info
|
|
3378
3467
|
},
|
|
3379
|
-
|
|
3380
|
-
|
|
3381
|
-
|
|
3468
|
+
// alias
|
|
3469
|
+
favorite: {
|
|
3470
|
+
emoji: '❤️',
|
|
3471
|
+
component: iconsMaterial.Favorite
|
|
3382
3472
|
},
|
|
3383
|
-
|
|
3384
|
-
emoji: '
|
|
3385
|
-
component: iconsMaterial.
|
|
3473
|
+
heart: {
|
|
3474
|
+
emoji: '❤️',
|
|
3475
|
+
component: iconsMaterial.Favorite
|
|
3386
3476
|
},
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3477
|
+
// alias
|
|
3478
|
+
help: {
|
|
3479
|
+
emoji: '❓',
|
|
3480
|
+
component: iconsMaterial.Help
|
|
3390
3481
|
},
|
|
3391
|
-
|
|
3392
|
-
emoji: '
|
|
3393
|
-
component: iconsMaterial.
|
|
3394
|
-
}
|
|
3482
|
+
info: {
|
|
3483
|
+
emoji: 'ℹ️',
|
|
3484
|
+
component: iconsMaterial.Info
|
|
3485
|
+
},
|
|
3486
|
+
star: {
|
|
3487
|
+
emoji: '⭐',
|
|
3488
|
+
component: iconsMaterial.Star
|
|
3489
|
+
},
|
|
3490
|
+
// === Users & People ===
|
|
3491
|
+
account_circle: {
|
|
3492
|
+
emoji: '👤',
|
|
3493
|
+
component: iconsMaterial.AccountCircle
|
|
3494
|
+
},
|
|
3495
|
+
group: {
|
|
3496
|
+
emoji: '👥',
|
|
3497
|
+
component: iconsMaterial.Group
|
|
3498
|
+
},
|
|
3499
|
+
manage_accounts: {
|
|
3500
|
+
emoji: '👤',
|
|
3501
|
+
component: iconsMaterial.ManageAccounts
|
|
3502
|
+
},
|
|
3503
|
+
people: {
|
|
3504
|
+
emoji: '👥',
|
|
3505
|
+
component: iconsMaterial.People
|
|
3506
|
+
},
|
|
3507
|
+
person: {
|
|
3508
|
+
emoji: '👤',
|
|
3509
|
+
component: iconsMaterial.Person
|
|
3510
|
+
},
|
|
3511
|
+
person_search: {
|
|
3512
|
+
emoji: '🔍',
|
|
3513
|
+
component: iconsMaterial.PersonSearch
|
|
3514
|
+
},
|
|
3515
|
+
user: {
|
|
3516
|
+
emoji: '👤',
|
|
3517
|
+
component: iconsMaterial.Person
|
|
3518
|
+
},
|
|
3519
|
+
// alias
|
|
3520
|
+
users: {
|
|
3521
|
+
emoji: '👥',
|
|
3522
|
+
component: iconsMaterial.People
|
|
3523
|
+
} // alias
|
|
3395
3524
|
};
|
|
3396
3525
|
/**
|
|
3397
3526
|
* Get emoji representation of an icon
|
|
3398
|
-
* @param iconName - Icon name (case-insensitive)
|
|
3527
|
+
* @param iconName - Icon name (case-insensitive, supports snake_case)
|
|
3399
3528
|
* @param fallback - Fallback emoji if icon not found (default: 🔗)
|
|
3400
3529
|
* @returns Emoji string
|
|
3401
3530
|
*/
|
|
3402
3531
|
function getIconEmoji(iconName, fallback = '🔗') {
|
|
3403
3532
|
if (!iconName) return fallback;
|
|
3404
|
-
const
|
|
3405
|
-
|
|
3533
|
+
const normalized = iconName.toLowerCase();
|
|
3534
|
+
const mapping = iconMap[normalized];
|
|
3535
|
+
return mapping?.emoji || fallback;
|
|
3406
3536
|
}
|
|
3407
3537
|
/**
|
|
3408
|
-
* Get Material-UI component representation of an icon
|
|
3409
|
-
*
|
|
3410
|
-
*
|
|
3538
|
+
* Get Material-UI component representation of an icon.
|
|
3539
|
+
*
|
|
3540
|
+
* Uses the static iconMap for known icons. For unmapped icons,
|
|
3541
|
+
* returns a HelpOutline fallback and logs a warning.
|
|
3542
|
+
*
|
|
3543
|
+
* @param iconName - Icon name (case-insensitive, supports snake_case)
|
|
3544
|
+
* @returns React element (mapped icon or HelpOutline fallback), or null if no name provided
|
|
3411
3545
|
*/
|
|
3412
3546
|
function getIconComponent(iconName) {
|
|
3413
3547
|
if (!iconName) return null;
|
|
3414
|
-
const
|
|
3415
|
-
|
|
3416
|
-
|
|
3417
|
-
|
|
3548
|
+
const normalized = iconName.toLowerCase();
|
|
3549
|
+
const mapping = iconMap[normalized];
|
|
3550
|
+
if (mapping?.component) {
|
|
3551
|
+
const IconComponent = mapping.component;
|
|
3552
|
+
return jsxRuntime.jsx(IconComponent, {});
|
|
3418
3553
|
}
|
|
3419
|
-
|
|
3420
|
-
|
|
3554
|
+
// Fallback: Return HelpOutline icon and warn about unmapped icon
|
|
3555
|
+
// Use registerIcon() to add app-specific icons at runtime
|
|
3556
|
+
{
|
|
3557
|
+
console.warn(`[IconMap] Icon "${iconName}" not found. Add it to iconMap or use registerIcon().`);
|
|
3558
|
+
}
|
|
3559
|
+
return jsxRuntime.jsx(iconsMaterial.HelpOutline, {});
|
|
3421
3560
|
}
|
|
3422
3561
|
/**
|
|
3423
3562
|
* Register a new icon or override an existing one
|
|
@@ -3427,13 +3566,14 @@ function registerIcon(name, mapping) {
|
|
|
3427
3566
|
iconMap[name.toLowerCase()] = mapping;
|
|
3428
3567
|
}
|
|
3429
3568
|
/**
|
|
3430
|
-
* Check if an icon is registered
|
|
3569
|
+
* Check if an icon is registered in the static map
|
|
3570
|
+
* If false, getIconComponent will return HelpOutline fallback
|
|
3431
3571
|
*/
|
|
3432
3572
|
function hasIcon(iconName) {
|
|
3433
3573
|
return iconName.toLowerCase() in iconMap;
|
|
3434
3574
|
}
|
|
3435
3575
|
/**
|
|
3436
|
-
* Get all registered icon names
|
|
3576
|
+
* Get all registered icon names from the static map
|
|
3437
3577
|
*/
|
|
3438
3578
|
function getRegisteredIcons() {
|
|
3439
3579
|
return Object.keys(iconMap);
|
|
@@ -23375,14 +23515,20 @@ function ReactRouterNavigationProvider({
|
|
|
23375
23515
|
reactRouterNavigate(to);
|
|
23376
23516
|
}
|
|
23377
23517
|
};
|
|
23518
|
+
// Defensive check for location - fall back to window.location if React Router's location is undefined
|
|
23519
|
+
const location = reactRouterLocation ? {
|
|
23520
|
+
pathname: reactRouterLocation.pathname,
|
|
23521
|
+
search: reactRouterLocation.search,
|
|
23522
|
+
hash: reactRouterLocation.hash
|
|
23523
|
+
} : typeof window !== 'undefined' ? {
|
|
23524
|
+
pathname: window.location.pathname,
|
|
23525
|
+
search: window.location.search,
|
|
23526
|
+
hash: window.location.hash
|
|
23527
|
+
} : undefined;
|
|
23378
23528
|
return jsxRuntime.jsx(NavigationContext.Provider, {
|
|
23379
23529
|
value: {
|
|
23380
23530
|
navigate,
|
|
23381
|
-
location
|
|
23382
|
-
pathname: reactRouterLocation.pathname,
|
|
23383
|
-
search: reactRouterLocation.search,
|
|
23384
|
-
hash: reactRouterLocation.hash
|
|
23385
|
-
}
|
|
23531
|
+
location
|
|
23386
23532
|
},
|
|
23387
23533
|
children: children
|
|
23388
23534
|
});
|
|
@@ -23427,10 +23573,10 @@ function FallbackNavigationProvider({
|
|
|
23427
23573
|
function NavigationProvider({
|
|
23428
23574
|
children
|
|
23429
23575
|
}) {
|
|
23430
|
-
// Check if we're inside a React Router
|
|
23431
|
-
//
|
|
23432
|
-
const
|
|
23433
|
-
if (
|
|
23576
|
+
// Check if we're inside a React Router using the official hook
|
|
23577
|
+
// This is more reliable than checking internal UNSAFE contexts
|
|
23578
|
+
const isInRouter = reactRouterDom.useInRouterContext();
|
|
23579
|
+
if (isInRouter) {
|
|
23434
23580
|
// We're inside a Router, use React Router's navigation
|
|
23435
23581
|
return jsxRuntime.jsx(ReactRouterNavigationProvider, {
|
|
23436
23582
|
children: children
|
|
@@ -25983,6 +26129,15 @@ const QwickApp = ({
|
|
|
25983
26129
|
...updates
|
|
25984
26130
|
}));
|
|
25985
26131
|
};
|
|
26132
|
+
// Sync logo prop changes with internal state (for dynamic logo updates)
|
|
26133
|
+
React.useEffect(() => {
|
|
26134
|
+
if (resolvedConfig.logo !== appConfig.logo) {
|
|
26135
|
+
setAppConfig(prev => ({
|
|
26136
|
+
...prev,
|
|
26137
|
+
logo: resolvedConfig.logo
|
|
26138
|
+
}));
|
|
26139
|
+
}
|
|
26140
|
+
}, [resolvedConfig.logo]);
|
|
25986
26141
|
const contextValue = {
|
|
25987
26142
|
appName: resolvedConfig.appName,
|
|
25988
26143
|
// Safe to use ! since we validated above
|