@robosophy/ui-vue 1.1.12 → 1.2.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.
package/ai-context.md CHANGED
@@ -27,13 +27,16 @@ Use this package for shared Vue 3 UI components.
27
27
  - Use PrimeVue only when it provides real behavior for that component; actions should use PrimeVue `Button` in PrimeVue apps.
28
28
  - `RsSidebar` and `RsAccountSelector` use native PrimeVue controls for interactive UI; PrimeVue apps should register the Robosophy PrimeVue preset and load `@robosophy/prime-theme/prime.css` so Button/Menu states receive Robosophy styling.
29
29
  - `RsIcon` needs `robosophyMaterialSymbols()` from `@robosophy/ui-vue/vite` in consuming Vite apps so builds generate an SVG sprite with only the needed icons. The plugin auto-detects icon usage from source — no manual declaration needed for static patterns. Use `rsPrimeIcon()` for PrimeVue APIs that accept icon class strings. Add dynamic icons via `include`. For full control over icon props, use the `#icon` slot instead of `rsPrimeIcon()`.
30
- - **Icon detection rules:** the scanner detects 5 patterns. Read `icon-scanner.md` for the full reference. Key rules for agent work:
30
+ - **Icon detection rules:** the scanner detects 8 patterns. Read `icon-scanner.md` for the full reference. Key rules for agent work:
31
31
  - `<RsIcon name="..." />` — always detected (Pattern 1)
32
32
  - `rsPrimeIcon("...")` — detected (Pattern 2)
33
33
  - `{ icon: "..." }` in objects — detected with weight/family extraction (Pattern 3)
34
- - `// @robosophy-icon: name` magic comments — detected (Pattern 4, use for props/variables)
34
+ - `// @robosophy-icon: name` magic comments — detected (Pattern 4, use as last resort for dynamic values)
35
35
  - Arrays like `const iconNames = ["home", ...]` — detected if variable name contains "icon" (Pattern 5)
36
- - `<RsIcon :name="variable" />` — NOT detected; add magic comment or `include`
36
+ - Objects like `const iconMap = { key: "home" }` — detected if variable name contains "icon" (Pattern 5b)
37
+ - `<CustomComponent icon="..." />` — detected for PascalCase components (Pattern 6a)
38
+ - `<ForwardIcon icon="..." />` — detected if the component proxies to `<RsIcon :name>` (Pattern 6b)
39
+ - `<RsIcon :name="variable" />` — NOT detected; use a data source with `icon:` (Pattern 3) or magic comment as last resort
37
40
  - `<RsIcon :name="item.icon" />` — NOT detected from template, but the `icon: "..."` in the data source IS detected by Pattern 3
38
41
  - Use `RsSidebar` for reusable module navigation. `item-click` stays in the consuming app; the optional `modules` dropdown can redirect with the provided `link` when `navigateOnModuleSelect` is `true`.
39
42
  - Keep props focused on stable component API. Use slots for flexible content.
package/components.md CHANGED
@@ -9,8 +9,7 @@ When building a module or complex UI, prefer these components before creating lo
9
9
  - `RsSidebar`: module navigation, side menu, mobile sidebar.
10
10
  - `RsAccountSelector`: user/account selector.
11
11
  - `RsIcon`: Material Symbols icon component and PrimeVue icon helper.
12
- - `RsAvatar`: user/account image or initials.
13
- - `RsCard`: reusable content container.
12
+ - `RsIconPicker`: searchable icon picker for choosing Material Symbols names from a curated catalog (~400 icons in the sprite).
14
13
 
15
14
  Keep app behavior in the consuming project. Components emit events; the app handles routing, stores, fetches, permissions, logout, and redirects.
16
15
 
@@ -19,10 +18,10 @@ Keep app behavior in the consuming project. Components emit events; the app hand
19
18
  ```ts
20
19
  import {
21
20
  RsAccountSelector,
22
- RsAvatar,
23
- RsCard,
24
21
  RsIcon,
22
+ RsIconPicker,
25
23
  RsSidebar,
24
+ iconCatalog,
26
25
  rsPrimeIcon,
27
26
  } from "@robosophy/ui-vue";
28
27
  ```
@@ -190,6 +189,28 @@ For full control over icon props (fill, grade, etc.), use the slot approach:
190
189
  </Button>
191
190
  ```
192
191
 
192
+ ## RsIconPicker
193
+
194
+ Searchable icon picker for choosing a Material Symbols icon name from a curated catalog
195
+ (~400 icons) included in the build-time SVG sprite via `iconCatalog`.
196
+
197
+ ```vue
198
+ <template>
199
+ <RsIconPicker v-model="icon" placeholder="Selecciona ícono" :invalid="hasError" />
200
+ </template>
201
+ ```
202
+
203
+ Props: `modelValue`, `placeholder`, `invalid`.
204
+ Emits: `update:modelValue`.
205
+
206
+ Export `iconCatalog` to validate runtime icon names from API data:
207
+
208
+ ```ts
209
+ import { iconCatalog } from "@robosophy/ui-vue";
210
+
211
+ const safeIcon = iconCatalog.includes(iconFromApi) ? iconFromApi : "article";
212
+ ```
213
+
193
214
  ## RsSidebar
194
215
 
195
216
  Use for module navigation. It is controlled and presentational.
@@ -0,0 +1,6 @@
1
+ export type RsIconPickerProps = {
2
+ modelValue?: string;
3
+ placeholder?: string;
4
+ invalid?: boolean;
5
+ };
6
+ //# sourceMappingURL=RsIconPicker.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RsIconPicker.types.d.ts","sourceRoot":"","sources":["../../../src/components/RsIconPicker/RsIconPicker.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { RsIconPickerProps } from "./RsIconPicker.types";
2
+ declare const __VLS_export: import("vue").DefineComponent<RsIconPickerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
3
+ "update:modelValue": (value: string) => any;
4
+ }, string, import("vue").PublicProps, Readonly<RsIconPickerProps> & Readonly<{
5
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
6
+ }>, {
7
+ modelValue: string;
8
+ placeholder: string;
9
+ invalid: boolean;
10
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
13
+ //# sourceMappingURL=RsIconPicker.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RsIconPicker.vue.d.ts","sourceRoot":"","sources":["../../../src/components/RsIconPicker/RsIconPicker.vue"],"names":[],"mappings":"AAiGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAyK9D,QAAA,MAAM,YAAY;;;;;;;;6EAIhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,2 @@
1
+ export declare const iconCatalog: string[];
2
+ //# sourceMappingURL=iconCatalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iconCatalog.d.ts","sourceRoot":"","sources":["../../../src/components/RsIconPicker/iconCatalog.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,UAiZvB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import "./RsIconPicker.css";
2
+ export { iconCatalog } from "./iconCatalog";
3
+ export { default } from "./RsIconPicker.vue";
4
+ export type { RsIconPickerProps } from "./RsIconPicker.types";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/RsIconPicker/index.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { RsSidebarItem, RsSidebarModule, RsSidebarProps } from "./RsSidebar.types";
1
+ import type { RsSidebarItem, RsSidebarModule, RsSidebarProps, RsSidebarVariant } from "./RsSidebar.types";
2
2
  declare function goBack(): void;
3
3
  declare function closeMobile(): void;
4
4
  declare var __VLS_1: {
@@ -56,7 +56,7 @@ declare const __VLS_base: import("vue").DefineComponent<RsSidebarProps, {}, {},
56
56
  ariaLabel: string;
57
57
  title: string;
58
58
  icon: string;
59
- variant: import("./RsSidebar.types").RsSidebarVariant;
59
+ variant: RsSidebarVariant;
60
60
  footerItems: RsSidebarItem[];
61
61
  modules: RsSidebarModule[];
62
62
  navigateOnModuleSelect: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"RsSidebar.vue.d.ts","sourceRoot":"","sources":["../../../src/components/RsSidebar/RsSidebar.vue"],"names":[],"mappings":"AA4WA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAmJxF,iBAAS,MAAM,SAEd;AAED,iBAAS,WAAW,SAInB;AAyZD,QAAA,IAAI,OAAO;;;;;;;;;;;;;CAAU,EAAE,QAAQ;;;;;;;;;;;;CAAW,EAAE,QAAQ;;;CAAW,EAAE,QAAQ;;;CAAY,CAAE;AACvF,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GAC3C;IAAE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GACrD;IAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GAC1C;IAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AAO/C,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;6EAId,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"RsSidebar.vue.d.ts","sourceRoot":"","sources":["../../../src/components/RsSidebar/RsSidebar.vue"],"names":[],"mappings":"AAqXA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AA4J1G,iBAAS,MAAM,SAEd;AAED,iBAAS,WAAW,SAInB;AA0ZD,QAAA,IAAI,OAAO;;;;;;;;;;;;;CAAU,EAAE,QAAQ;;;;;;;;;;;;CAAW,EAAE,QAAQ;;;CAAW,EAAE,QAAQ;;;CAAY,CAAE;AACvF,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GAC3C;IAAE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GACrD;IAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,GAC1C;IAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,QAAQ,KAAK,GAAG,CAAA;CAAE,CAAC;AAO/C,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;6EAId,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -1,40 +1,410 @@
1
1
  {
2
2
  "outlined": [
3
+ "ac_unit",
4
+ "account_balance",
5
+ "account_balance_wallet",
6
+ "account_circle",
7
+ "account_tree",
8
+ "add",
9
+ "add_chart",
10
+ "add_shopping_cart",
11
+ "admin_panel_settings",
12
+ "ads_click",
13
+ "agriculture",
14
+ "air",
3
15
  "alarm",
16
+ "alarm_on",
17
+ "all_inbox",
18
+ "alt_route",
19
+ "analytics",
20
+ "apartment",
21
+ "api",
22
+ "archive",
23
+ "area_chart",
24
+ "arrow_back",
25
+ "arrow_downward",
4
26
  "arrow_drop_down",
5
27
  "arrow_drop_up",
28
+ "arrow_forward",
6
29
  "arrow_left",
30
+ "arrow_upward",
31
+ "article",
32
+ "aspect_ratio",
33
+ "assignment",
34
+ "assignment_late",
35
+ "assignment_turned_in",
36
+ "attach_money",
37
+ "attachment",
38
+ "auto_delete",
39
+ "autorenew",
40
+ "backup",
41
+ "badge",
42
+ "balance",
43
+ "bar_chart",
44
+ "biotech",
7
45
  "block",
46
+ "bluetooth",
47
+ "blur_off",
48
+ "blur_on",
49
+ "bolt",
50
+ "book",
51
+ "bookmark",
52
+ "bookmark_add",
53
+ "bookmark_remove",
54
+ "brightness_auto",
55
+ "brightness_high",
56
+ "brightness_low",
57
+ "brush",
58
+ "bubble_chart",
59
+ "bug_report",
60
+ "build",
61
+ "build_circle",
62
+ "cake",
63
+ "calculate",
64
+ "calendar_today",
65
+ "call",
66
+ "campaign",
67
+ "cancel",
68
+ "candlestick_chart",
69
+ "captive_portal",
70
+ "cards_stack",
71
+ "celebration",
72
+ "center_focus_strong",
73
+ "center_focus_weak",
74
+ "chat",
75
+ "check",
8
76
  "check_circle",
77
+ "checklist",
78
+ "checklist_rtl",
79
+ "chevron_left",
9
80
  "chevron_right",
81
+ "cleaning_services",
10
82
  "close",
83
+ "cloud",
84
+ "cloud_done",
85
+ "cloud_download",
86
+ "cloud_upload",
87
+ "co2",
88
+ "code",
89
+ "comment",
90
+ "commute",
91
+ "compare_arrows",
92
+ "compost",
93
+ "computer",
94
+ "construction",
95
+ "contact_mail",
96
+ "contact_phone",
97
+ "contact_support",
98
+ "contacts",
99
+ "content_copy",
100
+ "content_cut",
101
+ "content_paste",
11
102
  "contract",
103
+ "contrast",
104
+ "corporate_fare",
105
+ "create_new_folder",
106
+ "credit_card",
107
+ "crop",
108
+ "crop_free",
109
+ "crop_square",
110
+ "currency_exchange",
111
+ "cyclone",
112
+ "dark_mode",
113
+ "dashboard",
114
+ "dashboard_customize",
115
+ "data_exploration",
116
+ "data_object",
117
+ "data_saver_on",
118
+ "data_thresholding",
119
+ "data_usage",
120
+ "database",
121
+ "dataset",
122
+ "dataset_linked",
123
+ "delete",
124
+ "delete_forever",
125
+ "delete_sweep",
126
+ "delivery_truck_speed",
127
+ "departure_board",
128
+ "description",
129
+ "developer_board",
130
+ "device_hub",
131
+ "device_thermostat",
132
+ "devices",
133
+ "diamond",
134
+ "directions",
135
+ "directions_bike",
136
+ "directions_boat",
137
+ "directions_car",
138
+ "directions_walk",
139
+ "dns",
140
+ "domain",
141
+ "done",
142
+ "done_all",
143
+ "donut_large",
144
+ "donut_small",
145
+ "download",
146
+ "drafts",
147
+ "drive_file_move",
148
+ "eco",
149
+ "edit",
150
+ "edit_note",
151
+ "electrical_services",
152
+ "emergency",
153
+ "emoji_events",
154
+ "energy_savings_leaf",
155
+ "engineering",
156
+ "equalizer",
12
157
  "error",
158
+ "ev_station",
159
+ "event",
160
+ "explore",
161
+ "factory",
13
162
  "favorite",
163
+ "filter_alt",
164
+ "filter_list",
165
+ "flag",
166
+ "flash_on",
167
+ "flight",
168
+ "folder",
169
+ "folder_open",
170
+ "forest",
171
+ "format_bold",
172
+ "format_list_bulleted",
173
+ "forum",
174
+ "forward",
175
+ "fullscreen",
176
+ "gavel",
177
+ "grade",
178
+ "grass",
179
+ "grid_view",
180
+ "group",
181
+ "groups",
182
+ "handshake",
183
+ "handyman",
184
+ "headset_mic",
185
+ "health_and_safety",
14
186
  "help",
187
+ "help_center",
188
+ "history",
15
189
  "home",
190
+ "home_work",
191
+ "hourglass_empty",
192
+ "hub",
193
+ "image",
194
+ "inbox",
16
195
  "info",
196
+ "insert_chart",
197
+ "integration_instructions",
17
198
  "inventory",
199
+ "inventory_2",
200
+ "ios_share",
201
+ "key",
202
+ "keyboard",
203
+ "label",
204
+ "landscape",
205
+ "language",
206
+ "leaderboard",
207
+ "library_books",
208
+ "light_mode",
209
+ "lightbulb",
210
+ "link",
211
+ "link_off",
212
+ "live_help",
213
+ "local_activity",
214
+ "local_cafe",
215
+ "local_shipping",
216
+ "location_on",
217
+ "lock",
218
+ "lock_open",
18
219
  "login",
19
220
  "logout",
221
+ "mail",
20
222
  "manage_accounts",
223
+ "map",
224
+ "mark_email_read",
225
+ "medical_services",
226
+ "memory",
227
+ "menu",
228
+ "menu_book",
229
+ "merge",
230
+ "mic",
231
+ "military_tech",
232
+ "monetization_on",
233
+ "monitoring",
234
+ "mood",
235
+ "more_horiz",
236
+ "more_vert",
237
+ "my_location",
238
+ "navigation",
239
+ "near_me",
21
240
  "nest_eco_leaf",
241
+ "new_window",
242
+ "nfc",
22
243
  "notifications",
244
+ "notifications_active",
245
+ "offline_bolt",
246
+ "opacity",
247
+ "open_in_browser",
248
+ "open_in_new",
249
+ "outbound",
250
+ "outbox",
251
+ "outgoing_mail",
23
252
  "package_2",
24
253
  "palette",
254
+ "park",
255
+ "pause_circle",
256
+ "payments",
257
+ "pending_actions",
258
+ "percent",
25
259
  "person",
260
+ "person_add",
261
+ "phone_iphone",
262
+ "photo",
263
+ "photo_camera",
264
+ "picture_as_pdf",
265
+ "pie_chart",
266
+ "pin",
267
+ "pin_drop",
268
+ "play_circle",
269
+ "plumbing",
270
+ "point_of_sale",
271
+ "policy",
272
+ "precision_manufacturing",
273
+ "preview",
274
+ "print",
275
+ "production_quantity_limits",
276
+ "public",
277
+ "publish",
278
+ "query_stats",
279
+ "quiz",
280
+ "radar",
281
+ "rate_review",
282
+ "read_more",
283
+ "receipt",
284
+ "recommend",
285
+ "recycling",
286
+ "redeem",
287
+ "redo",
288
+ "refresh",
289
+ "remove",
290
+ "reply",
291
+ "report",
292
+ "request_quote",
293
+ "reviews",
294
+ "rocket_launch",
295
+ "route",
296
+ "router",
297
+ "rule",
298
+ "satellite",
299
+ "save",
300
+ "savings",
301
+ "scatter_plot",
302
+ "schedule",
303
+ "schema",
304
+ "school",
305
+ "science",
26
306
  "search",
307
+ "security",
27
308
  "sell",
309
+ "send",
310
+ "sensors",
28
311
  "settings",
312
+ "settings_applications",
313
+ "share",
314
+ "shield",
315
+ "shopping_bag",
316
+ "shopping_cart",
317
+ "show_chart",
318
+ "skip_next",
319
+ "sort",
320
+ "south",
321
+ "spa",
322
+ "space_dashboard",
323
+ "speed",
324
+ "sports_score",
325
+ "ssid_chart",
326
+ "stacked_bar_chart",
327
+ "stacked_line_chart",
328
+ "star",
329
+ "sticky_note_2",
330
+ "stop_circle",
331
+ "store",
332
+ "storefront",
29
333
  "subtitles_gear",
334
+ "support_agent",
30
335
  "swap_vert",
336
+ "sync",
337
+ "table_chart",
31
338
  "table_chart_view",
339
+ "table_rows",
340
+ "tablet",
341
+ "task",
342
+ "task_alt",
343
+ "terminal",
344
+ "thermostat",
345
+ "thumb_down",
346
+ "thumb_up",
347
+ "timeline",
348
+ "today",
349
+ "token",
350
+ "topic",
351
+ "track_changes",
352
+ "traffic",
353
+ "train",
354
+ "translate",
355
+ "travel_explore",
356
+ "trending_down",
357
+ "trending_flat",
358
+ "trending_up",
359
+ "trophy",
360
+ "tsunami",
361
+ "tune",
362
+ "tv",
363
+ "unarchive",
364
+ "undo",
365
+ "update",
366
+ "upgrade",
32
367
  "upload",
368
+ "upload_file",
369
+ "usb",
370
+ "vaccines",
371
+ "verified",
372
+ "verified_user",
373
+ "videocam",
374
+ "view_list",
375
+ "view_module",
376
+ "visibility",
33
377
  "visibility_off",
34
- "warning"
378
+ "volume_up",
379
+ "volunteer_activism",
380
+ "vpn_key",
381
+ "wallet",
382
+ "warehouse",
383
+ "warning",
384
+ "water_drop",
385
+ "wb_sunny",
386
+ "web",
387
+ "web_asset",
388
+ "weekend",
389
+ "whatshot",
390
+ "widgets",
391
+ "wifi",
392
+ "wind_power",
393
+ "woman",
394
+ "work",
395
+ "work_history",
396
+ "workspace_premium",
397
+ "workspaces",
398
+ "wrap_text",
399
+ "wysiwyg",
400
+ "yard",
401
+ "zoom_in",
402
+ "zoom_out"
35
403
  ],
36
404
  "rounded": [
37
405
  "arrow_drop_down",
406
+ "check_circle",
407
+ "home",
38
408
  "settings"
39
409
  ],
40
410
  "sharp": [
package/dist/index.css CHANGED
@@ -677,3 +677,77 @@
677
677
  .rs-sidebar--mobile-open .rs-sidebar__item--footer {
678
678
  padding: 32px 24px;
679
679
  }
680
+ .rs-icon-picker {
681
+ position: relative;
682
+ width: 100%;
683
+ font-family: var(--rs-font-family, inherit);
684
+ }
685
+ .rs-icon-picker__trigger {
686
+ border: 1px solid var(--rs-color-gray-300, #d1d1d1);
687
+ padding: 10px;
688
+ border-radius: 8px;
689
+ background-color: var(--rs-color-white-500, #ffffff);
690
+ cursor: pointer;
691
+ display: flex;
692
+ align-items: center;
693
+ justify-content: space-between;
694
+ outline: none;
695
+ }
696
+ .rs-icon-picker__trigger--invalid {
697
+ border-color: var(--rs-color-stroke-error, #d32f2f);
698
+ }
699
+ .rs-icon-picker__value {
700
+ display: flex;
701
+ align-items: center;
702
+ gap: 8px;
703
+ }
704
+ .rs-icon-picker__placeholder {
705
+ color: var(--rs-color-text-secondary, #909090);
706
+ }
707
+ .rs-icon-picker__dropdown {
708
+ position: absolute;
709
+ top: calc(100% + 4px);
710
+ left: 0;
711
+ width: 100%;
712
+ background: var(--rs-color-surface-primary, #ffffff);
713
+ border: 1px solid var(--rs-color-gray-300, #d1d1d1);
714
+ border-radius: 8px;
715
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
716
+ z-index: 999;
717
+ padding: 8px;
718
+ display: flex;
719
+ flex-direction: column;
720
+ gap: 8px;
721
+ }
722
+ .rs-icon-picker__search {
723
+ width: 100%;
724
+ padding: 8px 10px;
725
+ border: 1px solid var(--rs-color-gray-300, #d1d1d1);
726
+ border-radius: 6px;
727
+ font-size: 13px;
728
+ outline: none;
729
+ box-sizing: border-box;
730
+ }
731
+ .rs-icon-picker__grid {
732
+ display: flex;
733
+ flex-wrap: wrap;
734
+ gap: 4px;
735
+ max-height: 220px;
736
+ overflow-y: auto;
737
+ overflow-x: hidden;
738
+ }
739
+ .rs-icon-picker__item {
740
+ font-size: 28px;
741
+ padding: 8px;
742
+ display: flex;
743
+ align-items: center;
744
+ justify-content: center;
745
+ border-radius: 4px;
746
+ cursor: pointer;
747
+ }
748
+ .rs-icon-picker__item:hover {
749
+ background-color: var(--rs-color-gray-100, #f5f5f5);
750
+ }
751
+ .rs-icon-picker__item--selected {
752
+ background-color: var(--rs-color-button-blue-surface, #e3f2fd);
753
+ }
package/dist/index.d.ts CHANGED
@@ -4,9 +4,11 @@ export { default } from "./plugin";
4
4
  export * from "./plugin";
5
5
  import RsAccountSelector from "./components/RsAccountSelector";
6
6
  import RsIcon from "./components/RsIcon";
7
+ import RsIconPicker from "./components/RsIconPicker";
7
8
  import RsSidebar from "./components/RsSidebar";
8
- export { RsAccountSelector, RsIcon, RsSidebar };
9
+ export { RsAccountSelector, RsIcon, RsIconPicker, RsSidebar };
9
10
  export * from "./components/RsAccountSelector";
10
11
  export * from "./components/RsIcon";
12
+ export * from "./components/RsIconPicker";
11
13
  export * from "./components/RsSidebar";
12
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,cAAc,UAAU,CAAC;AAEzB,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,cAAc,UAAU,CAAC;AAEzB,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,YAAY,MAAM,2BAA2B,CAAC;AACrD,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AAC9D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"}