@rarui/components 1.22.0 → 1.23.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/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  `@rarui/components` components is a component library built with [Lit](https://lit.dev/).
4
4
 
5
+ ## 2025-01-09 `1.23.0`
6
+
7
+ #### 🎉 New features
8
+
9
+ - Added new input `Select` component with single and multiple selection modes. ([#133](https://git.rarolabs.com.br/frontend/rarui/-/merge_requests/133) by [@junior](https://git.rarolabs.com.br/junior))
10
+ - Enhanced `Checkbox` component with hybrid behavior support - controlled and native modes. ([#133](https://git.rarolabs.com.br/frontend/rarui/-/merge_requests/133) by [@junior](https://git.rarolabs.com.br/junior))
11
+ - Enhanced `Dropdown` component with hybrid behavior support for `visible` property - controlled and native modes. ([#133](https://git.rarolabs.com.br/frontend/rarui/-/merge_requests/133) by [@junior](https://git.rarolabs.com.br/junior))
12
+ - Added `readonly` property to `Checkbox` component for display-only state. ([#133](https://git.rarolabs.com.br/frontend/rarui/-/merge_requests/133) by [@junior](https://git.rarolabs.com.br/junior))
13
+ - Implemented intelligent checkbox state management that works as controlled component when `checked` prop is provided. ([#133](https://git.rarolabs.com.br/frontend/rarui/-/merge_requests/133) by [@junior](https://git.rarolabs.com.br/junior))
14
+ - Implemented intelligent dropdown state management that works as controlled component when `visible` prop is provided. ([#133](https://git.rarolabs.com.br/frontend/rarui/-/merge_requests/133) by [@junior](https://git.rarolabs.com.br/junior))
15
+ - Added native HTML checkbox behavior when `checked` prop is not provided, maintaining internal state automatically. ([#133](https://git.rarolabs.com.br/frontend/rarui/-/merge_requests/133) by [@junior](https://git.rarolabs.com.br/junior))
16
+ - Added native dropdown behavior when `visible` prop is not provided, maintaining internal state automatically. ([#133](https://git.rarolabs.com.br/frontend/rarui/-/merge_requests/133) by [@junior](https://git.rarolabs.com.br/junior))
17
+ - Enhanced accessibility with ESC key support to close dropdown when `enabled-dismiss` is true. ([#133](https://git.rarolabs.com.br/frontend/rarui/-/merge_requests/133) by [@junior](https://git.rarolabs.com.br/junior))
18
+
5
19
  ## 2025-09-01 `1.22.0`
6
20
 
7
21
  #### 🎉 New features
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.21.0",
2
+ "version": "1.22.0",
3
3
  "tags": [
4
4
  {
5
5
  "name": "rarui-avatar",
@@ -2572,6 +2572,7 @@
2572
2572
  },
2573
2573
  {
2574
2574
  "name": "rarui-checkbox",
2575
+ "description": "## Rarui Checkbox\n---\nThe Checkbox allows users to select one or more items from a set and can be used to enable or disable an option.\n\nFeatures hybrid behavior:\n- **Controlled mode**: When `checked` prop is provided, works like React controlled component\n- **Native mode**: When `checked` prop is not provided, works like native HTML checkbox\n\nSee [a complete document](https://rarui.rarolabs.com.br/docs/components-web-components/input/checkbox) for more details.",
2575
2576
  "attributes": [
2576
2577
  {
2577
2578
  "name": "label",
@@ -2583,6 +2584,18 @@
2583
2584
  "description": "The id of the checkbox.\n\n(Required)",
2584
2585
  "type": "string"
2585
2586
  },
2587
+ {
2588
+ "name": "checked",
2589
+ "description": "Controls the checked state of the checkbox.\n\n**Hybrid Behavior:**\n- When provided: Checkbox works in controlled mode - external prop controls the state\n- When not provided: Checkbox works in native mode - maintains its own internal state\n\n@default undefined (native mode)",
2590
+ "type": "boolean",
2591
+ "default": "undefined (native mode)"
2592
+ },
2593
+ {
2594
+ "name": "readonly",
2595
+ "description": "Makes the checkbox read-only, preventing user interaction.\nWhen true, the checkbox displays its current state but cannot be changed by clicking.",
2596
+ "type": "boolean",
2597
+ "default": false
2598
+ },
2586
2599
  {
2587
2600
  "name": "error",
2588
2601
  "description": "Specifies whether the checkbox is in error state",
@@ -2697,7 +2710,7 @@
2697
2710
  },
2698
2711
  {
2699
2712
  "name": "rarui-dropdown",
2700
- "description": "## Rarui Dropdown\n---\nAn suspended menu displays a list of options on a temporary surface.\n\nSee [a complete document](https://rarui.rarolabs.com.br/docs/components-web-components/input/dropdown) for more details.",
2713
+ "description": "## Rarui Dropdown\n---\nAn suspended menu displays a list of options on a temporary surface.\n\nFeatures hybrid behavior:\n- **Controlled mode**: When `visible` prop is provided, works like React controlled component\n- **Native mode**: When `visible` prop is not provided, manages its own internal state\n\nSee [a complete document](https://rarui.rarolabs.com.br/docs/components-web-components/input/dropdown) for more details.",
2701
2714
  "attributes": [
2702
2715
  {
2703
2716
  "name": "match-reference-width",
@@ -2736,8 +2749,9 @@
2736
2749
  },
2737
2750
  {
2738
2751
  "name": "visible",
2739
- "description": "If true, the component is shown.",
2740
- "type": "boolean"
2752
+ "description": "Controls the visibility state of the dropdown.\n\n**Hybrid Behavior:**\n- When provided: Dropdown works in controlled mode - external prop controls the state\n- When not provided: Dropdown works in native mode - manages its own internal state\n\n@default undefined (native mode)",
2753
+ "type": "boolean",
2754
+ "default": "undefined (native mode)"
2741
2755
  },
2742
2756
  {
2743
2757
  "name": "on-visibility",
@@ -3240,6 +3254,201 @@
3240
3254
  }
3241
3255
  ]
3242
3256
  },
3257
+ {
3258
+ "name": "rarui-select",
3259
+ "description": "## Rarui Select\n---\nSelect component for choosing options from a dropdown menu with support for single and multiple selection.\n\nFeatures:\n- **Single Selection**: Choose one option from the list\n- **Multiple Selection**: Choose multiple options with checkboxes\n- **Custom Content**: Support for slot-based custom content and filtering\n- **Accessibility**: Full keyboard navigation with ESC key support\n- **Controlled Behavior**: Uses internal web components (Dropdown, Checkbox, Text, Box, Chip, Icon)\n\nSee [a complete document](https://rarui.rarolabs.com.br/docs/components-web-components/input/select) for more details.",
3260
+ "attributes": [
3261
+ {
3262
+ "name": "open",
3263
+ "description": "If true, the Select component is shown.",
3264
+ "type": "boolean"
3265
+ },
3266
+ {
3267
+ "name": "disabled",
3268
+ "description": "Disables the select component, disallowing user interaction.",
3269
+ "type": "boolean",
3270
+ "default": false
3271
+ },
3272
+ {
3273
+ "name": "options",
3274
+ "description": "Options for the Select component. This should be an array of SelectOptionProps objects.\n\n(Required)",
3275
+ "type": "array"
3276
+ },
3277
+ {
3278
+ "name": "multiple",
3279
+ "description": "Enables multiple selection mode.",
3280
+ "type": "boolean",
3281
+ "default": false
3282
+ },
3283
+ {
3284
+ "name": "size",
3285
+ "description": "Specifies the size of the badge, controlling its dimensions.\n\n- large\n- medium\n- small",
3286
+ "type": "string",
3287
+ "values": [
3288
+ {
3289
+ "name": "large"
3290
+ },
3291
+ {
3292
+ "name": "medium"
3293
+ },
3294
+ {
3295
+ "name": "small"
3296
+ }
3297
+ ]
3298
+ },
3299
+ {
3300
+ "name": "appearance",
3301
+ "description": "Determines the visual style of the input, affecting its border\n\n- error\n- success",
3302
+ "type": "string",
3303
+ "values": [
3304
+ {
3305
+ "name": "error"
3306
+ },
3307
+ {
3308
+ "name": "success"
3309
+ }
3310
+ ]
3311
+ },
3312
+ {
3313
+ "name": "max-height",
3314
+ "description": "The **`max-height`** CSS property sets the maximum height of an element. It prevents the used value of the `height` property from becoming larger than the value specified for `max-height`. It is also possible to pass a specific value.\n\n\n**Initial value**: `none`\n\nThis property supports responsive values. You can pass a single value like `\"fit-content\"`.\n\n Or an object like:\n \n ```\n{\n \"xs\": \"fit-content\",\n \"md\": \"intrinsic\",\n \"lg\": \"max-content\",\n \"xl\": \"min-content\"\n}\n```\n\n- fit-content\n- intrinsic\n- max-content\n- min-content\n- none\n- stretch",
3315
+ "values": [
3316
+ {
3317
+ "name": "fit-content"
3318
+ },
3319
+ {
3320
+ "name": "intrinsic"
3321
+ },
3322
+ {
3323
+ "name": "max-content"
3324
+ },
3325
+ {
3326
+ "name": "min-content"
3327
+ },
3328
+ {
3329
+ "name": "none"
3330
+ },
3331
+ {
3332
+ "name": "stretch"
3333
+ }
3334
+ ]
3335
+ },
3336
+ {
3337
+ "name": "z-index",
3338
+ "description": "The zIndex property specifies the stack order of the box.\n\nThis property supports responsive values. You can pass a single value like `\"$100\"`.\n\n Or an object like:\n \n ```\n{\n \"xs\": \"$100\",\n \"md\": \"$200\",\n \"lg\": \"$300\",\n \"xl\": \"$400\"\n}\n```\n\n- $100\n- $200\n- $300\n- $400\n- $500\n- $600\n- $700\n- $800\n- $900",
3339
+ "values": [
3340
+ {
3341
+ "name": "$100"
3342
+ },
3343
+ {
3344
+ "name": "$200"
3345
+ },
3346
+ {
3347
+ "name": "$300"
3348
+ },
3349
+ {
3350
+ "name": "$400"
3351
+ },
3352
+ {
3353
+ "name": "$500"
3354
+ },
3355
+ {
3356
+ "name": "$600"
3357
+ },
3358
+ {
3359
+ "name": "$700"
3360
+ },
3361
+ {
3362
+ "name": "$800"
3363
+ },
3364
+ {
3365
+ "name": "$900"
3366
+ }
3367
+ ]
3368
+ },
3369
+ {
3370
+ "name": "value",
3371
+ "description": "Default selected values for the Select component.\nThis should be an array of SelectOptionProps objects representing the selected options.",
3372
+ "values": []
3373
+ },
3374
+ {
3375
+ "name": "default-value",
3376
+ "description": "Specifies the default selected value(s) for the select box.\nThis can be a selectOption for single selection or an array of selectOption for multiple selections.",
3377
+ "values": []
3378
+ },
3379
+ {
3380
+ "name": "placeholder",
3381
+ "description": "Placeholder text displayed when no option is selected.",
3382
+ "type": "string"
3383
+ },
3384
+ {
3385
+ "name": "enabled-flip",
3386
+ "description": "Determines whether the select box should enable flipping the options' dropdown when there is not enough space to display it in its default direction.\nThis can help ensure the dropdown is always visible on the screen.\n\n@default true",
3387
+ "type": "boolean",
3388
+ "default": true
3389
+ },
3390
+ {
3391
+ "name": "position",
3392
+ "description": "Position of the dropdown relative to the trigger.\n\n- bottom\n- bottom-end\n- bottom-start\n- left\n- left-end\n- left-start\n- right\n- right-end\n- right-start\n- top\n- top-end\n- top-start\n\n@default bottom-start",
3393
+ "type": "string",
3394
+ "values": [
3395
+ {
3396
+ "name": "bottom"
3397
+ },
3398
+ {
3399
+ "name": "bottom-end"
3400
+ },
3401
+ {
3402
+ "name": "bottom-start",
3403
+ "description": "(default)"
3404
+ },
3405
+ {
3406
+ "name": "left"
3407
+ },
3408
+ {
3409
+ "name": "left-end"
3410
+ },
3411
+ {
3412
+ "name": "left-start"
3413
+ },
3414
+ {
3415
+ "name": "right"
3416
+ },
3417
+ {
3418
+ "name": "right-end"
3419
+ },
3420
+ {
3421
+ "name": "right-start"
3422
+ },
3423
+ {
3424
+ "name": "top"
3425
+ },
3426
+ {
3427
+ "name": "top-end"
3428
+ },
3429
+ {
3430
+ "name": "top-start"
3431
+ }
3432
+ ],
3433
+ "default": "bottom-start"
3434
+ },
3435
+ {
3436
+ "name": "strategy",
3437
+ "description": "CSS positioning strategy used for the dropdown.\n\n- `\"fixed\"` (default) positions the dropdown relative to the viewport,\n so it stays in the same place even when the page is scrolled.\n- `\"absolute\"` positions the dropdown relative to the nearest positioned ancestor,\n which can be useful when you want the dropdown to move with page content.\n\nUse `\"fixed\"` for dropdowns that should remain visible on scroll,\nand `\"absolute\"` when dropdowns need to be positioned within scrollable containers.\n\n- absolute\n- fixed\n\n@default fixed",
3438
+ "type": "string",
3439
+ "values": [
3440
+ {
3441
+ "name": "absolute"
3442
+ },
3443
+ {
3444
+ "name": "fixed",
3445
+ "description": "(default)"
3446
+ }
3447
+ ],
3448
+ "default": "fixed"
3449
+ }
3450
+ ]
3451
+ },
3243
3452
  {
3244
3453
  "name": "rarui-textarea",
3245
3454
  "description": "## Rarui Radio Button\n---\nExpanded text area for long text entries. Allows you to enter large blocks of text, such as comments or detailed descriptions.\n\nSee [a complete document](https://rarui.rarolabs.com.br/docs/components-web-components/input/textarea) for more details.",
@@ -7517,9 +7726,8 @@
7517
7726
  "attributes": [
7518
7727
  {
7519
7728
  "name": "open",
7520
- "description": "Determines if the sidebar is shown or not.\n\n@default true",
7521
- "type": "boolean",
7522
- "default": true
7729
+ "description": "Determines if the sidebar is shown or not.",
7730
+ "type": "boolean"
7523
7731
  },
7524
7732
  {
7525
7733
  "name": "portal-id",
package/dist/index.d.ts CHANGED
@@ -17658,7 +17658,6 @@ declare const sidebarStyles: {
17658
17658
  };
17659
17659
  /**
17660
17660
  * Determines if the sidebar is shown or not.
17661
- * @default true
17662
17661
  */
17663
17662
  open: {
17664
17663
  true: {
@@ -18001,6 +18000,16 @@ interface CheckboxTyping {
18001
18000
  * The id of the checkbox.
18002
18001
  */
18003
18002
  id: string;
18003
+ /**
18004
+ * Whether the checkbox is checked.
18005
+ * @default false
18006
+ */
18007
+ checked?: boolean;
18008
+ /**
18009
+ * Whether the checkbox is readonly.
18010
+ * @default false
18011
+ */
18012
+ readonly?: boolean;
18004
18013
  }
18005
18014
  type CheckboxProps = CheckboxTyping & CheckboxVariants;
18006
18015
 
@@ -18392,7 +18401,7 @@ declare class RaruiDivider extends LitElement {
18392
18401
  render(): TemplateResult<1>;
18393
18402
  }
18394
18403
 
18395
- type IconName = "add-circle-filled" | "add-circle-outlined" | "alarm-filled" | "alarm-outlined" | "alternate-email" | "archive-all-filled" | "archive-all-outlined" | "archive-filled" | "archive-in-filled" | "archive-in-outlined" | "archive-outlined" | "arrow-alt-down" | "arrow-alt-left" | "arrow-alt-right" | "arrow-alt-up" | "arrow-circle-down-filled" | "arrow-circle-down-outlined" | "arrow-circle-up-filled" | "arrow-circle-up-outlined" | "arrow-circled-down-circle-outlined" | "arrow-circled-down-filled" | "arrow-circled-up-circle-outlined" | "arrow-direction-down-up" | "arrow-direction-left-right" | "arrow-direction-right-left" | "arrow-direction-up-down" | "arrow-directions" | "arrow-down" | "arrow-down-left" | "arrow-down-right" | "arrow-first-page" | "arrow-last-page" | "arrow-left" | "arrow-line-down" | "arrow-line-left" | "arrow-line-long-down" | "arrow-line-long-left" | "arrow-line-long-right" | "arrow-line-long-up" | "arrow-line-right" | "arrow-line-up" | "arrow-right" | "arrow-subdirectory-left" | "arrow-subdirectory-right" | "arrow-trending-down" | "arrow-trending-up" | "arrow-up" | "arrow-up-left" | "arrow-up-right" | "attachment" | "backspace" | "backspace-outlined" | "barley" | "barley-off" | "bolt-circle-filled" | "bolt-circle-outlined" | "bookmark-filled" | "bookmark-outlined" | "calendar-date-range-filled" | "calendar-date-range-outlined" | "calendar-event-filled" | "calendar-event-outlined" | "calendar-filled" | "calendar-outlined" | "camera-filled" | "camera-outlined" | "camera-shutter-filled" | "camera-shutter-outlined" | "cancel-circle-filled" | "cancel-circle-outlined" | "car-filled" | "car-outlined" | "chart-bars-filled" | "chart-bars-outlined" | "chat-bubble-filled" | "chat-bubble-outlined" | "chat-message-filled" | "chat-message-outlined" | "check" | "check-circle-filled" | "check-circle-outlined" | "check-small" | "chevron-big-down" | "chevron-big-left" | "chevron-big-right" | "chevron-big-up" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "clock-filled" | "clock-outlined" | "close" | "cloud-filled" | "cloud-outlined" | "contact-support-filled" | "contact-support-outlined" | "content-copy-filled" | "content-copy-outlined" | "content-paste-filled" | "content-paste-outlined" | "conversation-filled" | "conversation-outlined" | "copyright-filled" | "copyright-outlined" | "credit-card-filled" | "credit-card-outlined" | "danger-filled" | "danger-outlined" | "dashboard-filled" | "dashboard-outlined" | "document-filled" | "document-outlined" | "document-text-filled" | "document-text-outlined" | "download-filled" | "download-outlined" | "eco-filled" | "eco-outlined" | "edit-filled" | "edit-outlined" | "euro-symbol" | "exit-fullscreen" | "eye-filled" | "eye-off-filled" | "eye-off-outlined" | "eye-outlined" | "facebook-filled" | "facebook-outlined" | "file-copy-filled" | "file-copy-outlined" | "filter-alt-filled" | "filter-alt-outlined" | "filter-list" | "fingerprint" | "flag-filled" | "flag-outlined" | "flag-tour-filled" | "flag-tour-outlined" | "flower-filled" | "flower-outlined" | "folder-filled" | "folder-list-filled" | "folder-list-outlined" | "folder-open" | "folder-outlined" | "fruit-apple-filled" | "fruit-apple-outlined" | "fullscreen-filled" | "fullscreen-outlined" | "google" | "google-play" | "headphones-filled" | "headphones-outlined" | "heart-filled" | "heart-outlined" | "help-filled" | "help-outlined" | "history" | "home-filled" | "home-outlined" | "image-filled" | "image-outlined" | "info-circle-filled" | "info-circle-outlined" | "instagram" | "instagram-outlined" | "label-filled" | "label-important-filled" | "label-important-outlined" | "label-outlined" | "language" | "lightbulb-filled" | "lightbulb-outlined" | "link" | "linkedin-filled" | "linkedin-outlined" | "loader" | "loading" | "lock-filled" | "lock-open-filled" | "lock-open-outlined" | "lock-outlined" | "login" | "logout" | "mail-filled" | "mail-open-filled" | "mail-open-outlined" | "mail-outlined" | "menu" | "menu-large" | "microphone-filled" | "microphone-outlined" | "minus" | "money-filled" | "money-outlined" | "mood-bad" | "mood-bad-outlined" | "mood-filled" | "mood-outlined" | "more-horiz" | "more-vert" | "music-note-filled" | "music-note-outlined" | "notification-filled" | "notification-outlined" | "open-in-new" | "package" | "package-outlined" | "pause-filled" | "pause-outlined" | "pets-filled" | "pets-outlined" | "phone-call-filled" | "phone-call-outlined" | "phone-filled" | "phone-outlined" | "pin-filled" | "pin-outlined" | "play-arrow-filled" | "play-arrow-outlined" | "play-circle-filled" | "play-circle-outlined" | "plus" | "power-settings-new" | "printer-filled" | "printer-outlined" | "push-pin-filled" | "push-pin-outlined" | "receipt-filled" | "receipt-outlined" | "recycle" | "redeem" | "redo" | "refresh" | "refresh-alt" | "remove" | "remove-circle-filled" | "remove-circle-outlined" | "repeat" | "reply" | "save-alt" | "screen-outlined" | "search" | "send-filled" | "send-outlined" | "sentiment-dissatisfied-filled" | "sentiment-dissatisfied-outlined" | "sentiment-neutral-filled" | "sentiment-neutral-outlined" | "sentiment-satisfied-filled" | "sentiment-satisfied-outlined" | "sentiment-very-dissatisfied-filled" | "sentiment-very-dissatisfied-outlined" | "sentiment-very-satisfied-filled" | "sentiment-very-satisfied-outlined" | "settings-filled" | "settings-outlined" | "share-filled" | "share-outlined" | "shopping-bag-filled" | "shopping-bag-outlined" | "shopping-cart-add" | "shopping-cart-filled" | "shopping-cart-outlined" | "sprout" | "sprout-outline-outlined" | "star-filled" | "star-outlined" | "stay-primary-portrait" | "storefront" | "tag-filled" | "tag-outlined" | "textsms-filled" | "textsms-outlined" | "thumb-down-filled" | "thumb-down-outlined" | "thumb-up-filled" | "thumb-up-outlined" | "tiktok" | "toc" | "trash-filled" | "trash-outlined" | "truck-filled" | "truck-outlined" | "tune" | "twitter" | "undo" | "upload-filled" | "upload-outlined" | "user-circle-filled" | "user-circle-outlined" | "user-filled" | "user-outlined" | "user-square-filled" | "user-square-outlined" | "users-filled" | "users-outlined" | "view-grid-filled" | "view-grid-outlined" | "view-list-filled" | "view-list-outlined" | "warning-bubble-filled" | "warning-bubble-outlined" | "warning-filled" | "warning-outlined" | "whatsapp-filled" | "whatsapp-outlined" | "work-filled" | "work-outlined" | "wysiwyg-filled" | "youtube-filled" | "youtube-outlined" | "zoom-in" | "zoom-out";
18404
+ type IconName = "phone-call-outlined" | "add-circle-filled" | "add-circle-outlined" | "alarm-filled" | "alarm-outlined" | "alternate-email" | "archive-all-filled" | "archive-all-outlined" | "archive-filled" | "archive-in-filled" | "archive-in-outlined" | "archive-outlined" | "arrow-alt-down" | "arrow-alt-left" | "arrow-alt-right" | "arrow-alt-up" | "arrow-circle-down-filled" | "arrow-circle-down-outlined" | "arrow-circle-up-filled" | "arrow-circle-up-outlined" | "arrow-circled-down-circle-outlined" | "arrow-circled-down-filled" | "arrow-circled-up-circle-outlined" | "arrow-direction-down-up" | "arrow-direction-left-right" | "arrow-direction-right-left" | "arrow-direction-up-down" | "arrow-directions" | "arrow-down" | "arrow-down-left" | "arrow-down-right" | "arrow-first-page" | "arrow-last-page" | "arrow-left" | "arrow-line-down" | "arrow-line-left" | "arrow-line-long-down" | "arrow-line-long-left" | "arrow-line-long-right" | "arrow-line-long-up" | "arrow-line-right" | "arrow-line-up" | "arrow-right" | "arrow-subdirectory-left" | "arrow-subdirectory-right" | "arrow-trending-down" | "arrow-trending-up" | "arrow-up" | "arrow-up-left" | "arrow-up-right" | "attachment" | "backspace" | "backspace-outlined" | "barley" | "barley-off" | "bolt-circle-filled" | "bolt-circle-outlined" | "bookmark-filled" | "bookmark-outlined" | "calendar-date-range-filled" | "calendar-date-range-outlined" | "calendar-event-filled" | "calendar-event-outlined" | "calendar-filled" | "calendar-outlined" | "camera-filled" | "camera-outlined" | "camera-shutter-filled" | "camera-shutter-outlined" | "cancel-circle-filled" | "cancel-circle-outlined" | "car-filled" | "car-outlined" | "chart-bars-filled" | "chart-bars-outlined" | "chat-bubble-filled" | "chat-bubble-outlined" | "chat-message-filled" | "chat-message-outlined" | "check" | "check-circle-filled" | "check-circle-outlined" | "check-small" | "chevron-big-down" | "chevron-big-left" | "chevron-big-right" | "chevron-big-up" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "clock-filled" | "clock-outlined" | "close" | "cloud-filled" | "cloud-outlined" | "contact-support-filled" | "contact-support-outlined" | "content-copy-filled" | "content-copy-outlined" | "content-paste-filled" | "content-paste-outlined" | "conversation-filled" | "conversation-outlined" | "copyright-filled" | "copyright-outlined" | "credit-card-filled" | "credit-card-outlined" | "danger-filled" | "danger-outlined" | "dashboard-filled" | "dashboard-outlined" | "document-filled" | "document-outlined" | "document-text-filled" | "document-text-outlined" | "download-filled" | "download-outlined" | "eco-filled" | "eco-outlined" | "edit-filled" | "edit-outlined" | "euro-symbol" | "exit-fullscreen" | "eye-filled" | "eye-off-filled" | "eye-off-outlined" | "eye-outlined" | "facebook-filled" | "facebook-outlined" | "file-copy-filled" | "file-copy-outlined" | "filter-alt-filled" | "filter-alt-outlined" | "filter-list" | "fingerprint" | "flag-filled" | "flag-outlined" | "flag-tour-filled" | "flag-tour-outlined" | "flower-filled" | "flower-outlined" | "folder-filled" | "folder-list-filled" | "folder-list-outlined" | "folder-open" | "folder-outlined" | "fruit-apple-filled" | "fruit-apple-outlined" | "fullscreen-filled" | "fullscreen-outlined" | "google" | "google-play" | "headphones-filled" | "headphones-outlined" | "heart-filled" | "heart-outlined" | "help-filled" | "help-outlined" | "history" | "home-filled" | "home-outlined" | "image-filled" | "image-outlined" | "info-circle-filled" | "info-circle-outlined" | "instagram" | "instagram-outlined" | "label-filled" | "label-important-filled" | "label-important-outlined" | "label-outlined" | "language" | "lightbulb-filled" | "lightbulb-outlined" | "link" | "linkedin-filled" | "linkedin-outlined" | "loader" | "loading" | "lock-filled" | "lock-open-filled" | "lock-open-outlined" | "lock-outlined" | "login" | "logout" | "mail-filled" | "mail-open-filled" | "mail-open-outlined" | "mail-outlined" | "menu" | "menu-large" | "microphone-filled" | "microphone-outlined" | "minus" | "money-filled" | "money-outlined" | "mood-bad" | "mood-bad-outlined" | "mood-filled" | "mood-outlined" | "more-horiz" | "more-vert" | "music-note-filled" | "music-note-outlined" | "notification-filled" | "notification-outlined" | "open-in-new" | "package" | "package-outlined" | "pause-filled" | "pause-outlined" | "pets-filled" | "pets-outlined" | "phone-call-filled" | "phone-filled" | "phone-outlined" | "pin-filled" | "pin-outlined" | "play-arrow-filled" | "play-arrow-outlined" | "play-circle-filled" | "play-circle-outlined" | "plus" | "power-settings-new" | "printer-filled" | "printer-outlined" | "push-pin-filled" | "push-pin-outlined" | "receipt-filled" | "receipt-outlined" | "recycle" | "redeem" | "redo" | "refresh" | "refresh-alt" | "remove" | "remove-circle-filled" | "remove-circle-outlined" | "repeat" | "reply" | "save-alt" | "screen-outlined" | "search" | "send-filled" | "send-outlined" | "sentiment-dissatisfied-filled" | "sentiment-dissatisfied-outlined" | "sentiment-neutral-filled" | "sentiment-neutral-outlined" | "sentiment-satisfied-filled" | "sentiment-satisfied-outlined" | "sentiment-very-dissatisfied-filled" | "sentiment-very-dissatisfied-outlined" | "sentiment-very-satisfied-filled" | "sentiment-very-satisfied-outlined" | "settings-filled" | "settings-outlined" | "share-filled" | "share-outlined" | "shopping-bag-filled" | "shopping-bag-outlined" | "shopping-cart-add" | "shopping-cart-filled" | "shopping-cart-outlined" | "sprout" | "sprout-outline-outlined" | "star-filled" | "star-outlined" | "stay-primary-portrait" | "storefront" | "tag-filled" | "tag-outlined" | "textsms-filled" | "textsms-outlined" | "thumb-down-filled" | "thumb-down-outlined" | "thumb-up-filled" | "thumb-up-outlined" | "tiktok" | "toc" | "trash-filled" | "trash-outlined" | "truck-filled" | "truck-outlined" | "tune" | "twitter" | "undo" | "upload-filled" | "upload-outlined" | "user-circle-filled" | "user-circle-outlined" | "user-filled" | "user-outlined" | "user-square-filled" | "user-square-outlined" | "users-filled" | "users-outlined" | "view-grid-filled" | "view-grid-outlined" | "view-list-filled" | "view-list-outlined" | "warning-bubble-filled" | "warning-bubble-outlined" | "warning-filled" | "warning-outlined" | "whatsapp-filled" | "whatsapp-outlined" | "work-filled" | "work-outlined" | "wysiwyg-filled" | "youtube-filled" | "youtube-outlined" | "zoom-in" | "zoom-out";
18396
18405
 
18397
18406
  declare global {
18398
18407
  interface HTMLElementTagNameMap {
@@ -18741,9 +18750,31 @@ declare global {
18741
18750
  * ---
18742
18751
  * The Checkbox allows users to select one or more items from a set and can be used to enable or disable an option.
18743
18752
  *
18744
- See [a complete document](https://rarui.rarolabs.com.br/docs/components-web-components/input/checkbox) for more details.
18753
+ * Features hybrid behavior:
18754
+ * - **Controlled mode**: When `checked` prop is provided, works like React controlled component
18755
+ * - **Native mode**: When `checked` prop is not provided, works like native HTML checkbox
18756
+ *
18757
+ * See [a complete document](https://rarui.rarolabs.com.br/docs/components-web-components/input/checkbox) for more details.
18745
18758
  */
18746
- type CheckboxManifestProperties = CheckboxProps;
18759
+ type CheckboxManifestProperties = CheckboxProps & {
18760
+ /**
18761
+ * Controls the checked state of the checkbox.
18762
+ *
18763
+ * **Hybrid Behavior:**
18764
+ * - When provided: Checkbox works in controlled mode - external prop controls the state
18765
+ * - When not provided: Checkbox works in native mode - maintains its own internal state
18766
+ *
18767
+ * @default undefined (native mode)
18768
+ */
18769
+ checked?: boolean;
18770
+ /**
18771
+ * Makes the checkbox read-only, preventing user interaction.
18772
+ * When true, the checkbox displays its current state but cannot be changed by clicking.
18773
+ *
18774
+ * @default false
18775
+ */
18776
+ readonly?: boolean;
18777
+ };
18747
18778
  type CheckboxProperties = WebComponentProperties<CheckboxManifestProperties>;
18748
18779
 
18749
18780
  declare class RaruiCheckbox extends LitElement {
@@ -18752,7 +18783,14 @@ declare class RaruiCheckbox extends LitElement {
18752
18783
  error: CheckboxProperties["error"];
18753
18784
  indeterminate: CheckboxProperties["indeterminate"];
18754
18785
  disabled: boolean;
18786
+ checked: boolean;
18787
+ private _hasCheckedAttribute;
18788
+ readonly: boolean;
18789
+ private input;
18755
18790
  static styles: CSSResult;
18791
+ connectedCallback(): void;
18792
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
18793
+ updated(changedProperties: Map<string, any>): void;
18756
18794
  render(): TemplateResult<1>;
18757
18795
  private _onChange;
18758
18796
  }
@@ -18804,7 +18842,11 @@ declare global {
18804
18842
  * ---
18805
18843
  * An suspended menu displays a list of options on a temporary surface.
18806
18844
  *
18807
- See [a complete document](https://rarui.rarolabs.com.br/docs/components-web-components/input/dropdown) for more details.
18845
+ * Features hybrid behavior:
18846
+ * - **Controlled mode**: When `visible` prop is provided, works like React controlled component
18847
+ * - **Native mode**: When `visible` prop is not provided, manages its own internal state
18848
+ *
18849
+ * See [a complete document](https://rarui.rarolabs.com.br/docs/components-web-components/input/dropdown) for more details.
18808
18850
  */
18809
18851
  type DropdownManifestProperties = DropdownProps & {
18810
18852
  /**
@@ -18825,6 +18867,16 @@ type DropdownManifestProperties = DropdownProps & {
18825
18867
  * @default fixed
18826
18868
  */
18827
18869
  strategy?: "fixed" | "absolute";
18870
+ /**
18871
+ * Controls the visibility state of the dropdown.
18872
+ *
18873
+ * **Hybrid Behavior:**
18874
+ * - When provided: Dropdown works in controlled mode - external prop controls the state
18875
+ * - When not provided: Dropdown works in native mode - manages its own internal state
18876
+ *
18877
+ * @default undefined (native mode)
18878
+ */
18879
+ visible?: boolean;
18828
18880
  };
18829
18881
  type DropdownProperties = WebComponentProperties<DropdownManifestProperties, "onVisibility" | "portalId">;
18830
18882
 
@@ -18842,16 +18894,20 @@ declare class RaruiDropdown extends LitElement {
18842
18894
  set visible(value: boolean | undefined);
18843
18895
  get visible(): boolean | undefined;
18844
18896
  private _visible?;
18897
+ private _hasVisibleAttribute;
18845
18898
  reference: HTMLElement;
18846
18899
  floating: HTMLElement;
18847
18900
  static styles: CSSResult;
18848
18901
  cleanupAutoUpdate?: () => void;
18849
18902
  private updatePositionDebounceId;
18850
18903
  connectedCallback(): void;
18904
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
18851
18905
  disconnectedCallback(): void;
18852
18906
  updated(changed: Map<string, any>): void;
18853
18907
  private scheduleUpdatePosition;
18854
18908
  private handleClickOutside;
18909
+ private handleKeyDown;
18910
+ private closeDropdown;
18855
18911
  private handleClick;
18856
18912
  updatePosition(): Promise<void>;
18857
18913
  private getMiddleware;
@@ -18877,6 +18933,7 @@ type DropdownItemProperties = WebComponentProperties<DropdownItemManifestPropert
18877
18933
  declare class RaruiDropdownItem extends LitElement {
18878
18934
  name: DropdownItemProperties["name"];
18879
18935
  selected: DropdownItemProperties["selected"];
18936
+ attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
18880
18937
  static styles: CSSResult;
18881
18938
  render(): TemplateResult<1>;
18882
18939
  }
@@ -18991,6 +19048,12 @@ declare class RaruiRadioButton extends LitElement {
18991
19048
  private _onChange;
18992
19049
  }
18993
19050
 
19051
+ declare global {
19052
+ interface HTMLElementTagNameMap {
19053
+ "rarui-select": any;
19054
+ }
19055
+ }
19056
+
18994
19057
  declare global {
18995
19058
  interface HTMLElementTagNameMap {
18996
19059
  "rarui-textarea": RaruiTextarea;