@lucasbernardosn/react-ui 0.2.0 → 0.4.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/README.md +142 -0
- package/dist/components/buttons/button/button-variants.js +2 -7
- package/dist/components/buttons/button/button-variants.js.map +1 -1
- package/dist/components/buttons/button/button.d.ts +1 -1
- package/dist/components/buttons/button/button.js +1 -1
- package/dist/components/buttons/button/button.js.map +1 -1
- package/dist/components/buttons/clipboard-button/clipboard-button.d.ts +1 -1
- package/dist/components/buttons/clipboard-button/clipboard-button.js +1 -1
- package/dist/components/buttons/clipboard-button/clipboard-button.js.map +1 -1
- package/dist/components/buttons/close-button/close-button.d.ts +1 -1
- package/dist/components/buttons/close-button/close-button.js.map +1 -1
- package/dist/components/buttons/icon-button/icon-button.d.ts +1 -1
- package/dist/components/buttons/icon-button/icon-button.js +1 -1
- package/dist/components/buttons/icon-button/icon-button.js.map +1 -1
- package/dist/components/buttons/responsive-button/responsive-button.d.ts +1 -1
- package/dist/components/buttons/responsive-button/responsive-button.js.map +1 -1
- package/dist/components/collections/async-select/async-select-aria-messages.d.ts +15 -0
- package/dist/components/collections/async-select/async-select-aria-messages.js +51 -0
- package/dist/components/collections/async-select/async-select-aria-messages.js.map +1 -0
- package/dist/components/collections/async-select/async-select-components.d.ts +5 -0
- package/dist/components/collections/async-select/async-select-components.js +67 -0
- package/dist/components/collections/async-select/async-select-components.js.map +1 -0
- package/dist/components/collections/async-select/async-select-variants.d.ts +23 -0
- package/dist/components/collections/async-select/async-select-variants.js +378 -0
- package/dist/components/collections/async-select/async-select-variants.js.map +1 -0
- package/dist/components/collections/async-select/async-select.d.ts +62 -0
- package/dist/components/collections/async-select/async-select.js +121 -0
- package/dist/components/collections/async-select/async-select.js.map +1 -0
- package/dist/components/collections/async-select/index.d.ts +3 -0
- package/dist/components/collections/async-select/index.js +2 -0
- package/dist/components/collections/async-select/use-async-select-load.d.ts +26 -0
- package/dist/components/collections/async-select/use-async-select-load.js +76 -0
- package/dist/components/collections/async-select/use-async-select-load.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-arrow.d.ts +14 -0
- package/dist/components/collections/autocomplete/autocomplete-arrow.js +43 -0
- package/dist/components/collections/autocomplete/autocomplete-arrow.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-backdrop.d.ts +16 -0
- package/dist/components/collections/autocomplete/autocomplete-backdrop.js +36 -0
- package/dist/components/collections/autocomplete/autocomplete-backdrop.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-clear.d.ts +17 -0
- package/dist/components/collections/autocomplete/autocomplete-clear.js +47 -0
- package/dist/components/collections/autocomplete/autocomplete-clear.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-collection.d.ts +14 -0
- package/dist/components/collections/autocomplete/autocomplete-collection.js +15 -0
- package/dist/components/collections/autocomplete/autocomplete-collection.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-empty.d.ts +14 -0
- package/dist/components/collections/autocomplete/autocomplete-empty.js +24 -0
- package/dist/components/collections/autocomplete/autocomplete-empty.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-group-label-variants.d.ts +12 -0
- package/dist/components/collections/autocomplete/autocomplete-group-label-variants.js +65 -0
- package/dist/components/collections/autocomplete/autocomplete-group-label-variants.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-group-label.d.ts +13 -0
- package/dist/components/collections/autocomplete/autocomplete-group-label.js +23 -0
- package/dist/components/collections/autocomplete/autocomplete-group-label.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-group.d.ts +14 -0
- package/dist/components/collections/autocomplete/autocomplete-group.js +18 -0
- package/dist/components/collections/autocomplete/autocomplete-group.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-icon.d.ts +13 -0
- package/dist/components/collections/autocomplete/autocomplete-icon.js +23 -0
- package/dist/components/collections/autocomplete/autocomplete-icon.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-input-group-variants.d.ts +18 -0
- package/dist/components/collections/autocomplete/autocomplete-input-group-variants.js +38 -0
- package/dist/components/collections/autocomplete/autocomplete-input-group-variants.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-input-group.d.ts +15 -0
- package/dist/components/collections/autocomplete/autocomplete-input-group.js +25 -0
- package/dist/components/collections/autocomplete/autocomplete-input-group.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-input-variants.d.ts +14 -0
- package/dist/components/collections/autocomplete/autocomplete-input-variants.js +123 -0
- package/dist/components/collections/autocomplete/autocomplete-input-variants.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-input.d.ts +16 -0
- package/dist/components/collections/autocomplete/autocomplete-input.js +29 -0
- package/dist/components/collections/autocomplete/autocomplete-input.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-item-variants.d.ts +12 -0
- package/dist/components/collections/autocomplete/autocomplete-item-variants.js +85 -0
- package/dist/components/collections/autocomplete/autocomplete-item-variants.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-item.d.ts +14 -0
- package/dist/components/collections/autocomplete/autocomplete-item.js +24 -0
- package/dist/components/collections/autocomplete/autocomplete-item.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-list.d.ts +14 -0
- package/dist/components/collections/autocomplete/autocomplete-list.js +31 -0
- package/dist/components/collections/autocomplete/autocomplete-list.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-message-variants.d.ts +13 -0
- package/dist/components/collections/autocomplete/autocomplete-message-variants.js +54 -0
- package/dist/components/collections/autocomplete/autocomplete-message-variants.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-popup-variants.d.ts +13 -0
- package/dist/components/collections/autocomplete/autocomplete-popup-variants.js +43 -0
- package/dist/components/collections/autocomplete/autocomplete-popup-variants.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-popup.d.ts +14 -0
- package/dist/components/collections/autocomplete/autocomplete-popup.js +22 -0
- package/dist/components/collections/autocomplete/autocomplete-popup.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-portal.d.ts +13 -0
- package/dist/components/collections/autocomplete/autocomplete-portal.js +17 -0
- package/dist/components/collections/autocomplete/autocomplete-portal.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-positioner.d.ts +16 -0
- package/dist/components/collections/autocomplete/autocomplete-positioner.js +28 -0
- package/dist/components/collections/autocomplete/autocomplete-positioner.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-root.d.ts +66 -0
- package/dist/components/collections/autocomplete/autocomplete-root.js +18 -0
- package/dist/components/collections/autocomplete/autocomplete-root.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-row.d.ts +14 -0
- package/dist/components/collections/autocomplete/autocomplete-row.js +18 -0
- package/dist/components/collections/autocomplete/autocomplete-row.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-separator.d.ts +16 -0
- package/dist/components/collections/autocomplete/autocomplete-separator.js +28 -0
- package/dist/components/collections/autocomplete/autocomplete-separator.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-status.d.ts +17 -0
- package/dist/components/collections/autocomplete/autocomplete-status.js +27 -0
- package/dist/components/collections/autocomplete/autocomplete-status.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-trigger.d.ts +14 -0
- package/dist/components/collections/autocomplete/autocomplete-trigger.js +37 -0
- package/dist/components/collections/autocomplete/autocomplete-trigger.js.map +1 -0
- package/dist/components/collections/autocomplete/autocomplete-value.d.ts +14 -0
- package/dist/components/collections/autocomplete/autocomplete-value.js +15 -0
- package/dist/components/collections/autocomplete/autocomplete-value.js.map +1 -0
- package/dist/components/collections/autocomplete/index.d.ts +2 -0
- package/dist/components/collections/autocomplete/index.js +2 -0
- package/dist/components/collections/autocomplete/index.parts.d.ts +29 -0
- package/dist/components/collections/autocomplete/index.parts.js +53 -0
- package/dist/components/collections/autocomplete/index.parts.js.map +1 -0
- package/dist/components/collections/autocomplete/use-autocomplete-context.d.ts +24 -0
- package/dist/components/collections/autocomplete/use-autocomplete-context.js +14 -0
- package/dist/components/collections/autocomplete/use-autocomplete-context.js.map +1 -0
- package/dist/components/collections/autocomplete/use-autocomplete-filter.d.ts +22 -0
- package/dist/components/collections/autocomplete/use-autocomplete-filter.js +22 -0
- package/dist/components/collections/autocomplete/use-autocomplete-filter.js.map +1 -0
- package/dist/components/collections/select/select-group-label-variants.d.ts +2 -2
- package/dist/components/collections/select/select-group-label-variants.js +2 -2
- package/dist/components/collections/select/select-group-label-variants.js.map +1 -1
- package/dist/components/collections/select/select-item-variants.d.ts +2 -2
- package/dist/components/collections/select/select-item-variants.js +2 -2
- package/dist/components/collections/select/select-item-variants.js.map +1 -1
- package/dist/components/collections/select/select-root.d.ts +1 -1
- package/dist/components/collections/select/select-root.js +1 -1
- package/dist/components/collections/select/select-root.js.map +1 -1
- package/dist/components/collections/select/select-separator.d.ts +2 -2
- package/dist/components/collections/select/select-separator.js +2 -2
- package/dist/components/collections/select/select-separator.js.map +1 -1
- package/dist/components/collections/select/select-trigger-variants.d.ts +2 -2
- package/dist/components/collections/select/select-trigger-variants.js +2 -2
- package/dist/components/collections/select/select-trigger-variants.js.map +1 -1
- package/dist/components/collections/select/select-value.js +1 -1
- package/dist/components/collections/select/select-value.js.map +1 -1
- package/dist/components/collections/tree-view/index.parts.d.ts +3 -3
- package/dist/components/collections/tree-view/index.parts.js.map +1 -1
- package/dist/components/collections/tree-view/tree-view-branch-content.d.ts +1 -1
- package/dist/components/collections/tree-view/tree-view-branch-content.js +1 -1
- package/dist/components/collections/tree-view/tree-view-branch-content.js.map +1 -1
- package/dist/components/collections/tree-view/tree-view-branch.d.ts +1 -1
- package/dist/components/collections/tree-view/tree-view-branch.js.map +1 -1
- package/dist/components/collections/tree-view/tree-view-node-provider.d.ts +1 -1
- package/dist/components/collections/tree-view/tree-view-node-provider.js +1 -1
- package/dist/components/collections/tree-view/tree-view-node-provider.js.map +1 -1
- package/dist/components/collections/tree-view/tree-view-node.js +5 -0
- package/dist/components/collections/tree-view/tree-view-node.js.map +1 -1
- package/dist/components/collections/tree-view/tree-view-root-provider.d.ts +1 -1
- package/dist/components/collections/tree-view/tree-view-root-provider.js +1 -1
- package/dist/components/collections/tree-view/tree-view-root-provider.js.map +1 -1
- package/dist/components/collections/tree-view/tree-view-root.d.ts +1 -1
- package/dist/components/collections/tree-view/tree-view-root.js +1 -1
- package/dist/components/collections/tree-view/tree-view-root.js.map +1 -1
- package/dist/components/collections/tree-view/use-tree-view.d.ts +1 -1
- package/dist/components/collections/tree-view/use-tree-view.js.map +1 -1
- package/dist/components/disclosure/breadcrumb/breadcrumb-ellipsis.d.ts +27 -0
- package/dist/components/disclosure/breadcrumb/breadcrumb-ellipsis.js +59 -0
- package/dist/components/disclosure/breadcrumb/breadcrumb-ellipsis.js.map +1 -0
- package/dist/components/disclosure/breadcrumb/breadcrumb-list.js +1 -1
- package/dist/components/disclosure/breadcrumb/breadcrumb-list.js.map +1 -1
- package/dist/components/disclosure/breadcrumb/breadcrumb-separator.d.ts +2 -2
- package/dist/components/disclosure/breadcrumb/breadcrumb-separator.js +4 -3
- package/dist/components/disclosure/breadcrumb/breadcrumb-separator.js.map +1 -1
- package/dist/components/disclosure/breadcrumb/index.parts.d.ts +3 -2
- package/dist/components/disclosure/breadcrumb/index.parts.js +3 -1
- package/dist/components/disclosure/breadcrumb/index.parts.js.map +1 -1
- package/dist/components/disclosure/collapsible/collapsible-panel.d.ts +1 -1
- package/dist/components/disclosure/collapsible/collapsible-panel.js +1 -1
- package/dist/components/disclosure/collapsible/collapsible-panel.js.map +1 -1
- package/dist/components/disclosure/tabs/tabs-indicator-variants.d.ts +1 -1
- package/dist/components/disclosure/tabs/tabs-list-variants.d.ts +1 -1
- package/dist/components/disclosure/tabs/tabs-root.d.ts +1 -1
- package/dist/components/disclosure/tabs/tabs-root.js +1 -1
- package/dist/components/disclosure/tabs/tabs-root.js.map +1 -1
- package/dist/components/disclosure/tabs/tabs-tab-variants.d.ts +1 -1
- package/dist/components/display/avatar/avatar-fallback.d.ts +17 -0
- package/dist/components/display/avatar/avatar-fallback.js +44 -0
- package/dist/components/display/avatar/avatar-fallback.js.map +1 -0
- package/dist/components/display/avatar/avatar-image.d.ts +18 -0
- package/dist/components/display/avatar/avatar-image.js +33 -0
- package/dist/components/display/avatar/avatar-image.js.map +1 -0
- package/dist/components/display/avatar/avatar-root-variants.d.ts +39 -0
- package/dist/components/display/avatar/avatar-root-variants.js +315 -0
- package/dist/components/display/avatar/avatar-root-variants.js.map +1 -0
- package/dist/components/display/avatar/avatar-root.d.ts +31 -0
- package/dist/components/display/avatar/avatar-root.js +52 -0
- package/dist/components/display/avatar/avatar-root.js.map +1 -0
- package/dist/components/display/avatar/get-avatar-color-scheme.d.ts +10 -0
- package/dist/components/display/avatar/get-avatar-color-scheme.js +45 -0
- package/dist/components/display/avatar/get-avatar-color-scheme.js.map +1 -0
- package/dist/components/display/avatar/index.d.ts +2 -0
- package/dist/components/display/avatar/index.js +2 -0
- package/dist/components/display/avatar/index.parts.d.ts +10 -0
- package/dist/components/display/avatar/index.parts.js +14 -0
- package/dist/components/display/avatar/index.parts.js.map +1 -0
- package/dist/components/display/avatar/use-avatar-context.d.ts +8 -0
- package/dist/components/display/avatar/use-avatar-context.js +10 -0
- package/dist/components/display/avatar/use-avatar-context.js.map +1 -0
- package/dist/components/display/badge/badge-variants.d.ts +44 -0
- package/dist/components/display/badge/badge-variants.js +335 -0
- package/dist/components/display/badge/badge-variants.js.map +1 -0
- package/dist/components/display/badge/badge.d.ts +32 -0
- package/dist/components/display/badge/badge.js +78 -0
- package/dist/components/display/badge/badge.js.map +1 -0
- package/dist/components/display/badge/index.d.ts +3 -0
- package/dist/components/display/badge/index.js +2 -0
- package/dist/components/display/card/card-body.js +1 -0
- package/dist/components/display/card/card-body.js.map +1 -1
- package/dist/components/display/card/card-root.d.ts +1 -1
- package/dist/components/display/card/card-root.js +1 -1
- package/dist/components/display/card/card-root.js.map +1 -1
- package/dist/components/display/card/card-title.d.ts +1 -1
- package/dist/components/display/card/card-title.js.map +1 -1
- package/dist/components/display/clipboard/clipboard-indicator.d.ts +1 -1
- package/dist/components/display/clipboard/clipboard-indicator.js.map +1 -1
- package/dist/components/display/clipboard/clipboard-root-provider.d.ts +1 -1
- package/dist/components/display/clipboard/clipboard-root-provider.js.map +1 -1
- package/dist/components/display/clipboard/clipboard-root.d.ts +1 -1
- package/dist/components/display/clipboard/clipboard-root.js +1 -1
- package/dist/components/display/clipboard/clipboard-root.js.map +1 -1
- package/dist/components/display/clipboard/use-clipboard.d.ts +1 -1
- package/dist/components/display/clipboard/use-clipboard.js.map +1 -1
- package/dist/components/display/data-list/data-list-item-label-variants.d.ts +7 -0
- package/dist/components/display/data-list/data-list-item-label-variants.js +27 -0
- package/dist/components/display/data-list/data-list-item-label-variants.js.map +1 -0
- package/dist/components/display/data-list/data-list-item-label.d.ts +2 -1
- package/dist/components/display/data-list/data-list-item-label.js +9 -2
- package/dist/components/display/data-list/data-list-item-label.js.map +1 -1
- package/dist/components/display/data-list/data-list-item-value-variants.d.ts +1 -1
- package/dist/components/display/data-list/data-list-item-value-variants.js +9 -5
- package/dist/components/display/data-list/data-list-item-value-variants.js.map +1 -1
- package/dist/components/display/data-list/data-list-item-value.d.ts +2 -1
- package/dist/components/display/data-list/data-list-item-value.js +4 -3
- package/dist/components/display/data-list/data-list-item-value.js.map +1 -1
- package/dist/components/display/data-list/data-list-item-variants.d.ts +1 -5
- package/dist/components/display/data-list/data-list-item-variants.js +24 -26
- package/dist/components/display/data-list/data-list-item-variants.js.map +1 -1
- package/dist/components/display/data-list/data-list-item.d.ts +2 -1
- package/dist/components/display/data-list/data-list-item.js +7 -3
- package/dist/components/display/data-list/data-list-item.js.map +1 -1
- package/dist/components/display/data-list/data-list-root-variants.d.ts +1 -2
- package/dist/components/display/data-list/data-list-root-variants.js +7 -24
- package/dist/components/display/data-list/data-list-root-variants.js.map +1 -1
- package/dist/components/display/data-list/data-list-root.d.ts +4 -3
- package/dist/components/display/data-list/data-list-root.js +9 -4
- package/dist/components/display/data-list/data-list-root.js.map +1 -1
- package/dist/components/display/data-list/use-data-list-context.d.ts +18 -7
- package/dist/components/display/data-list/use-data-list-context.js +3 -2
- package/dist/components/display/data-list/use-data-list-context.js.map +1 -1
- package/dist/components/display/status/index.d.ts +3 -0
- package/dist/components/display/status/index.js +2 -0
- package/dist/components/display/status/status-variants.d.ts +31 -0
- package/dist/components/display/status/status-variants.js +46 -0
- package/dist/components/display/status/status-variants.js.map +1 -0
- package/dist/components/display/status/status.d.ts +23 -0
- package/dist/components/display/status/status.js +36 -0
- package/dist/components/display/status/status.js.map +1 -0
- package/dist/components/display/tag/index.d.ts +2 -0
- package/dist/components/display/tag/index.js +2 -0
- package/dist/components/display/tag/index.parts.d.ts +10 -0
- package/dist/components/display/tag/index.parts.js +14 -0
- package/dist/components/display/tag/index.parts.js.map +1 -0
- package/dist/components/display/tag/tag-close.d.ts +16 -0
- package/dist/components/display/tag/tag-close.js +44 -0
- package/dist/components/display/tag/tag-close.js.map +1 -0
- package/dist/components/display/tag/tag-label.d.ts +12 -0
- package/dist/components/display/tag/tag-label.js +23 -0
- package/dist/components/display/tag/tag-label.js.map +1 -0
- package/dist/components/display/tag/tag-root-variants.d.ts +38 -0
- package/dist/components/display/tag/tag-root-variants.js +332 -0
- package/dist/components/display/tag/tag-root-variants.js.map +1 -0
- package/dist/components/display/tag/tag-root.d.ts +29 -0
- package/dist/components/display/tag/tag-root.js +46 -0
- package/dist/components/display/tag/tag-root.js.map +1 -0
- package/dist/components/feedback/alert/alert-content.d.ts +13 -0
- package/dist/components/feedback/alert/alert-content.js +30 -0
- package/dist/components/feedback/alert/alert-content.js.map +1 -0
- package/dist/components/feedback/alert/alert-description.d.ts +17 -0
- package/dist/components/feedback/alert/alert-description.js +33 -0
- package/dist/components/feedback/alert/alert-description.js.map +1 -0
- package/dist/components/feedback/alert/alert-indicator.d.ts +21 -0
- package/dist/components/feedback/alert/alert-indicator.js +56 -0
- package/dist/components/feedback/alert/alert-indicator.js.map +1 -0
- package/dist/components/feedback/alert/alert-root-variants.d.ts +13 -0
- package/dist/components/feedback/alert/alert-root-variants.js +75 -0
- package/dist/components/feedback/alert/alert-root-variants.js.map +1 -0
- package/dist/components/feedback/alert/alert-root.d.ts +33 -0
- package/dist/components/feedback/alert/alert-root.js +52 -0
- package/dist/components/feedback/alert/alert-root.js.map +1 -0
- package/dist/components/feedback/alert/alert-title.d.ts +22 -0
- package/dist/components/feedback/alert/alert-title.js +39 -0
- package/dist/components/feedback/alert/alert-title.js.map +1 -0
- package/dist/components/feedback/alert/index.d.ts +2 -0
- package/dist/components/feedback/alert/index.js +2 -0
- package/dist/components/feedback/alert/index.parts.d.ts +12 -0
- package/dist/components/feedback/alert/index.parts.js +18 -0
- package/dist/components/feedback/alert/index.parts.js.map +1 -0
- package/dist/components/feedback/alert/use-alert-context.d.ts +23 -0
- package/dist/components/feedback/alert/use-alert-context.js +14 -0
- package/dist/components/feedback/alert/use-alert-context.js.map +1 -0
- package/dist/components/feedback/empty-state/empty-state-root.d.ts +1 -1
- package/dist/components/feedback/empty-state/empty-state-root.js +1 -1
- package/dist/components/feedback/empty-state/empty-state-root.js.map +1 -1
- package/dist/components/feedback/empty-state/empty-state-title.d.ts +1 -1
- package/dist/components/feedback/empty-state/empty-state-title.js.map +1 -1
- package/dist/components/feedback/skeleton/skeleton-text.d.ts +1 -1
- package/dist/components/feedback/skeleton/skeleton-text.js +1 -1
- package/dist/components/feedback/skeleton/skeleton-text.js.map +1 -1
- package/dist/components/feedback/skeleton/skeleton.d.ts +1 -1
- package/dist/components/feedback/skeleton/skeleton.js +1 -1
- package/dist/components/feedback/skeleton/skeleton.js.map +1 -1
- package/dist/components/feedback/spinner/spinner.d.ts +1 -1
- package/dist/components/feedback/spinner/spinner.js +1 -1
- package/dist/components/feedback/spinner/spinner.js.map +1 -1
- package/dist/components/feedback/toast/index.d.ts +2 -0
- package/dist/components/feedback/toast/index.js +2 -0
- package/dist/components/feedback/toast/index.parts.d.ts +20 -0
- package/dist/components/feedback/toast/index.parts.js +37 -0
- package/dist/components/feedback/toast/index.parts.js.map +1 -0
- package/dist/components/feedback/toast/toast-action.d.ts +14 -0
- package/dist/components/feedback/toast/toast-action.js +21 -0
- package/dist/components/feedback/toast/toast-action.js.map +1 -0
- package/dist/components/feedback/toast/toast-close.d.ts +13 -0
- package/dist/components/feedback/toast/toast-close.js +20 -0
- package/dist/components/feedback/toast/toast-close.js.map +1 -0
- package/dist/components/feedback/toast/toast-content.d.ts +18 -0
- package/dist/components/feedback/toast/toast-content.js +35 -0
- package/dist/components/feedback/toast/toast-content.js.map +1 -0
- package/dist/components/feedback/toast/toast-description.d.ts +17 -0
- package/dist/components/feedback/toast/toast-description.js +29 -0
- package/dist/components/feedback/toast/toast-description.js.map +1 -0
- package/dist/components/feedback/toast/toast-indicator-variants.d.ts +10 -0
- package/dist/components/feedback/toast/toast-indicator-variants.js +27 -0
- package/dist/components/feedback/toast/toast-indicator-variants.js.map +1 -0
- package/dist/components/feedback/toast/toast-indicator.d.ts +18 -0
- package/dist/components/feedback/toast/toast-indicator.js +45 -0
- package/dist/components/feedback/toast/toast-indicator.js.map +1 -0
- package/dist/components/feedback/toast/toast-manager.d.ts +80 -0
- package/dist/components/feedback/toast/toast-manager.js +138 -0
- package/dist/components/feedback/toast/toast-manager.js.map +1 -0
- package/dist/components/feedback/toast/toast-outlet.d.ts +28 -0
- package/dist/components/feedback/toast/toast-outlet.js +108 -0
- package/dist/components/feedback/toast/toast-outlet.js.map +1 -0
- package/dist/components/feedback/toast/toast-placement.d.ts +20 -0
- package/dist/components/feedback/toast/toast-placement.js +51 -0
- package/dist/components/feedback/toast/toast-placement.js.map +1 -0
- package/dist/components/feedback/toast/toast-portal.d.ts +13 -0
- package/dist/components/feedback/toast/toast-portal.js +17 -0
- package/dist/components/feedback/toast/toast-portal.js.map +1 -0
- package/dist/components/feedback/toast/toast-provider.d.ts +15 -0
- package/dist/components/feedback/toast/toast-provider.js +17 -0
- package/dist/components/feedback/toast/toast-provider.js.map +1 -0
- package/dist/components/feedback/toast/toast-root-variants.d.ts +47 -0
- package/dist/components/feedback/toast/toast-root-variants.js +142 -0
- package/dist/components/feedback/toast/toast-root-variants.js.map +1 -0
- package/dist/components/feedback/toast/toast-root.d.ts +34 -0
- package/dist/components/feedback/toast/toast-root.js +67 -0
- package/dist/components/feedback/toast/toast-root.js.map +1 -0
- package/dist/components/feedback/toast/toast-title.d.ts +18 -0
- package/dist/components/feedback/toast/toast-title.js +31 -0
- package/dist/components/feedback/toast/toast-title.js.map +1 -0
- package/dist/components/feedback/toast/toast-viewport-variants.d.ts +17 -0
- package/dist/components/feedback/toast/toast-viewport-variants.js +33 -0
- package/dist/components/feedback/toast/toast-viewport-variants.js.map +1 -0
- package/dist/components/feedback/toast/toast-viewport.d.ts +19 -0
- package/dist/components/feedback/toast/toast-viewport.js +39 -0
- package/dist/components/feedback/toast/toast-viewport.js.map +1 -0
- package/dist/components/feedback/toast/use-toast-context.d.ts +18 -0
- package/dist/components/feedback/toast/use-toast-context.js +11 -0
- package/dist/components/feedback/toast/use-toast-context.js.map +1 -0
- package/dist/components/feedback/toast/use-toast-manager.d.ts +10 -0
- package/dist/components/feedback/toast/use-toast-manager.js +12 -0
- package/dist/components/feedback/toast/use-toast-manager.js.map +1 -0
- package/dist/components/feedback/toast/use-toast-root-context.d.ts +9 -0
- package/dist/components/feedback/toast/use-toast-root-context.js +10 -0
- package/dist/components/feedback/toast/use-toast-root-context.js.map +1 -0
- package/dist/components/fields/checkbox/checkbox-root.d.ts +1 -1
- package/dist/components/fields/checkbox/checkbox-root.js +1 -1
- package/dist/components/fields/checkbox/checkbox-root.js.map +1 -1
- package/dist/components/fields/currency-brl-input/currency-brl-input-variants.js +2 -4
- package/dist/components/fields/currency-brl-input/currency-brl-input-variants.js.map +1 -1
- package/dist/components/fields/currency-brl-input/currency-brl-input.d.ts +1 -1
- package/dist/components/fields/currency-brl-input/currency-brl-input.js +1 -1
- package/dist/components/fields/currency-brl-input/currency-brl-input.js.map +1 -1
- package/dist/components/fields/field/field-root.d.ts +1 -1
- package/dist/components/fields/field/field-root.js +1 -1
- package/dist/components/fields/field/field-root.js.map +1 -1
- package/dist/components/fields/form/form.d.ts +1 -1
- package/dist/components/fields/form/form.js.map +1 -1
- package/dist/components/fields/input/input-variants.d.ts +5 -4
- package/dist/components/fields/input/input-variants.js +8 -9
- package/dist/components/fields/input/input-variants.js.map +1 -1
- package/dist/components/fields/input/input.d.ts +1 -1
- package/dist/components/fields/input/input.js +1 -1
- package/dist/components/fields/input/input.js.map +1 -1
- package/dist/components/fields/number-input/number-input-variants.js +2 -4
- package/dist/components/fields/number-input/number-input-variants.js.map +1 -1
- package/dist/components/fields/number-input/number-input.d.ts +1 -1
- package/dist/components/fields/number-input/number-input.js +1 -1
- package/dist/components/fields/number-input/number-input.js.map +1 -1
- package/dist/components/fields/password-input/password-input.d.ts +1 -1
- package/dist/components/fields/password-input/password-input.js +1 -1
- package/dist/components/fields/password-input/password-input.js.map +1 -1
- package/dist/components/fields/pattern-input/pattern-input-variants.js +2 -4
- package/dist/components/fields/pattern-input/pattern-input-variants.js.map +1 -1
- package/dist/components/fields/pattern-input/pattern-input.d.ts +1 -1
- package/dist/components/fields/pattern-input/pattern-input.js +1 -1
- package/dist/components/fields/pattern-input/pattern-input.js.map +1 -1
- package/dist/components/fields/switch/switch-root.d.ts +1 -1
- package/dist/components/fields/switch/switch-root.js +1 -1
- package/dist/components/fields/switch/switch-root.js.map +1 -1
- package/dist/components/fields/textarea/textarea-variants.js +2 -4
- package/dist/components/fields/textarea/textarea-variants.js.map +1 -1
- package/dist/components/fields/textarea/textarea.d.ts +1 -1
- package/dist/components/fields/textarea/textarea.js +1 -1
- package/dist/components/fields/textarea/textarea.js.map +1 -1
- package/dist/components/layout/center-absolute/center-absolute.d.ts +1 -1
- package/dist/components/layout/center-absolute/center-absolute.js +1 -1
- package/dist/components/layout/center-absolute/center-absolute.js.map +1 -1
- package/dist/components/layout/float/float-variants.d.ts +1 -1
- package/dist/components/layout/float/float.d.ts +1 -1
- package/dist/components/layout/float/float.js +1 -1
- package/dist/components/layout/float/float.js.map +1 -1
- package/dist/components/layout/scroll-area/scroll-area-root.d.ts +16 -3
- package/dist/components/layout/scroll-area/scroll-area-root.js +6 -3
- package/dist/components/layout/scroll-area/scroll-area-root.js.map +1 -1
- package/dist/components/layout/scroll-area/scroll-area-scrollbar.d.ts +3 -0
- package/dist/components/layout/scroll-area/scroll-area-scrollbar.js +9 -2
- package/dist/components/layout/scroll-area/scroll-area-scrollbar.js.map +1 -1
- package/dist/components/layout/scroll-area/scroll-area-thumb.d.ts +5 -1
- package/dist/components/layout/scroll-area/scroll-area-thumb.js +15 -5
- package/dist/components/layout/scroll-area/scroll-area-thumb.js.map +1 -1
- package/dist/components/layout/scroll-area/scroll-area-viewport.d.ts +1 -1
- package/dist/components/layout/scroll-area/scroll-area-viewport.js +1 -1
- package/dist/components/layout/scroll-area/scroll-area-viewport.js.map +1 -1
- package/dist/components/layout/separator/separator.d.ts +1 -1
- package/dist/components/layout/separator/separator.js +1 -1
- package/dist/components/layout/separator/separator.js.map +1 -1
- package/dist/components/layout/splitter/splitter-panel.d.ts +1 -1
- package/dist/components/layout/splitter/splitter-panel.js +1 -1
- package/dist/components/layout/splitter/splitter-panel.js.map +1 -1
- package/dist/components/layout/splitter/splitter-resize-trigger.d.ts +1 -1
- package/dist/components/layout/splitter/splitter-resize-trigger.js +1 -1
- package/dist/components/layout/splitter/splitter-resize-trigger.js.map +1 -1
- package/dist/components/layout/splitter/splitter-root-provider.d.ts +1 -1
- package/dist/components/layout/splitter/splitter-root-provider.js.map +1 -1
- package/dist/components/layout/splitter/splitter-root.d.ts +1 -1
- package/dist/components/layout/splitter/splitter-root.js +1 -1
- package/dist/components/layout/splitter/splitter-root.js.map +1 -1
- package/dist/components/layout/splitter/use-splitter.d.ts +1 -1
- package/dist/components/layout/splitter/use-splitter.js.map +1 -1
- package/dist/components/layout/stack/stack.d.ts +1 -1
- package/dist/components/layout/stack/stack.js +1 -1
- package/dist/components/layout/stack/stack.js.map +1 -1
- package/dist/components/overlays/action-bar/action-bar-popup-variants.d.ts +1 -1
- package/dist/components/overlays/action-bar/action-bar-root.d.ts +1 -1
- package/dist/components/overlays/action-bar/action-bar-root.js +1 -1
- package/dist/components/overlays/action-bar/action-bar-root.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-body.d.ts +5 -2
- package/dist/components/overlays/alert-dialog/alert-dialog-body.js +8 -3
- package/dist/components/overlays/alert-dialog/alert-dialog-body.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-footer.d.ts +6 -3
- package/dist/components/overlays/alert-dialog/alert-dialog-footer.js +9 -5
- package/dist/components/overlays/alert-dialog/alert-dialog-footer.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-header.d.ts +9 -2
- package/dist/components/overlays/alert-dialog/alert-dialog-header.js +19 -5
- package/dist/components/overlays/alert-dialog/alert-dialog-header.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-imperative.d.ts +137 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-imperative.js +237 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-imperative.js.map +1 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-indicator-variants.d.ts +24 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-indicator-variants.js +31 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-indicator-variants.js.map +1 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-indicator.d.ts +25 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-indicator.js +51 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-indicator.js.map +1 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-outlet.d.ts +27 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-outlet.js +39 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-outlet.js.map +1 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-popup-variants.d.ts +4 -2
- package/dist/components/overlays/alert-dialog/alert-dialog-popup-variants.js +9 -8
- package/dist/components/overlays/alert-dialog/alert-dialog-popup-variants.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-popup.d.ts +2 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-popup.js +2 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-popup.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-root.d.ts +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-root.js +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-root.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-store.d.ts +36 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-store.js +118 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-store.js.map +1 -0
- package/dist/components/overlays/alert-dialog/alert-dialog-title.d.ts +3 -2
- package/dist/components/overlays/alert-dialog/alert-dialog-title.js +4 -3
- package/dist/components/overlays/alert-dialog/alert-dialog-title.js.map +1 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-trigger.js.map +1 -1
- package/dist/components/overlays/alert-dialog/index.parts.d.ts +6 -3
- package/dist/components/overlays/alert-dialog/index.parts.js +9 -2
- package/dist/components/overlays/alert-dialog/index.parts.js.map +1 -1
- package/dist/components/overlays/dialog/dialog-body.js +1 -0
- package/dist/components/overlays/dialog/dialog-body.js.map +1 -1
- package/dist/components/overlays/dialog/dialog-popup-variants.d.ts +1 -1
- package/dist/components/overlays/dialog/dialog-popup-variants.js +2 -3
- package/dist/components/overlays/dialog/dialog-popup-variants.js.map +1 -1
- package/dist/components/overlays/dialog/dialog-root.d.ts +1 -1
- package/dist/components/overlays/dialog/dialog-root.js +1 -1
- package/dist/components/overlays/dialog/dialog-root.js.map +1 -1
- package/dist/components/overlays/dialog/dialog-trigger.js.map +1 -1
- package/dist/components/overlays/drawer/drawer-backdrop.js +2 -3
- package/dist/components/overlays/drawer/drawer-backdrop.js.map +1 -1
- package/dist/components/overlays/drawer/drawer-body.js +1 -0
- package/dist/components/overlays/drawer/drawer-body.js.map +1 -1
- package/dist/components/overlays/drawer/drawer-indent-background.d.ts +17 -0
- package/dist/components/overlays/drawer/drawer-indent-background.js +28 -0
- package/dist/components/overlays/drawer/drawer-indent-background.js.map +1 -0
- package/dist/components/overlays/drawer/drawer-indent.d.ts +31 -0
- package/dist/components/overlays/drawer/drawer-indent.js +49 -0
- package/dist/components/overlays/drawer/drawer-indent.js.map +1 -0
- package/dist/components/overlays/drawer/drawer-popup-variants.d.ts +2 -26
- package/dist/components/overlays/drawer/drawer-popup-variants.js +101 -28
- package/dist/components/overlays/drawer/drawer-popup-variants.js.map +1 -1
- package/dist/components/overlays/drawer/drawer-popup.js +3 -2
- package/dist/components/overlays/drawer/drawer-popup.js.map +1 -1
- package/dist/components/overlays/drawer/drawer-provider.d.ts +17 -0
- package/dist/components/overlays/drawer/drawer-provider.js +18 -0
- package/dist/components/overlays/drawer/drawer-provider.js.map +1 -0
- package/dist/components/overlays/drawer/drawer-root.d.ts +1 -1
- package/dist/components/overlays/drawer/drawer-root.js +5 -2
- package/dist/components/overlays/drawer/drawer-root.js.map +1 -1
- package/dist/components/overlays/drawer/drawer-swipe-area.d.ts +27 -0
- package/dist/components/overlays/drawer/drawer-swipe-area.js +46 -0
- package/dist/components/overlays/drawer/drawer-swipe-area.js.map +1 -0
- package/dist/components/overlays/drawer/drawer-trigger.js.map +1 -1
- package/dist/components/overlays/drawer/drawer-viewport.d.ts +5 -0
- package/dist/components/overlays/drawer/drawer-viewport.js +13 -1
- package/dist/components/overlays/drawer/drawer-viewport.js.map +1 -1
- package/dist/components/overlays/drawer/drawer-virtual-keyboard-provider.d.ts +34 -0
- package/dist/components/overlays/drawer/drawer-virtual-keyboard-provider.js +35 -0
- package/dist/components/overlays/drawer/drawer-virtual-keyboard-provider.js.map +1 -0
- package/dist/components/overlays/drawer/index.parts.d.ts +7 -2
- package/dist/components/overlays/drawer/index.parts.js +11 -1
- package/dist/components/overlays/drawer/index.parts.js.map +1 -1
- package/dist/components/overlays/drawer/use-drawer-context.d.ts +8 -1
- package/dist/components/overlays/drawer/use-drawer-context.js.map +1 -1
- package/dist/components/overlays/menu/menu-item.d.ts +2 -2
- package/dist/components/overlays/menu/menu-item.js +2 -2
- package/dist/components/overlays/menu/menu-item.js.map +1 -1
- package/dist/components/overlays/menu/menu-root.js.map +1 -1
- package/dist/components/overlays/menu/menu-trigger.js.map +1 -1
- package/dist/components/overlays/popover/popover-backdrop.d.ts +1 -1
- package/dist/components/overlays/popover/popover-backdrop.js +1 -1
- package/dist/components/overlays/popover/popover-backdrop.js.map +1 -1
- package/dist/components/overlays/popover/popover-popup-variants.d.ts +3 -3
- package/dist/components/overlays/popover/popover-popup-variants.js +3 -3
- package/dist/components/overlays/popover/popover-popup-variants.js.map +1 -1
- package/dist/components/overlays/popover/popover-root.js.map +1 -1
- package/dist/components/overlays/popover/popover-trigger.js.map +1 -1
- package/dist/components/overlays/tooltip/simple-tooltip.d.ts +1 -1
- package/dist/components/overlays/tooltip/simple-tooltip.js +1 -1
- package/dist/components/overlays/tooltip/simple-tooltip.js.map +1 -1
- package/dist/components/overlays/tooltip/tooltip-root.js.map +1 -1
- package/dist/components/overlays/tooltip/tooltip-trigger.js.map +1 -1
- package/dist/components/typography/heading/heading.d.ts +1 -1
- package/dist/components/typography/heading/heading.js.map +1 -1
- package/dist/components/typography/kbd/kbd.d.ts +1 -1
- package/dist/components/typography/kbd/kbd.js +1 -1
- package/dist/components/typography/kbd/kbd.js.map +1 -1
- package/dist/components/typography/link/index.d.ts +3 -0
- package/dist/components/typography/link/index.js +2 -0
- package/dist/components/typography/link/link-variants.d.ts +33 -0
- package/dist/components/typography/link/link-variants.js +91 -0
- package/dist/components/typography/link/link-variants.js.map +1 -0
- package/dist/components/typography/link/link.d.ts +50 -0
- package/dist/components/typography/link/link.js +74 -0
- package/dist/components/typography/link/link.js.map +1 -0
- package/dist/components/typography/mark/mark-variants.d.ts +1 -1
- package/dist/components/typography/mark/mark.d.ts +1 -1
- package/dist/components/typography/mark/mark.js +1 -1
- package/dist/components/typography/mark/mark.js.map +1 -1
- package/dist/components/typography/pre/pre.d.ts +1 -1
- package/dist/components/typography/pre/pre.js +1 -1
- package/dist/components/typography/pre/pre.js.map +1 -1
- package/dist/components/utilities/for/for.d.ts +1 -1
- package/dist/components/utilities/for/for.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.js +2 -2
- package/dist/hooks/use-breakpoint.d.ts +25 -12
- package/dist/hooks/use-breakpoint.js +44 -28
- package/dist/hooks/use-breakpoint.js.map +1 -1
- package/dist/hooks/use-pointer-type.d.ts +2 -6
- package/dist/hooks/use-pointer-type.js +4 -22
- package/dist/hooks/use-pointer-type.js.map +1 -1
- package/dist/types/color-scheme.d.ts +1 -1
- package/package.json +14 -13
- package/src/theme/theme.css +9 -0
- package/dist/components/buttons/button/button-variants.d.ts.map +0 -1
- package/dist/components/buttons/button/button.d.ts.map +0 -1
- package/dist/components/buttons/clipboard-button/clipboard-button.d.ts.map +0 -1
- package/dist/components/buttons/close-button/close-button.d.ts.map +0 -1
- package/dist/components/buttons/icon-button/icon-button-variants.d.ts.map +0 -1
- package/dist/components/buttons/icon-button/icon-button.d.ts.map +0 -1
- package/dist/components/buttons/responsive-button/responsive-button.d.ts.map +0 -1
- package/dist/components/collections/select/index.parts.d.ts.map +0 -1
- package/dist/components/collections/select/select-arrow.d.ts.map +0 -1
- package/dist/components/collections/select/select-backdrop.d.ts.map +0 -1
- package/dist/components/collections/select/select-context.d.ts.map +0 -1
- package/dist/components/collections/select/select-group-label-variants.d.ts.map +0 -1
- package/dist/components/collections/select/select-group-label.d.ts.map +0 -1
- package/dist/components/collections/select/select-group.d.ts.map +0 -1
- package/dist/components/collections/select/select-icon.d.ts.map +0 -1
- package/dist/components/collections/select/select-item-indicator.d.ts.map +0 -1
- package/dist/components/collections/select/select-item-text.d.ts.map +0 -1
- package/dist/components/collections/select/select-item-variants.d.ts.map +0 -1
- package/dist/components/collections/select/select-item.d.ts.map +0 -1
- package/dist/components/collections/select/select-label-variants.d.ts.map +0 -1
- package/dist/components/collections/select/select-label.d.ts.map +0 -1
- package/dist/components/collections/select/select-list.d.ts.map +0 -1
- package/dist/components/collections/select/select-popup-variants.d.ts.map +0 -1
- package/dist/components/collections/select/select-popup.d.ts.map +0 -1
- package/dist/components/collections/select/select-portal.d.ts.map +0 -1
- package/dist/components/collections/select/select-positioner.d.ts.map +0 -1
- package/dist/components/collections/select/select-root.d.ts.map +0 -1
- package/dist/components/collections/select/select-scroll-down-arrow-variants.d.ts.map +0 -1
- package/dist/components/collections/select/select-scroll-down-arrow.d.ts.map +0 -1
- package/dist/components/collections/select/select-scroll-up-arrow-variants.d.ts.map +0 -1
- package/dist/components/collections/select/select-scroll-up-arrow.d.ts.map +0 -1
- package/dist/components/collections/select/select-separator.d.ts.map +0 -1
- package/dist/components/collections/select/select-trigger-variants.d.ts.map +0 -1
- package/dist/components/collections/select/select-trigger.d.ts.map +0 -1
- package/dist/components/collections/select/select-value.d.ts.map +0 -1
- package/dist/components/collections/select/use-select-context.d.ts.map +0 -1
- package/dist/components/collections/tree-view/index.parts.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-collection.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-branch-content.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-branch-control.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-branch-indent-guide.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-branch-indicator.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-branch-text.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-branch-trigger.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-branch.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-context.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-item-indicator.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-item-text.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-item.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-label.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-node-checkbox-indicator.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-node-checkbox.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-node-context.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-node-provider.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-node-rename-input.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-node-variants.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-node.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-root-provider.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-root.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-text-class-names.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-tree-variants.d.ts.map +0 -1
- package/dist/components/collections/tree-view/tree-view-tree.d.ts.map +0 -1
- package/dist/components/collections/tree-view/use-tree-view-context.d.ts.map +0 -1
- package/dist/components/collections/tree-view/use-tree-view-node-context.d.ts.map +0 -1
- package/dist/components/collections/tree-view/use-tree-view-node-props-context.d.ts.map +0 -1
- package/dist/components/collections/tree-view/use-tree-view-render-strategy-context.d.ts.map +0 -1
- package/dist/components/collections/tree-view/use-tree-view-variants-context.d.ts.map +0 -1
- package/dist/components/collections/tree-view/use-tree-view.d.ts.map +0 -1
- package/dist/components/disclosure/breadcrumb/breadcrumb-current.d.ts.map +0 -1
- package/dist/components/disclosure/breadcrumb/breadcrumb-item.d.ts.map +0 -1
- package/dist/components/disclosure/breadcrumb/breadcrumb-link.d.ts.map +0 -1
- package/dist/components/disclosure/breadcrumb/breadcrumb-list.d.ts.map +0 -1
- package/dist/components/disclosure/breadcrumb/breadcrumb-root.d.ts.map +0 -1
- package/dist/components/disclosure/breadcrumb/breadcrumb-separator.d.ts.map +0 -1
- package/dist/components/disclosure/breadcrumb/index.parts.d.ts.map +0 -1
- package/dist/components/disclosure/collapsible/collapsible-indicator.d.ts.map +0 -1
- package/dist/components/disclosure/collapsible/collapsible-panel-variants.d.ts.map +0 -1
- package/dist/components/disclosure/collapsible/collapsible-panel.d.ts.map +0 -1
- package/dist/components/disclosure/collapsible/collapsible-root.d.ts.map +0 -1
- package/dist/components/disclosure/collapsible/collapsible-trigger.d.ts.map +0 -1
- package/dist/components/disclosure/collapsible/index.parts.d.ts.map +0 -1
- package/dist/components/disclosure/tabs/index.parts.d.ts.map +0 -1
- package/dist/components/disclosure/tabs/tabs-indicator-variants.d.ts.map +0 -1
- package/dist/components/disclosure/tabs/tabs-indicator.d.ts.map +0 -1
- package/dist/components/disclosure/tabs/tabs-list-variants.d.ts.map +0 -1
- package/dist/components/disclosure/tabs/tabs-list.d.ts.map +0 -1
- package/dist/components/disclosure/tabs/tabs-panel.d.ts.map +0 -1
- package/dist/components/disclosure/tabs/tabs-root-variants.d.ts.map +0 -1
- package/dist/components/disclosure/tabs/tabs-root.d.ts.map +0 -1
- package/dist/components/disclosure/tabs/tabs-tab-variants.d.ts.map +0 -1
- package/dist/components/disclosure/tabs/tabs-tab.d.ts.map +0 -1
- package/dist/components/disclosure/tabs/use-tabs-context.d.ts.map +0 -1
- package/dist/components/display/card/card-body.d.ts.map +0 -1
- package/dist/components/display/card/card-description.d.ts.map +0 -1
- package/dist/components/display/card/card-footer.d.ts.map +0 -1
- package/dist/components/display/card/card-header.d.ts.map +0 -1
- package/dist/components/display/card/card-root-variants.d.ts.map +0 -1
- package/dist/components/display/card/card-root.d.ts.map +0 -1
- package/dist/components/display/card/card-title.d.ts.map +0 -1
- package/dist/components/display/card/index.parts.d.ts.map +0 -1
- package/dist/components/display/clipboard/clipboard-announcer.d.ts.map +0 -1
- package/dist/components/display/clipboard/clipboard-context.d.ts.map +0 -1
- package/dist/components/display/clipboard/clipboard-control.d.ts.map +0 -1
- package/dist/components/display/clipboard/clipboard-copy-text.d.ts.map +0 -1
- package/dist/components/display/clipboard/clipboard-indicator.d.ts.map +0 -1
- package/dist/components/display/clipboard/clipboard-input.d.ts.map +0 -1
- package/dist/components/display/clipboard/clipboard-label.d.ts.map +0 -1
- package/dist/components/display/clipboard/clipboard-root-provider.d.ts.map +0 -1
- package/dist/components/display/clipboard/clipboard-root.d.ts.map +0 -1
- package/dist/components/display/clipboard/clipboard-trigger.d.ts.map +0 -1
- package/dist/components/display/clipboard/clipboard-value-text.d.ts.map +0 -1
- package/dist/components/display/clipboard/index.parts.d.ts.map +0 -1
- package/dist/components/display/clipboard/use-clipboard-context.d.ts.map +0 -1
- package/dist/components/display/clipboard/use-clipboard.d.ts.map +0 -1
- package/dist/components/display/data-list/data-list-item-label.d.ts.map +0 -1
- package/dist/components/display/data-list/data-list-item-value-variants.d.ts.map +0 -1
- package/dist/components/display/data-list/data-list-item-value.d.ts.map +0 -1
- package/dist/components/display/data-list/data-list-item-variants.d.ts.map +0 -1
- package/dist/components/display/data-list/data-list-item.d.ts.map +0 -1
- package/dist/components/display/data-list/data-list-root-variants.d.ts.map +0 -1
- package/dist/components/display/data-list/data-list-root.d.ts.map +0 -1
- package/dist/components/display/data-list/index.parts.d.ts.map +0 -1
- package/dist/components/display/data-list/use-data-list-context.d.ts.map +0 -1
- package/dist/components/display/icon/icon.d.ts.map +0 -1
- package/dist/components/feedback/empty-state/empty-state-content.d.ts.map +0 -1
- package/dist/components/feedback/empty-state/empty-state-description.d.ts.map +0 -1
- package/dist/components/feedback/empty-state/empty-state-indicator.d.ts.map +0 -1
- package/dist/components/feedback/empty-state/empty-state-root-variants.d.ts.map +0 -1
- package/dist/components/feedback/empty-state/empty-state-root.d.ts.map +0 -1
- package/dist/components/feedback/empty-state/empty-state-title.d.ts.map +0 -1
- package/dist/components/feedback/empty-state/index.parts.d.ts.map +0 -1
- package/dist/components/feedback/skeleton/skeleton-text.d.ts.map +0 -1
- package/dist/components/feedback/skeleton/skeleton-variants.d.ts.map +0 -1
- package/dist/components/feedback/skeleton/skeleton.d.ts.map +0 -1
- package/dist/components/feedback/spinner/spinner-variants.d.ts.map +0 -1
- package/dist/components/feedback/spinner/spinner.d.ts.map +0 -1
- package/dist/components/fields/checkbox/checkbox-group.d.ts.map +0 -1
- package/dist/components/fields/checkbox/checkbox-indicator.d.ts.map +0 -1
- package/dist/components/fields/checkbox/checkbox-root-variants.d.ts.map +0 -1
- package/dist/components/fields/checkbox/checkbox-root.d.ts.map +0 -1
- package/dist/components/fields/checkbox/index.parts.d.ts.map +0 -1
- package/dist/components/fields/currency-brl-input/currency-brl-input-variants.d.ts.map +0 -1
- package/dist/components/fields/currency-brl-input/currency-brl-input.d.ts.map +0 -1
- package/dist/components/fields/field/field-description.d.ts.map +0 -1
- package/dist/components/fields/field/field-error.d.ts.map +0 -1
- package/dist/components/fields/field/field-header.d.ts.map +0 -1
- package/dist/components/fields/field/field-item.d.ts.map +0 -1
- package/dist/components/fields/field/field-label.d.ts.map +0 -1
- package/dist/components/fields/field/field-required-indicator.d.ts.map +0 -1
- package/dist/components/fields/field/field-root-variants.d.ts.map +0 -1
- package/dist/components/fields/field/field-root.d.ts.map +0 -1
- package/dist/components/fields/field/field-validity.d.ts.map +0 -1
- package/dist/components/fields/field/index.parts.d.ts.map +0 -1
- package/dist/components/fields/fieldset/fieldset-legend.d.ts.map +0 -1
- package/dist/components/fields/fieldset/fieldset-root.d.ts.map +0 -1
- package/dist/components/fields/fieldset/index.parts.d.ts.map +0 -1
- package/dist/components/fields/form/form.d.ts.map +0 -1
- package/dist/components/fields/input/input-variants.d.ts.map +0 -1
- package/dist/components/fields/input/input.d.ts.map +0 -1
- package/dist/components/fields/number-input/number-input-variants.d.ts.map +0 -1
- package/dist/components/fields/number-input/number-input.d.ts.map +0 -1
- package/dist/components/fields/password-input/password-input-variants.d.ts.map +0 -1
- package/dist/components/fields/password-input/password-input.d.ts.map +0 -1
- package/dist/components/fields/pattern-input/pattern-input-masks.d.ts.map +0 -1
- package/dist/components/fields/pattern-input/pattern-input-variants.d.ts.map +0 -1
- package/dist/components/fields/pattern-input/pattern-input.d.ts.map +0 -1
- package/dist/components/fields/switch/index.parts.d.ts.map +0 -1
- package/dist/components/fields/switch/switch-root-variants.d.ts.map +0 -1
- package/dist/components/fields/switch/switch-root.d.ts.map +0 -1
- package/dist/components/fields/switch/switch-thumb.d.ts.map +0 -1
- package/dist/components/fields/textarea/textarea-variants.d.ts.map +0 -1
- package/dist/components/fields/textarea/textarea.d.ts.map +0 -1
- package/dist/components/layout/box/box.d.ts.map +0 -1
- package/dist/components/layout/center/center.d.ts.map +0 -1
- package/dist/components/layout/center-absolute/center-absolute-variants.d.ts.map +0 -1
- package/dist/components/layout/center-absolute/center-absolute.d.ts.map +0 -1
- package/dist/components/layout/circle/circle.d.ts.map +0 -1
- package/dist/components/layout/flex/flex.d.ts.map +0 -1
- package/dist/components/layout/float/float-variants.d.ts.map +0 -1
- package/dist/components/layout/float/float.d.ts.map +0 -1
- package/dist/components/layout/grid/grid.d.ts.map +0 -1
- package/dist/components/layout/scroll-area/index.parts.d.ts.map +0 -1
- package/dist/components/layout/scroll-area/scroll-area-bars.d.ts.map +0 -1
- package/dist/components/layout/scroll-area/scroll-area-content.d.ts.map +0 -1
- package/dist/components/layout/scroll-area/scroll-area-corner.d.ts.map +0 -1
- package/dist/components/layout/scroll-area/scroll-area-root.d.ts.map +0 -1
- package/dist/components/layout/scroll-area/scroll-area-scrollbar.d.ts.map +0 -1
- package/dist/components/layout/scroll-area/scroll-area-thumb.d.ts.map +0 -1
- package/dist/components/layout/scroll-area/scroll-area-viewport-variants.d.ts.map +0 -1
- package/dist/components/layout/scroll-area/scroll-area-viewport.d.ts.map +0 -1
- package/dist/components/layout/separator/separator-variants.d.ts.map +0 -1
- package/dist/components/layout/separator/separator.d.ts.map +0 -1
- package/dist/components/layout/splitter/index.parts.d.ts.map +0 -1
- package/dist/components/layout/splitter/splitter-context.d.ts.map +0 -1
- package/dist/components/layout/splitter/splitter-panel.d.ts.map +0 -1
- package/dist/components/layout/splitter/splitter-resize-trigger.d.ts.map +0 -1
- package/dist/components/layout/splitter/splitter-root-provider.d.ts.map +0 -1
- package/dist/components/layout/splitter/splitter-root.d.ts.map +0 -1
- package/dist/components/layout/splitter/use-splitter-context.d.ts.map +0 -1
- package/dist/components/layout/splitter/use-splitter.d.ts.map +0 -1
- package/dist/components/layout/stack/h-stack.d.ts.map +0 -1
- package/dist/components/layout/stack/stack-variants.d.ts.map +0 -1
- package/dist/components/layout/stack/stack.d.ts.map +0 -1
- package/dist/components/layout/stack/v-stack.d.ts.map +0 -1
- package/dist/components/layout/wrap/wrap.d.ts.map +0 -1
- package/dist/components/overlays/action-bar/action-bar-close.d.ts.map +0 -1
- package/dist/components/overlays/action-bar/action-bar-popup-variants.d.ts.map +0 -1
- package/dist/components/overlays/action-bar/action-bar-popup.d.ts.map +0 -1
- package/dist/components/overlays/action-bar/action-bar-portal.d.ts.map +0 -1
- package/dist/components/overlays/action-bar/action-bar-root.d.ts.map +0 -1
- package/dist/components/overlays/action-bar/action-bar-selection-trigger.d.ts.map +0 -1
- package/dist/components/overlays/action-bar/action-bar-separator.d.ts.map +0 -1
- package/dist/components/overlays/action-bar/index.parts.d.ts.map +0 -1
- package/dist/components/overlays/action-bar/use-action-bar-context.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-backdrop.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-body.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-close.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-description.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-footer.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-header.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-popup-variants.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-popup.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-portal.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-root.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-title.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-trigger.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/alert-dialog-viewport.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/create-handle.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/index.parts.d.ts.map +0 -1
- package/dist/components/overlays/alert-dialog/use-alert-dialog-context.d.ts.map +0 -1
- package/dist/components/overlays/dialog/create-handle.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-backdrop.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-body.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-close.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-description.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-footer.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-header.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-popup-variants.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-popup.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-portal.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-root.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-title.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-trigger.d.ts.map +0 -1
- package/dist/components/overlays/dialog/dialog-viewport.d.ts.map +0 -1
- package/dist/components/overlays/dialog/index.parts.d.ts.map +0 -1
- package/dist/components/overlays/dialog/use-dialog-context.d.ts.map +0 -1
- package/dist/components/overlays/drawer/create-handle.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-backdrop.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-body.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-close.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-description.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-footer.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-header.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-popup-variants.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-popup.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-portal.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-root.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-title.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-trigger.d.ts.map +0 -1
- package/dist/components/overlays/drawer/drawer-viewport.d.ts.map +0 -1
- package/dist/components/overlays/drawer/index.parts.d.ts.map +0 -1
- package/dist/components/overlays/drawer/use-drawer-context.d.ts.map +0 -1
- package/dist/components/overlays/menu/index.parts.d.ts.map +0 -1
- package/dist/components/overlays/menu/menu-group-label.d.ts.map +0 -1
- package/dist/components/overlays/menu/menu-group.d.ts.map +0 -1
- package/dist/components/overlays/menu/menu-item-variants.d.ts.map +0 -1
- package/dist/components/overlays/menu/menu-item.d.ts.map +0 -1
- package/dist/components/overlays/menu/menu-popup.d.ts.map +0 -1
- package/dist/components/overlays/menu/menu-portal.d.ts.map +0 -1
- package/dist/components/overlays/menu/menu-positioner.d.ts.map +0 -1
- package/dist/components/overlays/menu/menu-root.d.ts.map +0 -1
- package/dist/components/overlays/menu/menu-separator.d.ts.map +0 -1
- package/dist/components/overlays/menu/menu-trigger.d.ts.map +0 -1
- package/dist/components/overlays/overlay-manager/index.d.ts +0 -2
- package/dist/components/overlays/overlay-manager/index.js +0 -2
- package/dist/components/overlays/overlay-manager/overlay-manager.d.ts +0 -49
- package/dist/components/overlays/overlay-manager/overlay-manager.d.ts.map +0 -1
- package/dist/components/overlays/overlay-manager/overlay-manager.js +0 -182
- package/dist/components/overlays/overlay-manager/overlay-manager.js.map +0 -1
- package/dist/components/overlays/popover/create-handle.d.ts.map +0 -1
- package/dist/components/overlays/popover/index.parts.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-arrow.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-backdrop.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-body.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-close.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-description.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-footer.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-header.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-popup-variants.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-popup.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-portal.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-positioner.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-root.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-title.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-trigger.d.ts.map +0 -1
- package/dist/components/overlays/popover/popover-viewport.d.ts.map +0 -1
- package/dist/components/overlays/tooltip/create-handle.d.ts.map +0 -1
- package/dist/components/overlays/tooltip/index.parts.d.ts.map +0 -1
- package/dist/components/overlays/tooltip/simple-tooltip.d.ts.map +0 -1
- package/dist/components/overlays/tooltip/tooltip-arrow.d.ts.map +0 -1
- package/dist/components/overlays/tooltip/tooltip-popup.d.ts.map +0 -1
- package/dist/components/overlays/tooltip/tooltip-portal.d.ts.map +0 -1
- package/dist/components/overlays/tooltip/tooltip-positioner.d.ts.map +0 -1
- package/dist/components/overlays/tooltip/tooltip-provider.d.ts.map +0 -1
- package/dist/components/overlays/tooltip/tooltip-root.d.ts.map +0 -1
- package/dist/components/overlays/tooltip/tooltip-trigger.d.ts.map +0 -1
- package/dist/components/overlays/tooltip/tooltip-viewport.d.ts.map +0 -1
- package/dist/components/typography/heading/heading.d.ts.map +0 -1
- package/dist/components/typography/kbd/kbd-group.d.ts.map +0 -1
- package/dist/components/typography/kbd/kbd-variants.d.ts.map +0 -1
- package/dist/components/typography/kbd/kbd.d.ts.map +0 -1
- package/dist/components/typography/list/index.parts.d.ts.map +0 -1
- package/dist/components/typography/list/list-item.d.ts.map +0 -1
- package/dist/components/typography/list/list-ordered.d.ts.map +0 -1
- package/dist/components/typography/list/list-unordered.d.ts.map +0 -1
- package/dist/components/typography/list/list-unstyled.d.ts.map +0 -1
- package/dist/components/typography/mark/mark-variants.d.ts.map +0 -1
- package/dist/components/typography/mark/mark.d.ts.map +0 -1
- package/dist/components/typography/paragraph/paragraph.d.ts.map +0 -1
- package/dist/components/typography/pre/pre-variants.d.ts.map +0 -1
- package/dist/components/typography/pre/pre.d.ts.map +0 -1
- package/dist/components/typography/text/text.d.ts.map +0 -1
- package/dist/components/typography/truncate/truncate.d.ts.map +0 -1
- package/dist/components/utilities/for/for.d.ts.map +0 -1
- package/dist/components/utilities/interaction-shield/interaction-shield.d.ts.map +0 -1
- package/dist/components/utilities/show/show.d.ts.map +0 -1
- package/dist/hooks/use-breakpoint.d.ts.map +0 -1
- package/dist/hooks/use-pointer-type.d.ts.map +0 -1
- package/dist/hooks/use-responsive-breakpoint.d.ts +0 -18
- package/dist/hooks/use-responsive-breakpoint.d.ts.map +0 -1
- package/dist/hooks/use-responsive-breakpoint.js +0 -56
- package/dist/hooks/use-responsive-breakpoint.js.map +0 -1
- package/dist/types/color-scheme.d.ts.map +0 -1
- package/dist/utils/merge-class-names.d.ts.map +0 -1
- package/dist/utils/merge-state-class-names.d.ts.map +0 -1
- package/dist/utils/normalize-data-attr.d.ts.map +0 -1
- package/src/theme/tailwindcss-default-theme.css +0 -448
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mergeStateClassNames } from "../../../utils/merge-state-class-names.js";
|
|
2
2
|
import { inputVariants } from "./input-variants.js";
|
|
3
|
-
import { createSplitProps } from "@lucasbernardosn/utils";
|
|
3
|
+
import { createSplitProps } from "@lucasbernardosn/ts-utils";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
import { Input as Input$1 } from "@base-ui/react/input";
|
|
6
6
|
//#region src/components/fields/input/input.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","names":["BaseInput"],"sources":["../../../../src/components/fields/input/input.tsx"],"sourcesContent":["import { Input as BaseInput } from '@base-ui/react/input';\nimport {
|
|
1
|
+
{"version":3,"file":"input.js","names":["BaseInput"],"sources":["../../../../src/components/fields/input/input.tsx"],"sourcesContent":["import { Input as BaseInput } from '@base-ui/react/input';\nimport {\n createSplitProps,\n type MergeOverride,\n} from '@lucasbernardosn/ts-utils';\nimport { mergeStateClassNames } from '#utils';\nimport { type InputVariants, inputVariants } from './input-variants';\n\nexport type InputProps = MergeOverride<BaseInput.Props, InputVariants>;\n\nexport type InputState = BaseInput.State;\n\nexport type InputChangeEventDetails = BaseInput.ChangeEventDetails;\n\nexport type InputChangeEventReason = BaseInput.ChangeEventReason;\n\nconst splitVariantProps = createSplitProps<InputVariants>();\n\n/**\n * O `<input>` nativo do Base UI, que se liga sozinho ao `Field` quando está\n * dentro de um. Fora dele, o nome acessível vem de um `<label>` (em volta ou\n * por `htmlFor`) ou de `aria-label`.\n *\n * `size` é a variante de altura e substitui o atributo nativo `size`: a\n * largura vem do CSS (`w-full`), sobrescrevível por `className`.\n *\n * @example\n * ```tsx\n * <Input\n * aria-label=\"Nome\"\n * placeholder=\"Seu nome\"\n * />\n * ```\n */\nexport const Input = (props: InputProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, [\n 'size',\n 'variant',\n ]);\n\n const { className, ...rest } = elementProps;\n\n return (\n <BaseInput\n data-component=\"Input\"\n className={mergeStateClassNames(inputVariants(variantProps), className)}\n {...rest}\n />\n );\n};\n\nInput.displayName = 'Input';\n"],"mappings":";;;;;;AAgBA,MAAM,oBAAoB,iBAAgC;;;;;;;;;;;;;;;;;AAkB1D,MAAa,SAAS,UAAsB;CAC1C,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO,CAC5D,QACA,SACF,CAAC;CAED,MAAM,EAAE,WAAW,GAAG,SAAS;CAE/B,OACE,oBAACA,SAAD;EACE,kBAAe;EACf,WAAW,qBAAqB,cAAc,YAAY,GAAG,SAAS;EACtE,GAAI;CACL,CAAA;AAEL;AAEA,MAAM,cAAc"}
|
|
@@ -20,7 +20,7 @@ const numberInputVariants = cva([
|
|
|
20
20
|
"font-normal",
|
|
21
21
|
"text-gray-12",
|
|
22
22
|
"tabular-nums",
|
|
23
|
-
"placeholder:text-gray-
|
|
23
|
+
"placeholder:text-gray-11/80",
|
|
24
24
|
"border",
|
|
25
25
|
"rounded-md",
|
|
26
26
|
"corner-squircle",
|
|
@@ -43,9 +43,7 @@ const numberInputVariants = cva([
|
|
|
43
43
|
"data-invalid:border-red-9",
|
|
44
44
|
"data-invalid:[--number-input-focus-color:var(--color-red-9)]",
|
|
45
45
|
"aria-invalid:border-red-9",
|
|
46
|
-
"aria-invalid:[--number-input-focus-color:var(--color-red-9)]"
|
|
47
|
-
"user-invalid:border-red-9",
|
|
48
|
-
"user-invalid:[--number-input-focus-color:var(--color-red-9)]"
|
|
46
|
+
"aria-invalid:[--number-input-focus-color:var(--color-red-9)]"
|
|
49
47
|
], {
|
|
50
48
|
variants: {
|
|
51
49
|
variant: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number-input-variants.js","names":[],"sources":["../../../../src/components/fields/number-input/number-input-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport type NumberInputVariants = {\n /**\n * Altura, padding e tamanho do texto, os mesmos do `Input`. Substitui o atributo nativo `size`:\n * a largura vem do CSS. Em tela de toque, do `2xs` ao `md` o texto sobe para 16px, para o iPhone\n * não dar zoom no foco.\n *\n * @default 'sm'\n */\n size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /**\n * Fundo e borda do campo.\n *\n * @default 'outline'\n */\n variant?: 'outline' | 'subtle';\n};\n\nexport const numberInputDefaultVariants: Required<NumberInputVariants> = {\n size: 'sm',\n variant: 'outline',\n};\n\n/**\n * Cópia de `inputVariants`, a origem do visual dos campos: o anel de foco e o inválido funcionam do\n * mesmo jeito, explicados lá. As diferenças:\n * - sem `data-placeholder`;\n * - `tabular-nums`, que dá a mesma largura a todos os dígitos: o número não muda de largura a cada\n * tecla nem quando o separador de milhar entra.\n */\nexport const numberInputVariants = cva(\n [\n 'relative',\n 'w-full',\n\n 'appearance-none',\n 'outline-none',\n\n 'text-start',\n 'font-normal', // Sem isto, herda o peso do `<label>` em volta\n 'text-gray-12',\n\n 'tabular-nums',\n\n 'placeholder:text-gray-
|
|
1
|
+
{"version":3,"file":"number-input-variants.js","names":[],"sources":["../../../../src/components/fields/number-input/number-input-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport type NumberInputVariants = {\n /**\n * Altura, padding e tamanho do texto, os mesmos do `Input`. Substitui o atributo nativo `size`:\n * a largura vem do CSS. Em tela de toque, do `2xs` ao `md` o texto sobe para 16px, para o iPhone\n * não dar zoom no foco.\n *\n * @default 'sm'\n */\n size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /**\n * Fundo e borda do campo.\n *\n * @default 'outline'\n */\n variant?: 'outline' | 'subtle';\n};\n\nexport const numberInputDefaultVariants: Required<NumberInputVariants> = {\n size: 'sm',\n variant: 'outline',\n};\n\n/**\n * Cópia de `inputVariants`, a origem do visual dos campos: o anel de foco e o inválido funcionam do\n * mesmo jeito, explicados lá. As diferenças:\n * - sem `data-placeholder`;\n * - `tabular-nums`, que dá a mesma largura a todos os dígitos: o número não muda de largura a cada\n * tecla nem quando o separador de milhar entra.\n */\nexport const numberInputVariants = cva(\n [\n 'relative',\n 'w-full',\n\n 'appearance-none',\n 'outline-none',\n\n 'text-start',\n 'font-normal', // Sem isto, herda o peso do `<label>` em volta\n 'text-gray-12',\n\n 'tabular-nums',\n\n 'placeholder:text-gray-11/80',\n\n 'border',\n 'rounded-md',\n 'corner-squircle',\n\n '[--number-input-focus-color:var(--color-black)]',\n 'dark:[--number-input-focus-color:var(--color-white)]',\n\n 'focus-visible:outline-1',\n 'focus-visible:outline-solid',\n 'focus-visible:-outline-offset-2', // Offset = borda + anel: o campo não cresce no foco\n 'focus-visible:outline-(--number-input-focus-color)',\n 'focus-visible:border-(--number-input-focus-color)',\n\n 'data-focused:outline-1',\n 'data-focused:outline-solid',\n 'data-focused:-outline-offset-2',\n 'data-focused:outline-(--number-input-focus-color)',\n 'data-focused:border-(--number-input-focus-color)',\n\n 'disabled:opacity-50',\n 'disabled:cursor-not-allowed',\n\n 'data-disabled:opacity-50',\n 'data-disabled:cursor-not-allowed',\n\n 'data-invalid:border-red-9',\n 'data-invalid:[--number-input-focus-color:var(--color-red-9)]',\n 'aria-invalid:border-red-9',\n 'aria-invalid:[--number-input-focus-color:var(--color-red-9)]',\n ],\n {\n variants: {\n variant: {\n outline: [\n 'bg-white/90',\n 'dark:bg-black/90',\n\n 'border-gray-alpha-7',\n ],\n subtle: [\n 'bg-gray-4',\n\n 'border-transparent',\n ],\n },\n size: {\n '2xs': [\n 'h-7',\n 'min-w-7',\n\n 'px-2',\n\n 'text-xs',\n // Em tela de toque, 16px: abaixo disso o Safari do iPhone dá zoom ao focar o campo.\n 'any-pointer-coarse:text-base',\n ],\n xs: [\n 'h-8',\n 'min-w-8',\n\n 'px-2',\n\n 'text-xs',\n 'any-pointer-coarse:text-base',\n ],\n sm: [\n 'h-9',\n 'min-w-9',\n\n 'px-2.5',\n\n 'text-sm',\n 'any-pointer-coarse:text-base',\n ],\n md: [\n 'h-10',\n 'min-w-10',\n\n 'px-3',\n\n 'text-sm',\n 'any-pointer-coarse:text-base',\n ],\n lg: [\n 'h-11',\n 'min-w-11',\n\n 'px-4',\n\n 'text-base',\n ],\n xl: [\n 'h-12',\n 'min-w-12',\n\n 'px-4.5',\n\n 'text-base',\n ],\n '2xl': [\n 'h-16',\n 'min-w-16',\n\n 'px-5',\n\n 'text-lg',\n ],\n },\n },\n defaultVariants: {\n size: numberInputDefaultVariants.size,\n variant: numberInputDefaultVariants.variant,\n },\n },\n);\n"],"mappings":";;AAmBA,MAAa,6BAA4D;CACvE,MAAM;CACN,SAAS;AACX;;;;;;;;AASA,MAAa,sBAAsB,IACjC;CACE;CACA;CAEA;CACA;CAEA;CACA;CACA;CAEA;CAEA;CAEA;CACA;CACA;CAEA;CACA;CAEA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CAEA;CACA;CAEA;CACA;CAEA;CACA;CACA;CACA;AACF,GACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;IACP;IACA;IAEA;GACF;GACA,QAAQ,CACN,aAEA,oBACF;EACF;EACA,MAAM;GACJ,OAAO;IACL;IACA;IAEA;IAEA;IAEA;GACF;GACA,IAAI;IACF;IACA;IAEA;IAEA;IACA;GACF;GACA,IAAI;IACF;IACA;IAEA;IAEA;IACA;GACF;GACA,IAAI;IACF;IACA;IAEA;IAEA;IACA;GACF;GACA,IAAI;IACF;IACA;IAEA;IAEA;GACF;GACA,IAAI;IACF;IACA;IAEA;IAEA;GACF;GACA,OAAO;IACL;IACA;IAEA;IAEA;GACF;EACF;CACF;CACA,iBAAiB;EACf,MAAM,2BAA2B;EACjC,SAAS,2BAA2B;CACtC;AACF,CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NumberInputVariants } from "./number-input-variants.js";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import { MergeOverride } from "@lucasbernardosn/utils";
|
|
3
|
+
import { MergeOverride } from "@lucasbernardosn/ts-utils";
|
|
4
4
|
import { Input } from "@base-ui/react/input";
|
|
5
5
|
import { NumericFormatProps } from "react-number-format";
|
|
6
6
|
//#region src/components/fields/number-input/number-input.d.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mergeStateClassNames } from "../../../utils/merge-state-class-names.js";
|
|
2
2
|
import { numberInputVariants } from "./number-input-variants.js";
|
|
3
|
-
import { createSplitProps } from "@lucasbernardosn/utils";
|
|
3
|
+
import { createSplitProps } from "@lucasbernardosn/ts-utils";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
import { Input } from "@base-ui/react/input";
|
|
6
6
|
import { NumericFormat } from "react-number-format";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number-input.js","names":["BaseInput"],"sources":["../../../../src/components/fields/number-input/number-input.tsx"],"sourcesContent":["import { Input as BaseInput } from '@base-ui/react/input';\nimport {
|
|
1
|
+
{"version":3,"file":"number-input.js","names":["BaseInput"],"sources":["../../../../src/components/fields/number-input/number-input.tsx"],"sourcesContent":["import { Input as BaseInput } from '@base-ui/react/input';\nimport {\n createSplitProps,\n type MergeOverride,\n} from '@lucasbernardosn/ts-utils';\nimport type React from 'react';\nimport { NumericFormat, type NumericFormatProps } from 'react-number-format';\nimport { mergeStateClassNames } from '#utils';\nimport {\n type NumberInputVariants,\n numberInputVariants,\n} from './number-input-variants';\n\nexport type NumberInputProps = MergeOverride<\n Omit<\n NumericFormatProps<BaseInput.Props>,\n | 'customInput'\n | 'displayType'\n | 'getInputRef'\n | 'renderText'\n | 'valueIsNumericString'\n >,\n NumberInputVariants & {\n /**\n * O valor numérico, para o modo controlado. `null` deixa o campo vazio.\n */\n value?: number | null;\n /**\n * O valor numérico inicial, para o modo não controlado.\n */\n defaultValue?: number | null;\n /**\n * Chamado a cada mudança feita pelo usuário, com o número já convertido, ou `null` com o campo\n * vazio. Mudar uma prop (o `value`, o `decimalScale`) não o chama.\n */\n onValueChange?: (\n value: number | null,\n details: NumberInputChangeEventDetails,\n ) => void;\n ref?: React.Ref<HTMLInputElement>;\n }\n>;\n\nexport type NumberInputState = BaseInput.State;\n\nexport type NumberInputChangeEventDetails = {\n /**\n * O texto como aparece no campo, com separadores, prefixo e sufixo (`\"1.234,50\"`).\n */\n formattedValue: string;\n /**\n * O evento da digitação.\n */\n event: React.SyntheticEvent<HTMLInputElement> | undefined;\n};\n\nconst splitVariantProps = createSplitProps<NumberInputVariants>();\n\n/**\n * Campo numérico que formata enquanto se digita, com o `react-number-format` sobre o `Input` do\n * Base UI: liga-se sozinho ao `Field` quando está dentro de um, como o `Input` da lib.\n *\n * Sai em pt-BR: `.` no milhar e `,` no decimal, com o `.` digitado aceito como vírgula. O\n * `decimalScale` limita as casas já na digitação (sem ele, não há limite), e o\n * `fixedDecimalScale` completa com zeros. Com `decimalScale={0}`, a vírgula é ignorada: \"12,7\"\n * vira 127.\n *\n * O número sai pelo `onValueChange`. O campo guarda o texto formatado (`\"1.234,50\"`), e é ele que\n * vai no `FormData`, no `onFormSubmit` do `Form` e no `validate` do `Field`.\n *\n * O `inputMode` abre o teclado numérico no celular: `decimal`, ou `numeric` sem casas. No iPhone,\n * nenhum dos dois tem o sinal de menos; para digitar negativo lá, `inputMode=\"text\"`.\n *\n * @example\n * ```tsx\n * <NumberInput\n * aria-label=\"Peso (kg)\"\n * decimalScale={3}\n * onValueChange={(value) => setWeight(value)}\n * />\n * ```\n */\nexport const NumberInput = (props: NumberInputProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, [\n 'size',\n 'variant',\n ]);\n\n const {\n className,\n value,\n defaultValue,\n onValueChange,\n ref,\n decimalScale,\n ...rest\n } = elementProps;\n\n return (\n <NumericFormat\n data-component=\"NumberInput\"\n customInput={BaseInput}\n getInputRef={ref}\n thousandSeparator=\".\"\n decimalSeparator=\",\"\n allowedDecimalSeparators={[',', '.']}\n inputMode={decimalScale === 0 ? 'numeric' : 'decimal'}\n decimalScale={decimalScale}\n // O `react-number-format` trata `null` como não controlado; `''` é o campo vazio controlado.\n value={value === null ? '' : value}\n defaultValue={defaultValue ?? undefined}\n onValueChange={(values, sourceInfo) => {\n /** O pacote também avisa quando uma prop muda; aqui, só a mudança do usuário. */\n if (sourceInfo.source !== 'event') {\n return;\n }\n\n onValueChange?.(values.floatValue ?? null, {\n formattedValue: values.formattedValue,\n event: sourceInfo.event,\n });\n }}\n className={mergeStateClassNames(\n numberInputVariants(variantProps),\n className,\n )}\n {...rest}\n />\n );\n};\n\nNumberInput.displayName = 'NumberInput';\n"],"mappings":";;;;;;;AAwDA,MAAM,oBAAoB,iBAAsC;;;;;;;;;;;;;;;;;;;;;;;;;AA0BhE,MAAa,eAAe,UAA4B;CACtD,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO,CAC5D,QACA,SACF,CAAC;CAED,MAAM,EACJ,WACA,OACA,cACA,eACA,KACA,cACA,GAAG,SACD;CAEJ,OACE,oBAAC,eAAD;EACE,kBAAe;EACf,aAAaA;EACb,aAAa;EACb,mBAAkB;EAClB,kBAAiB;EACjB,0BAA0B,CAAC,KAAK,GAAG;EACnC,WAAW,iBAAiB,IAAI,YAAY;EAC9B;EAEd,OAAO,UAAU,OAAO,KAAK;EAC7B,cAAc,gBAAgB,KAAA;EAC9B,gBAAgB,QAAQ,eAAe;;GAErC,IAAI,WAAW,WAAW,SACxB;GAGF,gBAAgB,OAAO,cAAc,MAAM;IACzC,gBAAgB,OAAO;IACvB,OAAO,WAAW;GACpB,CAAC;EACH;EACA,WAAW,qBACT,oBAAoB,YAAY,GAChC,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,YAAY,cAAc"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { InputProps } from "../input/input.js";
|
|
2
2
|
import "../input/index.js";
|
|
3
3
|
import { PasswordInputVariants } from "./password-input-variants.js";
|
|
4
|
-
import { MergeOverride } from "@lucasbernardosn/utils";
|
|
4
|
+
import { MergeOverride } from "@lucasbernardosn/ts-utils";
|
|
5
5
|
import * as ZagPasswordInput from "@zag-js/password-input";
|
|
6
6
|
//#region src/components/fields/password-input/password-input.d.ts
|
|
7
7
|
/**
|
|
@@ -3,7 +3,7 @@ import { Icon } from "../../display/icon/icon.js";
|
|
|
3
3
|
import { Input } from "../input/input.js";
|
|
4
4
|
import { passwordInputVariants } from "./password-input-variants.js";
|
|
5
5
|
import { useId } from "react";
|
|
6
|
-
import { createSplitProps } from "@lucasbernardosn/utils";
|
|
6
|
+
import { createSplitProps } from "@lucasbernardosn/ts-utils";
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
import { EyeIcon, EyeSlashIcon } from "@phosphor-icons/react";
|
|
9
9
|
import { normalizeProps, useMachine } from "@zag-js/react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-input.js","names":[],"sources":["../../../../src/components/fields/password-input/password-input.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"password-input.js","names":[],"sources":["../../../../src/components/fields/password-input/password-input.tsx"],"sourcesContent":["import {\n createSplitProps,\n type MergeOverride,\n} from '@lucasbernardosn/ts-utils';\nimport { EyeIcon, EyeSlashIcon } from '@phosphor-icons/react';\nimport * as ZagPasswordInput from '@zag-js/password-input';\nimport { normalizeProps, useMachine } from '@zag-js/react';\nimport { useId } from 'react';\nimport { Icon } from '#components/display/icon';\nimport { Input, type InputProps } from '#components/fields/input';\nimport { mergeTwClassNames } from '#utils';\nimport {\n type PasswordInputVariants,\n passwordInputVariants,\n} from './password-input-variants';\n\n/**\n * As opções da máquina do Zag que o componente aceita. O `id` fica de fora: aqui ele é o `id` do\n * `<input>`, como no `Input`, e a máquina ganha um próprio.\n */\ntype PasswordInputMachineProps = Omit<\n ZagPasswordInput.Props,\n 'id' | 'dir' | 'getRootNode'\n>;\n\nexport type PasswordInputProps = MergeOverride<\n Omit<InputProps, 'type'>,\n PasswordInputVariants & PasswordInputMachineProps\n>;\n\n/**\n * Textos acessíveis padrão do botão, em pt-BR. Um `translations` passado por prop sobrescreve só\n * as chaves informadas.\n */\nconst passwordInputTranslations: ZagPasswordInput.IntlTranslations = {\n visibilityTrigger: (visible) => (visible ? 'Ocultar senha' : 'Mostrar senha'),\n};\n\nconst splitVariantProps = createSplitProps<PasswordInputVariants>();\n\nconst splitMachineProps = createSplitProps<PasswordInputMachineProps>();\n\n/**\n * Campo de senha com o botão de mostrar e ocultar, sobre a máquina `password-input` do Zag e o\n * `Input` da lib: liga-se sozinho ao `Field` quando está dentro de um.\n *\n * - O botão fica fora do Tab, como no Zag: no clique, a senha aparece ou some e o foco continua\n * no campo. Ele some quando o campo está desabilitado, venha o `disabled` da prop ou do `Field`.\n * - A senha volta a ficar oculta no envio e no reset do formulário, para o campo ir como\n * `type=\"password\"`, que é o que os gerenciadores de senha reconhecem.\n * - `autoComplete` é `current-password` por padrão; num cadastro, `new-password`.\n *\n * Componente único, e não composto como os outros componentes sobre o Zag: a máquina é criada aqui\n * dentro, sem hook, contexto nem `RootProvider`. O `className` vai para o contêiner, que dá a\n * largura e a posição no layout; o `<input>` ocupa a largura dele.\n *\n * @example\n * ```tsx\n * <Field.Root>\n * <Field.Label>Senha</Field.Label>\n * <PasswordInput />\n * </Field.Root>\n * ```\n */\nexport const PasswordInput = (props: PasswordInputProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, [\n 'size',\n 'variant',\n ]);\n\n const [machineProps, inputProps] = splitMachineProps(elementProps, [\n 'autoComplete',\n 'defaultVisible',\n 'disabled',\n 'ids',\n 'ignorePasswordManagers',\n 'invalid',\n 'name',\n 'onVisibilityChange',\n 'readOnly',\n 'required',\n 'translations',\n 'visible',\n ]);\n\n const { className, id, ...rest } = inputProps;\n\n const machineId = useId();\n\n const service = useMachine(ZagPasswordInput.machine, {\n ...machineProps,\n id: machineId,\n // O `id` de quem usa é o do `<input>`; sem ele, vale o que o Zag gera.\n ids: { ...machineProps.ids, input: id ?? machineProps.ids?.input },\n // Mescladas por chave, para um `translations` parcial não derrubar os outros textos.\n translations: {\n ...passwordInputTranslations,\n ...machineProps.translations,\n },\n });\n\n const passwordInput = ZagPasswordInput.connect(service, normalizeProps);\n\n /**\n * As props do campo sem as chaves `undefined`: o Zag manda `data-invalid`, `data-disabled` e\n * `data-readonly` vazios quando o estado não vale, e eles apagariam os que o `Input` escreve a\n * partir do `Field`.\n */\n const zagInputProps = Object.fromEntries(\n Object.entries(passwordInput.getInputProps()).filter(\n ([, value]) => value !== undefined,\n ),\n );\n\n return (\n <div\n {...passwordInput.getRootProps()}\n data-component=\"PasswordInput\"\n className={mergeTwClassNames(\n passwordInputVariants({ size: variantProps.size }),\n className,\n )}\n >\n <Input\n {...zagInputProps}\n size={variantProps.size}\n variant={variantProps.variant}\n className={mergeTwClassNames([\n // Marca o campo para o botão ler o `disabled` dele\n 'peer',\n // A folga dos dois lados do ícone mais o ícone: o texto não passa por baixo do botão\n 'pe-[calc(var(--password-input-px)*2+var(--password-input-icon-size))]',\n ])}\n {...rest}\n />\n\n <button\n {...passwordInput.getVisibilityTriggerProps()}\n data-component=\"PasswordInput.VisibilityTrigger\"\n className={mergeTwClassNames([\n 'absolute',\n 'inset-y-0',\n 'inset-e-0',\n\n 'flex',\n 'items-center',\n\n 'px-(--password-input-px)',\n '[&_svg]:size-(--password-input-icon-size)',\n\n 'text-gray-11',\n 'hover:text-gray-12',\n\n 'cursor-pointer',\n\n // `disabled` do campo, da prop ou do `Field`\n 'peer-disabled:hidden',\n ])}\n >\n <span\n {...passwordInput.getIndicatorProps()}\n className=\"flex\"\n >\n <Icon\n render={passwordInput.visible ? <EyeIcon /> : <EyeSlashIcon />}\n />\n </span>\n </button>\n </div>\n );\n};\n\nPasswordInput.displayName = 'PasswordInput';\n"],"mappings":";;;;;;;;;;;;;;;AAkCA,MAAM,4BAA+D,EACnE,oBAAoB,YAAa,UAAU,kBAAkB,gBAC/D;AAEA,MAAM,oBAAoB,iBAAwC;AAElE,MAAM,oBAAoB,iBAA4C;;;;;;;;;;;;;;;;;;;;;;;AAwBtE,MAAa,iBAAiB,UAA8B;CAC1D,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO,CAC5D,QACA,SACF,CAAC;CAED,MAAM,CAAC,cAAc,cAAc,kBAAkB,cAAc;EACjE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;CAED,MAAM,EAAE,WAAW,IAAI,GAAG,SAAS;CAEnC,MAAM,YAAY,MAAM;CAExB,MAAM,UAAU,WAAW,iBAAiB,SAAS;EACnD,GAAG;EACH,IAAI;EAEJ,KAAK;GAAE,GAAG,aAAa;GAAK,OAAO,MAAM,aAAa,KAAK;EAAM;EAEjE,cAAc;GACZ,GAAG;GACH,GAAG,aAAa;EAClB;CACF,CAAC;CAED,MAAM,gBAAgB,iBAAiB,QAAQ,SAAS,cAAc;;;;;;CAOtE,MAAM,gBAAgB,OAAO,YAC3B,OAAO,QAAQ,cAAc,cAAc,CAAC,CAAC,CAAC,QAC3C,GAAG,WAAW,UAAU,KAAA,CAC3B,CACF;CAEA,OACE,qBAAC,OAAD;EACE,GAAI,cAAc,aAAa;EAC/B,kBAAe;EACf,WAAW,kBACT,sBAAsB,EAAE,MAAM,aAAa,KAAK,CAAC,GACjD,SACF;EANF,UAAA,CAQE,oBAAC,OAAD;GACE,GAAI;GACJ,MAAM,aAAa;GACnB,SAAS,aAAa;GACtB,WAAW,kBAAkB,CAE3B,QAEA,uEACF,CAAC;GACD,GAAI;EACL,CAAA,GAED,oBAAC,UAAD;GACE,GAAI,cAAc,0BAA0B;GAC5C,kBAAe;GACf,WAAW,kBAAkB;IAC3B;IACA;IACA;IAEA;IACA;IAEA;IACA;IAEA;IACA;IAEA;IAGA;GACF,CAAC;GAED,UAAA,oBAAC,QAAD;IACE,GAAI,cAAc,kBAAkB;IACpC,WAAU;IAEV,UAAA,oBAAC,MAAD,EACE,QAAQ,cAAc,UAAU,oBAAC,SAAD,CAAU,CAAA,IAAI,oBAAC,cAAD,CAAe,CAAA,EAC9D,CAAA;GACG,CAAA;EACA,CAAA,CACL;;AAET;AAEA,cAAc,cAAc"}
|
|
@@ -20,7 +20,7 @@ const patternInputVariants = cva([
|
|
|
20
20
|
"font-normal",
|
|
21
21
|
"text-gray-12",
|
|
22
22
|
"font-mono",
|
|
23
|
-
"placeholder:text-gray-
|
|
23
|
+
"placeholder:text-gray-11/80",
|
|
24
24
|
"border",
|
|
25
25
|
"rounded-md",
|
|
26
26
|
"corner-squircle",
|
|
@@ -43,9 +43,7 @@ const patternInputVariants = cva([
|
|
|
43
43
|
"data-invalid:border-red-9",
|
|
44
44
|
"data-invalid:[--pattern-input-focus-color:var(--color-red-9)]",
|
|
45
45
|
"aria-invalid:border-red-9",
|
|
46
|
-
"aria-invalid:[--pattern-input-focus-color:var(--color-red-9)]"
|
|
47
|
-
"user-invalid:border-red-9",
|
|
48
|
-
"user-invalid:[--pattern-input-focus-color:var(--color-red-9)]"
|
|
46
|
+
"aria-invalid:[--pattern-input-focus-color:var(--color-red-9)]"
|
|
49
47
|
], {
|
|
50
48
|
variants: {
|
|
51
49
|
variant: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-input-variants.js","names":[],"sources":["../../../../src/components/fields/pattern-input/pattern-input-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport type PatternInputVariants = {\n /**\n * Altura, padding e tamanho do texto, os mesmos do `Input`. Substitui o atributo nativo `size`:\n * a largura vem do CSS. Em tela de toque, do `2xs` ao `md` o texto sobe para 16px, para o iPhone\n * não dar zoom no foco.\n *\n * @default 'sm'\n */\n size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /**\n * Fundo e borda do campo.\n *\n * @default 'outline'\n */\n variant?: 'outline' | 'subtle';\n};\n\nexport const patternInputDefaultVariants: Required<PatternInputVariants> = {\n size: 'sm',\n variant: 'outline',\n};\n\n/**\n * Cópia de `inputVariants`, a origem do visual dos campos: o anel de foco e o inválido funcionam do\n * mesmo jeito, explicados lá. As diferenças:\n * - sem `data-placeholder`;\n * - `font-mono`, que dá a mesma largura a todos os caracteres (dígitos, letras, marcador e\n * literais): o texto não se mexe quando uma posição vazia é preenchida.\n */\nexport const patternInputVariants = cva(\n [\n 'relative',\n 'w-full',\n\n 'appearance-none',\n 'outline-none',\n\n 'text-start',\n 'font-normal', // Sem isto, herda o peso do `<label>` em volta\n 'text-gray-12',\n\n 'font-mono',\n\n 'placeholder:text-gray-
|
|
1
|
+
{"version":3,"file":"pattern-input-variants.js","names":[],"sources":["../../../../src/components/fields/pattern-input/pattern-input-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport type PatternInputVariants = {\n /**\n * Altura, padding e tamanho do texto, os mesmos do `Input`. Substitui o atributo nativo `size`:\n * a largura vem do CSS. Em tela de toque, do `2xs` ao `md` o texto sobe para 16px, para o iPhone\n * não dar zoom no foco.\n *\n * @default 'sm'\n */\n size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /**\n * Fundo e borda do campo.\n *\n * @default 'outline'\n */\n variant?: 'outline' | 'subtle';\n};\n\nexport const patternInputDefaultVariants: Required<PatternInputVariants> = {\n size: 'sm',\n variant: 'outline',\n};\n\n/**\n * Cópia de `inputVariants`, a origem do visual dos campos: o anel de foco e o inválido funcionam do\n * mesmo jeito, explicados lá. As diferenças:\n * - sem `data-placeholder`;\n * - `font-mono`, que dá a mesma largura a todos os caracteres (dígitos, letras, marcador e\n * literais): o texto não se mexe quando uma posição vazia é preenchida.\n */\nexport const patternInputVariants = cva(\n [\n 'relative',\n 'w-full',\n\n 'appearance-none',\n 'outline-none',\n\n 'text-start',\n 'font-normal', // Sem isto, herda o peso do `<label>` em volta\n 'text-gray-12',\n\n 'font-mono',\n\n 'placeholder:text-gray-11/80',\n\n 'border',\n 'rounded-md',\n 'corner-squircle',\n\n '[--pattern-input-focus-color:var(--color-black)]',\n 'dark:[--pattern-input-focus-color:var(--color-white)]',\n\n 'focus-visible:outline-1',\n 'focus-visible:outline-solid',\n 'focus-visible:-outline-offset-2', // Offset = borda + anel: o campo não cresce no foco\n 'focus-visible:outline-(--pattern-input-focus-color)',\n 'focus-visible:border-(--pattern-input-focus-color)',\n\n 'data-focused:outline-1',\n 'data-focused:outline-solid',\n 'data-focused:-outline-offset-2',\n 'data-focused:outline-(--pattern-input-focus-color)',\n 'data-focused:border-(--pattern-input-focus-color)',\n\n 'disabled:opacity-50',\n 'disabled:cursor-not-allowed',\n\n 'data-disabled:opacity-50',\n 'data-disabled:cursor-not-allowed',\n\n 'data-invalid:border-red-9',\n 'data-invalid:[--pattern-input-focus-color:var(--color-red-9)]',\n 'aria-invalid:border-red-9',\n 'aria-invalid:[--pattern-input-focus-color:var(--color-red-9)]',\n ],\n {\n variants: {\n variant: {\n outline: [\n 'bg-white/90',\n 'dark:bg-black/90',\n\n 'border-gray-alpha-7',\n ],\n subtle: [\n 'bg-gray-4',\n\n 'border-transparent',\n ],\n },\n size: {\n '2xs': [\n 'h-7',\n 'min-w-7',\n\n 'px-2',\n\n 'text-xs',\n // Em tela de toque, 16px: abaixo disso o Safari do iPhone dá zoom ao focar o campo.\n 'any-pointer-coarse:text-base',\n ],\n xs: [\n 'h-8',\n 'min-w-8',\n\n 'px-2',\n\n 'text-xs',\n 'any-pointer-coarse:text-base',\n ],\n sm: [\n 'h-9',\n 'min-w-9',\n\n 'px-2.5',\n\n 'text-sm',\n 'any-pointer-coarse:text-base',\n ],\n md: [\n 'h-10',\n 'min-w-10',\n\n 'px-3',\n\n 'text-sm',\n 'any-pointer-coarse:text-base',\n ],\n lg: [\n 'h-11',\n 'min-w-11',\n\n 'px-4',\n\n 'text-base',\n ],\n xl: [\n 'h-12',\n 'min-w-12',\n\n 'px-4.5',\n\n 'text-base',\n ],\n '2xl': [\n 'h-16',\n 'min-w-16',\n\n 'px-5',\n\n 'text-lg',\n ],\n },\n },\n defaultVariants: {\n size: patternInputDefaultVariants.size,\n variant: patternInputDefaultVariants.variant,\n },\n },\n);\n"],"mappings":";;AAmBA,MAAa,8BAA8D;CACzE,MAAM;CACN,SAAS;AACX;;;;;;;;AASA,MAAa,uBAAuB,IAClC;CACE;CACA;CAEA;CACA;CAEA;CACA;CACA;CAEA;CAEA;CAEA;CACA;CACA;CAEA;CACA;CAEA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CAEA;CACA;CAEA;CACA;CAEA;CACA;CACA;CACA;AACF,GACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;IACP;IACA;IAEA;GACF;GACA,QAAQ,CACN,aAEA,oBACF;EACF;EACA,MAAM;GACJ,OAAO;IACL;IACA;IAEA;IAEA;IAEA;GACF;GACA,IAAI;IACF;IACA;IAEA;IAEA;IACA;GACF;GACA,IAAI;IACF;IACA;IAEA;IAEA;IACA;GACF;GACA,IAAI;IACF;IACA;IAEA;IAEA;IACA;GACF;GACA,IAAI;IACF;IACA;IAEA;IAEA;GACF;GACA,IAAI;IACF;IACA;IAEA;IAEA;GACF;GACA,OAAO;IACL;IACA;IAEA;IAEA;GACF;EACF;CACF;CACA,iBAAiB;EACf,MAAM,4BAA4B;EAClC,SAAS,4BAA4B;CACvC;AACF,CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PatternInputVariants } from "./pattern-input-variants.js";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import { MergeOverride } from "@lucasbernardosn/utils";
|
|
3
|
+
import { MergeOverride } from "@lucasbernardosn/ts-utils";
|
|
4
4
|
import { Input } from "@base-ui/react/input";
|
|
5
5
|
import { NumberFormatBaseProps } from "react-number-format";
|
|
6
6
|
//#region src/components/fields/pattern-input/pattern-input.d.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mergeStateClassNames } from "../../../utils/merge-state-class-names.js";
|
|
2
2
|
import { patternInputVariants } from "./pattern-input-variants.js";
|
|
3
|
-
import { createSplitProps } from "@lucasbernardosn/utils";
|
|
3
|
+
import { createSplitProps } from "@lucasbernardosn/ts-utils";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
import { Input } from "@base-ui/react/input";
|
|
6
6
|
import { NumberFormatBase } from "react-number-format";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-input.js","names":["BaseInput"],"sources":["../../../../src/components/fields/pattern-input/pattern-input.tsx"],"sourcesContent":["import { Input as BaseInput } from '@base-ui/react/input';\nimport { createSplitProps, type MergeOverride } from '@lucasbernardosn/utils';\nimport type React from 'react';\nimport {\n type ChangeMeta,\n NumberFormatBase,\n type NumberFormatBaseProps,\n} from 'react-number-format';\nimport { mergeStateClassNames } from '#utils';\nimport {\n type PatternInputVariants,\n patternInputVariants,\n} from './pattern-input-variants';\n\nexport type PatternInputProps = MergeOverride<\n Omit<\n NumberFormatBaseProps<BaseInput.Props>,\n | 'customInput'\n | 'displayType'\n | 'format'\n | 'getCaretBoundary'\n | 'getInputRef'\n | 'isCharacterSame'\n | 'isValidInputCharacter'\n | 'removeFormatting'\n | 'renderText'\n | 'valueIsNumericString'\n >,\n PatternInputVariants & {\n /**\n * A máscara: `#` é dígito, `*` é letra ou dígito, e o resto é literal (que não pode ser letra\n * nem dígito). Numa lista, o campo usa a primeira máscara que aceita o que foi digitado. As\n * prontas estão em `patternInputMasks`.\n */\n mask: string | readonly string[];\n /**\n * O valor sem os literais (`\"12345678901\"`), para o modo controlado. `null` deixa o campo\n * vazio.\n */\n value?: string | null;\n /**\n * O valor inicial sem os literais, para o modo não controlado.\n */\n defaultValue?: string | null;\n /**\n * Chamado a cada mudança feita pelo usuário, com o valor sem os literais, ou `null` com o campo\n * vazio. Mudar o `value` por prop não o chama.\n */\n onValueChange?: (\n value: string | null,\n details: PatternInputChangeEventDetails,\n ) => void;\n ref?: React.Ref<HTMLInputElement>;\n }\n>;\n\nexport type PatternInputState = BaseInput.State;\n\nexport type PatternInputChangeEventDetails = {\n /**\n * O texto como aparece no campo, com os literais e o marcador (`\"123.456.7__-__\"`).\n */\n formattedValue: string;\n /**\n * Se todas as posições da máscara em uso estão preenchidas.\n */\n isComplete: boolean;\n /**\n * O evento da digitação.\n */\n event: React.SyntheticEvent<HTMLInputElement> | undefined;\n};\n\n/**\n * Separa as variantes (`size`, `variant`) das props do campo: elas vão para o cva e não chegam ao\n * `<input>`, onde `size` seria o atributo nativo de largura.\n */\nconst splitVariantProps = createSplitProps<PatternInputVariants>();\n\n/**\n * Campo com máscara (CPF, CNPJ, CEP, telefone), sobre o `NumberFormatBase` do `react-number-format`\n * e o `Input` do Base UI: liga-se sozinho ao `Field` quando está dentro de um, como o `Input` da\n * lib.\n *\n * - Com algo digitado, o campo mostra a máscara inteira, com `_` nas posições vazias. Vazio, ele\n * fica vazio, e o placeholder padrão é a primeira máscara com o marcador.\n * - Numa lista de máscaras, o campo troca de máscara conforme o que foi digitado: no telefone, o\n * 11º dígito passa para celular.\n * - Letras viram maiúsculas. Uma tecla que nenhuma máscara aceita é ignorada; o texto colado é\n * cortado no que couber.\n *\n * O valor sai pelo `onValueChange`, sem os literais, com `isComplete` dizendo se a máscara foi\n * preenchida. O campo guarda o texto formatado, e é ele que vai no `FormData`, no `onFormSubmit` do\n * `Form` e no `validate` do `Field`.\n *\n * @example\n * ```tsx\n * <PatternInput\n * aria-label=\"Telefone\"\n * mask={patternInputMasks.phone}\n * onValueChange={(value) => setPhone(value)}\n * />\n * ```\n */\nexport const PatternInput = (props: PatternInputProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, [\n 'size',\n 'variant',\n ]);\n\n const {\n className,\n mask,\n value,\n defaultValue,\n onValueChange,\n onKeyDown,\n ref,\n ...rest\n } = elementProps;\n\n /** Uma máscara só vira lista de um item: o resto do código trata sempre a lista. */\n const masks = typeof mask === 'string' ? [mask] : mask;\n\n /** Se alguma máscara tem `*`: decide o teclado do celular e a maiúscula automática. */\n const acceptsLetters = masks.some((item) => item.includes('*'));\n\n return (\n <NumberFormatBase\n data-component=\"PatternInput\"\n customInput={BaseInput}\n getInputRef={ref}\n // O teclado `numeric` do celular não tem letras\n inputMode={acceptsLetters ? 'text' : 'numeric'}\n // O teclado do celular já abre em maiúscula; no desktop, não muda nada\n autoCapitalize={acceptsLetters ? 'characters' : undefined}\n // A primeira máscara só com o marcador; uma prop `placeholder` substitui\n placeholder={formatPattern('', masks[0] ?? '')}\n // Vazio, o texto fica vazio, sem a máscara: o `required` e o placeholder continuam valendo\n format={(rawValue) =>\n rawValue === ''\n ? ''\n : formatPattern(rawValue, selectMask(masks, rawValue) ?? '')\n }\n removeFormatting={(inputValue, changeMeta) =>\n removePatternFormatting(inputValue, changeMeta, masks)\n }\n getCaretBoundary={(formattedValue) =>\n getCaretBoundary(formattedValue, masks)\n }\n isValidInputCharacter={isValidInputCharacter}\n // O pacote chama este `onKeyDown` dentro do dele, antes de guardar a posição do cursor\n onKeyDown={(event) => {\n moveCaretPastLiterals(event);\n\n onKeyDown?.(event);\n }}\n // O pacote liga cada caractere digitado ao do texto formatado para devolver o cursor ao\n // lugar; a letra digitada em minúscula volta em maiúscula e precisa contar como a mesma\n isCharacterSame={({\n currentValue,\n formattedValue,\n currentValueIndex,\n formattedValueIndex,\n }) =>\n currentValue[currentValueIndex]?.toUpperCase() ===\n formattedValue[formattedValueIndex]\n }\n // O `react-number-format` trata `null` como não controlado; `''` é o campo vazio controlado.\n value={value === null ? '' : value}\n defaultValue={defaultValue ?? undefined}\n onValueChange={(values, sourceInfo) => {\n /** O pacote também avisa quando uma prop muda; aqui, só a mudança do usuário. */\n if (sourceInfo.source !== 'event') {\n return;\n }\n\n /** A máscara em uso, para saber se o valor preencheu todas as posições dela. */\n const selectedMask = selectMask(masks, values.value);\n\n onValueChange?.(values.value === '' ? null : values.value, {\n formattedValue: values.formattedValue,\n isComplete:\n selectedMask !== undefined &&\n values.value.length === countSlots(selectedMask),\n event: sourceInfo.event,\n });\n }}\n className={mergeStateClassNames(\n patternInputVariants(variantProps),\n className,\n )}\n {...rest}\n />\n );\n};\n\nPatternInput.displayName = 'PatternInput';\n\n/**\n * Marca as posições ainda vazias da máscara. Faz parte do texto do campo, então aparece no\n * `FormData` e no `validate` do `Field` (`\"123.4__.___-__\"`), e é por ele que o `getCaretBoundary`\n * acha a primeira posição vazia. Não pode ser letra nem dígito, para o `readRawValue` descartá-lo.\n */\nconst placeholderChar = '_';\n\n/**\n * Os tokens da máscara e o caractere que cada um aceita; o resto da máscara é literal. O `*` só\n * testa maiúscula porque o valor já chega convertido pelo `readRawValue`.\n */\nconst tokenPatterns: Record<string, RegExp> = {\n '#': /^\\d$/,\n '*': /^[0-9A-Z]$/,\n};\n\n/**\n * Tudo que não é letra sem acento nem dígito: os literais, o marcador e o que vier num texto\n * colado (espaço, `ç`, `á`). Tem a flag `g` para o `replace` trocar todas as ocorrências; com ela,\n * o `test` guarda a posição entre chamadas, então esta fica só para o `replace`.\n */\nconst nonAlphanumericPattern = /[^0-9a-z]/gi;\n\n/**\n * Uma letra sem acento ou um dígito. Aceita minúscula porque a tecla digitada chega como foi\n * digitada: a conversão para maiúscula vem depois, no `readRawValue`.\n */\nconst alphanumericPattern = /^[0-9a-z]$/i;\n\n/**\n * Se o caractere da máscara é um token (`#` ou `*`). Aceita `undefined` para ler uma posição fora da\n * máscara (antes do início ou depois do fim), que conta como não token.\n */\nconst isToken = (char: string | undefined) =>\n char !== undefined && char in tokenPatterns;\n\n/**\n * Quantas posições a máscara tem para preencher: o tamanho do valor completo, que decide o\n * `isComplete`.\n */\nconst countSlots = (mask: string) => [...mask].filter(isToken).length;\n\n/**\n * Letras e dígitos do texto, com as letras em maiúscula: os literais e o marcador ficam de fora. Lê\n * tanto o texto do campo quanto o `value` por prop, que pode chegar com literais ou em minúscula.\n */\nconst readRawValue = (text: string) =>\n text.replace(nonAlphanumericPattern, '').toUpperCase();\n\n/**\n * O que o `NumberFormatBase` trata como caractere do valor (o resto é formatação). Ele usa isso para\n * devolver o cursor ao lugar depois de formatar e para pular a formatação no Backspace e no Delete.\n * O padrão do pacote é só dígito; aqui é qualquer letra ou dígito, e quem decide se a posição aceita\n * o caractere é o `removePatternFormatting`.\n */\nconst isValidInputCharacter = (char: string) => alphanumericPattern.test(char);\n\n/**\n * Se a máscara aceita o valor: cabe nas posições, e cada caractere passa no token da sua posição.\n * Vale para valor parcial, que só confere as posições já preenchidas: é o que deixa a lista trocar\n * de máscara no meio da digitação.\n */\nconst fitsMask = (mask: string, rawValue: string) => {\n const tokens = [...mask].filter(isToken);\n\n return (\n rawValue.length <= tokens.length &&\n [...rawValue].every((char, index) =>\n tokenPatterns[tokens[index] ?? '']?.test(char),\n )\n );\n};\n\n/**\n * A primeira máscara da lista que aceita o valor, ou `undefined` se nenhuma aceita. A ordem decide:\n * no telefone, até 10 dígitos as duas aceitam e vale a do fixo, e o 11º só cabe na do celular. Por\n * isso a mais curta vem antes; com a do celular primeiro, a do fixo nunca seria usada.\n */\nconst selectMask = (masks: readonly string[], rawValue: string) =>\n masks.find((mask) => fitsMask(mask, rawValue));\n\n/**\n * O valor na máscara inteira, com o marcador nas posições que sobram. Com o valor vazio, sai a\n * máscara só com o marcador, que é o placeholder. O que passar das posições da máscara é\n * descartado.\n */\nconst formatPattern = (rawValue: string, mask: string) => {\n let index = 0;\n\n return [...mask]\n .map((char) => {\n if (!isToken(char)) {\n return char;\n }\n\n const valueChar = rawValue[index] ?? placeholderChar;\n\n index += 1;\n\n return valueChar;\n })\n .join('');\n};\n\n/**\n * O texto do campo no valor sem os literais, que o `NumberFormatBase` repassa ao `format`. Quando\n * nenhuma máscara aceita o resultado, uma tecla é ignorada (fica o valor anterior), e o resto (o\n * texto colado, o `value` por prop) é cortado no maior começo que alguma máscara aceita.\n *\n * O `changeMeta` vem na digitação e na colagem: `to` é o trecho inserido no texto novo, e\n * `lastValue` o texto antes da mudança. Ele vem `undefined` quando o pacote lê o `value` por prop e\n * quando relê o texto que o `format` acabou de montar.\n */\nconst removePatternFormatting = (\n inputValue: string,\n changeMeta: ChangeMeta | undefined,\n masks: readonly string[],\n): string => {\n const rawValue = readRawValue(inputValue);\n\n if (selectMask(masks, rawValue) !== undefined) {\n return rawValue;\n }\n\n /** Quantos caracteres a mudança inseriu: um numa tecla, nenhum ao apagar, mais numa colagem. */\n const insertedLength = changeMeta\n ? changeMeta.to.end - changeMeta.to.start\n : 0;\n\n if (changeMeta && insertedLength <= 1) {\n return readRawValue(changeMeta.lastValue);\n }\n\n /** Do maior para o menor, o primeiro começo do valor que alguma máscara aceita. */\n for (let length = rawValue.length - 1; length > 0; length--) {\n const prefix = rawValue.slice(0, length);\n\n if (selectMask(masks, prefix) !== undefined) {\n return prefix;\n }\n }\n\n return '';\n};\n\n/**\n * No Backspace logo depois de um literal (ou no Delete logo antes), o cursor pula os literais e o\n * marcador antes de a tecla agir: sem isso, ela apagaria só o literal, que o valor ignora, e nada\n * mudaria. Sem letra nem dígito na direção da tecla, o cursor fica onde está. Com texto\n * selecionado, a tecla apaga a seleção, e a função não faz nada.\n *\n * Funciona porque o `keydown` vem antes de o navegador apagar, e o `NumberFormatBase` chama o\n * `onKeyDown` antes de guardar a posição do cursor que usa para medir a mudança.\n */\nconst moveCaretPastLiterals = (\n event: React.KeyboardEvent<HTMLInputElement>,\n) => {\n const input = event.currentTarget;\n\n const { selectionStart, selectionEnd, value } = input;\n\n if (selectionStart === null || selectionStart !== selectionEnd) {\n return;\n }\n\n let position = selectionStart;\n\n if (event.key === 'Backspace') {\n while (position > 0 && !isValidInputCharacter(value[position - 1] ?? '')) {\n position -= 1;\n }\n\n if (position === 0) {\n return;\n }\n } else if (event.key === 'Delete') {\n while (\n position < value.length &&\n !isValidInputCharacter(value[position] ?? '')\n ) {\n position += 1;\n }\n\n if (position === value.length) {\n return;\n }\n }\n\n if (position !== selectionStart) {\n input.setSelectionRange(position, position);\n }\n};\n\n/**\n * Onde o cursor pode ficar: junto de uma posição preenchida e na primeira posição vazia. Ele não\n * entra no marcador além dela, nem no meio dos literais.\n *\n * Devolve uma entrada por posição do cursor, do início ao fim do texto (por isso `length + 1`), com\n * `true` onde ele pode ficar. O `NumberFormatBase` leva o cursor para a posição permitida mais\n * próxima no clique, no foco, nas setas e depois de cada mudança.\n */\nconst getCaretBoundary = (formattedValue: string, masks: readonly string[]) => {\n const mask = selectMask(masks, readRawValue(formattedValue));\n\n /** Vazio, ou sem máscara que aceite o valor, o cursor pode ficar em qualquer posição. */\n if (formattedValue === '' || mask === undefined) {\n return Array.from({ length: formattedValue.length + 1 }, () => true);\n }\n\n /** Se a posição é um token já preenchido, e não o marcador. */\n const isFilledSlot = (position: number) =>\n isToken(mask[position]) && formattedValue[position] !== placeholderChar;\n\n /** Onde entra o próximo caractere; `-1` com a máscara cheia. */\n const firstEmptySlot = [...mask].findIndex(\n (char, position) =>\n isToken(char) && formattedValue[position] === placeholderChar,\n );\n\n /** Permitida: a primeira posição vazia, antes de uma preenchida ou logo depois de uma. */\n return Array.from(\n { length: formattedValue.length + 1 },\n (_, position) =>\n position === firstEmptySlot ||\n isFilledSlot(position) ||\n isFilledSlot(position - 1),\n );\n};\n"],"mappings":";;;;;;;;;;;AA6EA,MAAM,oBAAoB,iBAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BjE,MAAa,gBAAgB,UAA6B;CACxD,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO,CAC5D,QACA,SACF,CAAC;CAED,MAAM,EACJ,WACA,MACA,OACA,cACA,eACA,WACA,KACA,GAAG,SACD;;CAGJ,MAAM,QAAQ,OAAO,SAAS,WAAW,CAAC,IAAI,IAAI;;CAGlD,MAAM,iBAAiB,MAAM,MAAM,SAAS,KAAK,SAAS,GAAG,CAAC;CAE9D,OACE,oBAAC,kBAAD;EACE,kBAAe;EACf,aAAaA;EACb,aAAa;EAEb,WAAW,iBAAiB,SAAS;EAErC,gBAAgB,iBAAiB,eAAe,KAAA;EAEhD,aAAa,cAAc,IAAI,MAAM,MAAM,EAAE;EAE7C,SAAS,aACP,aAAa,KACT,KACA,cAAc,UAAU,WAAW,OAAO,QAAQ,KAAK,EAAE;EAE/D,mBAAmB,YAAY,eAC7B,wBAAwB,YAAY,YAAY,KAAK;EAEvD,mBAAmB,mBACjB,iBAAiB,gBAAgB,KAAK;EAEjB;EAEvB,YAAY,UAAU;GACpB,sBAAsB,KAAK;GAE3B,YAAY,KAAK;EACnB;EAGA,kBAAkB,EAChB,cACA,gBACA,mBACA,0BAEA,aAAa,kBAAkB,EAAE,YAAY,MAC7C,eAAe;EAGjB,OAAO,UAAU,OAAO,KAAK;EAC7B,cAAc,gBAAgB,KAAA;EAC9B,gBAAgB,QAAQ,eAAe;;GAErC,IAAI,WAAW,WAAW,SACxB;;GAIF,MAAM,eAAe,WAAW,OAAO,OAAO,KAAK;GAEnD,gBAAgB,OAAO,UAAU,KAAK,OAAO,OAAO,OAAO;IACzD,gBAAgB,OAAO;IACvB,YACE,iBAAiB,KAAA,KACjB,OAAO,MAAM,WAAW,WAAW,YAAY;IACjD,OAAO,WAAW;GACpB,CAAC;EACH;EACA,WAAW,qBACT,qBAAqB,YAAY,GACjC,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,aAAa,cAAc;;;;;;AAO3B,MAAM,kBAAkB;;;;;AAMxB,MAAM,gBAAwC;CAC5C,KAAK;CACL,KAAK;AACP;;;;;;AAOA,MAAM,yBAAyB;;;;;AAM/B,MAAM,sBAAsB;;;;;AAM5B,MAAM,WAAW,SACf,SAAS,KAAA,KAAa,QAAQ;;;;;AAMhC,MAAM,cAAc,SAAiB,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC;;;;;AAM/D,MAAM,gBAAgB,SACpB,KAAK,QAAQ,wBAAwB,EAAE,CAAC,CAAC,YAAY;;;;;;;AAQvD,MAAM,yBAAyB,SAAiB,oBAAoB,KAAK,IAAI;;;;;;AAO7E,MAAM,YAAY,MAAc,aAAqB;CACnD,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,OAAO;CAEvC,OACE,SAAS,UAAU,OAAO,UAC1B,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,MAAM,UACzB,cAAc,OAAO,UAAU,GAAG,EAAE,KAAK,IAAI,CAC/C;AAEJ;;;;;;AAOA,MAAM,cAAc,OAA0B,aAC5C,MAAM,MAAM,SAAS,SAAS,MAAM,QAAQ,CAAC;;;;;;AAO/C,MAAM,iBAAiB,UAAkB,SAAiB;CACxD,IAAI,QAAQ;CAEZ,OAAO,CAAC,GAAG,IAAI,CAAC,CACb,KAAK,SAAS;EACb,IAAI,CAAC,QAAQ,IAAI,GACf,OAAO;EAGT,MAAM,YAAY,SAAS,UAAU;EAErC,SAAS;EAET,OAAO;CACT,CAAC,CAAC,CACD,KAAK,EAAE;AACZ;;;;;;;;;;AAWA,MAAM,2BACJ,YACA,YACA,UACW;CACX,MAAM,WAAW,aAAa,UAAU;CAExC,IAAI,WAAW,OAAO,QAAQ,MAAM,KAAA,GAClC,OAAO;;CAIT,MAAM,iBAAiB,aACnB,WAAW,GAAG,MAAM,WAAW,GAAG,QAClC;CAEJ,IAAI,cAAc,kBAAkB,GAClC,OAAO,aAAa,WAAW,SAAS;;CAI1C,KAAK,IAAI,SAAS,SAAS,SAAS,GAAG,SAAS,GAAG,UAAU;EAC3D,MAAM,SAAS,SAAS,MAAM,GAAG,MAAM;EAEvC,IAAI,WAAW,OAAO,MAAM,MAAM,KAAA,GAChC,OAAO;CAEX;CAEA,OAAO;AACT;;;;;;;;;;AAWA,MAAM,yBACJ,UACG;CACH,MAAM,QAAQ,MAAM;CAEpB,MAAM,EAAE,gBAAgB,cAAc,UAAU;CAEhD,IAAI,mBAAmB,QAAQ,mBAAmB,cAChD;CAGF,IAAI,WAAW;CAEf,IAAI,MAAM,QAAQ,aAAa;EAC7B,OAAO,WAAW,KAAK,CAAC,sBAAsB,MAAM,WAAW,MAAM,EAAE,GACrE,YAAY;EAGd,IAAI,aAAa,GACf;CAEJ,OAAO,IAAI,MAAM,QAAQ,UAAU;EACjC,OACE,WAAW,MAAM,UACjB,CAAC,sBAAsB,MAAM,aAAa,EAAE,GAE5C,YAAY;EAGd,IAAI,aAAa,MAAM,QACrB;CAEJ;CAEA,IAAI,aAAa,gBACf,MAAM,kBAAkB,UAAU,QAAQ;AAE9C;;;;;;;;;AAUA,MAAM,oBAAoB,gBAAwB,UAA6B;CAC7E,MAAM,OAAO,WAAW,OAAO,aAAa,cAAc,CAAC;;CAG3D,IAAI,mBAAmB,MAAM,SAAS,KAAA,GACpC,OAAO,MAAM,KAAK,EAAE,QAAQ,eAAe,SAAS,EAAE,SAAS,IAAI;;CAIrE,MAAM,gBAAgB,aACpB,QAAQ,KAAK,SAAS,KAAK,eAAe,cAAc;;CAG1D,MAAM,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC,WAC9B,MAAM,aACL,QAAQ,IAAI,KAAK,eAAe,cAAc,eAClD;;CAGA,OAAO,MAAM,KACX,EAAE,QAAQ,eAAe,SAAS,EAAE,IACnC,GAAG,aACF,aAAa,kBACb,aAAa,QAAQ,KACrB,aAAa,WAAW,CAAC,CAC7B;AACF"}
|
|
1
|
+
{"version":3,"file":"pattern-input.js","names":["BaseInput"],"sources":["../../../../src/components/fields/pattern-input/pattern-input.tsx"],"sourcesContent":["import { Input as BaseInput } from '@base-ui/react/input';\nimport {\n createSplitProps,\n type MergeOverride,\n} from '@lucasbernardosn/ts-utils';\nimport type React from 'react';\nimport {\n type ChangeMeta,\n NumberFormatBase,\n type NumberFormatBaseProps,\n} from 'react-number-format';\nimport { mergeStateClassNames } from '#utils';\nimport {\n type PatternInputVariants,\n patternInputVariants,\n} from './pattern-input-variants';\n\nexport type PatternInputProps = MergeOverride<\n Omit<\n NumberFormatBaseProps<BaseInput.Props>,\n | 'customInput'\n | 'displayType'\n | 'format'\n | 'getCaretBoundary'\n | 'getInputRef'\n | 'isCharacterSame'\n | 'isValidInputCharacter'\n | 'removeFormatting'\n | 'renderText'\n | 'valueIsNumericString'\n >,\n PatternInputVariants & {\n /**\n * A máscara: `#` é dígito, `*` é letra ou dígito, e o resto é literal (que não pode ser letra\n * nem dígito). Numa lista, o campo usa a primeira máscara que aceita o que foi digitado. As\n * prontas estão em `patternInputMasks`.\n */\n mask: string | readonly string[];\n /**\n * O valor sem os literais (`\"12345678901\"`), para o modo controlado. `null` deixa o campo\n * vazio.\n */\n value?: string | null;\n /**\n * O valor inicial sem os literais, para o modo não controlado.\n */\n defaultValue?: string | null;\n /**\n * Chamado a cada mudança feita pelo usuário, com o valor sem os literais, ou `null` com o campo\n * vazio. Mudar o `value` por prop não o chama.\n */\n onValueChange?: (\n value: string | null,\n details: PatternInputChangeEventDetails,\n ) => void;\n ref?: React.Ref<HTMLInputElement>;\n }\n>;\n\nexport type PatternInputState = BaseInput.State;\n\nexport type PatternInputChangeEventDetails = {\n /**\n * O texto como aparece no campo, com os literais e o marcador (`\"123.456.7__-__\"`).\n */\n formattedValue: string;\n /**\n * Se todas as posições da máscara em uso estão preenchidas.\n */\n isComplete: boolean;\n /**\n * O evento da digitação.\n */\n event: React.SyntheticEvent<HTMLInputElement> | undefined;\n};\n\n/**\n * Separa as variantes (`size`, `variant`) das props do campo: elas vão para o cva e não chegam ao\n * `<input>`, onde `size` seria o atributo nativo de largura.\n */\nconst splitVariantProps = createSplitProps<PatternInputVariants>();\n\n/**\n * Campo com máscara (CPF, CNPJ, CEP, telefone), sobre o `NumberFormatBase` do `react-number-format`\n * e o `Input` do Base UI: liga-se sozinho ao `Field` quando está dentro de um, como o `Input` da\n * lib.\n *\n * - Com algo digitado, o campo mostra a máscara inteira, com `_` nas posições vazias. Vazio, ele\n * fica vazio, e o placeholder padrão é a primeira máscara com o marcador.\n * - Numa lista de máscaras, o campo troca de máscara conforme o que foi digitado: no telefone, o\n * 11º dígito passa para celular.\n * - Letras viram maiúsculas. Uma tecla que nenhuma máscara aceita é ignorada; o texto colado é\n * cortado no que couber.\n *\n * O valor sai pelo `onValueChange`, sem os literais, com `isComplete` dizendo se a máscara foi\n * preenchida. O campo guarda o texto formatado, e é ele que vai no `FormData`, no `onFormSubmit` do\n * `Form` e no `validate` do `Field`.\n *\n * @example\n * ```tsx\n * <PatternInput\n * aria-label=\"Telefone\"\n * mask={patternInputMasks.phone}\n * onValueChange={(value) => setPhone(value)}\n * />\n * ```\n */\nexport const PatternInput = (props: PatternInputProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, [\n 'size',\n 'variant',\n ]);\n\n const {\n className,\n mask,\n value,\n defaultValue,\n onValueChange,\n onKeyDown,\n ref,\n ...rest\n } = elementProps;\n\n /** Uma máscara só vira lista de um item: o resto do código trata sempre a lista. */\n const masks = typeof mask === 'string' ? [mask] : mask;\n\n /** Se alguma máscara tem `*`: decide o teclado do celular e a maiúscula automática. */\n const acceptsLetters = masks.some((item) => item.includes('*'));\n\n return (\n <NumberFormatBase\n data-component=\"PatternInput\"\n customInput={BaseInput}\n getInputRef={ref}\n // O teclado `numeric` do celular não tem letras\n inputMode={acceptsLetters ? 'text' : 'numeric'}\n // O teclado do celular já abre em maiúscula; no desktop, não muda nada\n autoCapitalize={acceptsLetters ? 'characters' : undefined}\n // A primeira máscara só com o marcador; uma prop `placeholder` substitui\n placeholder={formatPattern('', masks[0] ?? '')}\n // Vazio, o texto fica vazio, sem a máscara: o `required` e o placeholder continuam valendo\n format={(rawValue) =>\n rawValue === ''\n ? ''\n : formatPattern(rawValue, selectMask(masks, rawValue) ?? '')\n }\n removeFormatting={(inputValue, changeMeta) =>\n removePatternFormatting(inputValue, changeMeta, masks)\n }\n getCaretBoundary={(formattedValue) =>\n getCaretBoundary(formattedValue, masks)\n }\n isValidInputCharacter={isValidInputCharacter}\n // O pacote chama este `onKeyDown` dentro do dele, antes de guardar a posição do cursor\n onKeyDown={(event) => {\n moveCaretPastLiterals(event);\n\n onKeyDown?.(event);\n }}\n // O pacote liga cada caractere digitado ao do texto formatado para devolver o cursor ao\n // lugar; a letra digitada em minúscula volta em maiúscula e precisa contar como a mesma\n isCharacterSame={({\n currentValue,\n formattedValue,\n currentValueIndex,\n formattedValueIndex,\n }) =>\n currentValue[currentValueIndex]?.toUpperCase() ===\n formattedValue[formattedValueIndex]\n }\n // O `react-number-format` trata `null` como não controlado; `''` é o campo vazio controlado.\n value={value === null ? '' : value}\n defaultValue={defaultValue ?? undefined}\n onValueChange={(values, sourceInfo) => {\n /** O pacote também avisa quando uma prop muda; aqui, só a mudança do usuário. */\n if (sourceInfo.source !== 'event') {\n return;\n }\n\n /** A máscara em uso, para saber se o valor preencheu todas as posições dela. */\n const selectedMask = selectMask(masks, values.value);\n\n onValueChange?.(values.value === '' ? null : values.value, {\n formattedValue: values.formattedValue,\n isComplete:\n selectedMask !== undefined &&\n values.value.length === countSlots(selectedMask),\n event: sourceInfo.event,\n });\n }}\n className={mergeStateClassNames(\n patternInputVariants(variantProps),\n className,\n )}\n {...rest}\n />\n );\n};\n\nPatternInput.displayName = 'PatternInput';\n\n/**\n * Marca as posições ainda vazias da máscara. Faz parte do texto do campo, então aparece no\n * `FormData` e no `validate` do `Field` (`\"123.4__.___-__\"`), e é por ele que o `getCaretBoundary`\n * acha a primeira posição vazia. Não pode ser letra nem dígito, para o `readRawValue` descartá-lo.\n */\nconst placeholderChar = '_';\n\n/**\n * Os tokens da máscara e o caractere que cada um aceita; o resto da máscara é literal. O `*` só\n * testa maiúscula porque o valor já chega convertido pelo `readRawValue`.\n */\nconst tokenPatterns: Record<string, RegExp> = {\n '#': /^\\d$/,\n '*': /^[0-9A-Z]$/,\n};\n\n/**\n * Tudo que não é letra sem acento nem dígito: os literais, o marcador e o que vier num texto\n * colado (espaço, `ç`, `á`). Tem a flag `g` para o `replace` trocar todas as ocorrências; com ela,\n * o `test` guarda a posição entre chamadas, então esta fica só para o `replace`.\n */\nconst nonAlphanumericPattern = /[^0-9a-z]/gi;\n\n/**\n * Uma letra sem acento ou um dígito. Aceita minúscula porque a tecla digitada chega como foi\n * digitada: a conversão para maiúscula vem depois, no `readRawValue`.\n */\nconst alphanumericPattern = /^[0-9a-z]$/i;\n\n/**\n * Se o caractere da máscara é um token (`#` ou `*`). Aceita `undefined` para ler uma posição fora da\n * máscara (antes do início ou depois do fim), que conta como não token.\n */\nconst isToken = (char: string | undefined) =>\n char !== undefined && char in tokenPatterns;\n\n/**\n * Quantas posições a máscara tem para preencher: o tamanho do valor completo, que decide o\n * `isComplete`.\n */\nconst countSlots = (mask: string) => [...mask].filter(isToken).length;\n\n/**\n * Letras e dígitos do texto, com as letras em maiúscula: os literais e o marcador ficam de fora. Lê\n * tanto o texto do campo quanto o `value` por prop, que pode chegar com literais ou em minúscula.\n */\nconst readRawValue = (text: string) =>\n text.replace(nonAlphanumericPattern, '').toUpperCase();\n\n/**\n * O que o `NumberFormatBase` trata como caractere do valor (o resto é formatação). Ele usa isso para\n * devolver o cursor ao lugar depois de formatar e para pular a formatação no Backspace e no Delete.\n * O padrão do pacote é só dígito; aqui é qualquer letra ou dígito, e quem decide se a posição aceita\n * o caractere é o `removePatternFormatting`.\n */\nconst isValidInputCharacter = (char: string) => alphanumericPattern.test(char);\n\n/**\n * Se a máscara aceita o valor: cabe nas posições, e cada caractere passa no token da sua posição.\n * Vale para valor parcial, que só confere as posições já preenchidas: é o que deixa a lista trocar\n * de máscara no meio da digitação.\n */\nconst fitsMask = (mask: string, rawValue: string) => {\n const tokens = [...mask].filter(isToken);\n\n return (\n rawValue.length <= tokens.length &&\n [...rawValue].every((char, index) =>\n tokenPatterns[tokens[index] ?? '']?.test(char),\n )\n );\n};\n\n/**\n * A primeira máscara da lista que aceita o valor, ou `undefined` se nenhuma aceita. A ordem decide:\n * no telefone, até 10 dígitos as duas aceitam e vale a do fixo, e o 11º só cabe na do celular. Por\n * isso a mais curta vem antes; com a do celular primeiro, a do fixo nunca seria usada.\n */\nconst selectMask = (masks: readonly string[], rawValue: string) =>\n masks.find((mask) => fitsMask(mask, rawValue));\n\n/**\n * O valor na máscara inteira, com o marcador nas posições que sobram. Com o valor vazio, sai a\n * máscara só com o marcador, que é o placeholder. O que passar das posições da máscara é\n * descartado.\n */\nconst formatPattern = (rawValue: string, mask: string) => {\n let index = 0;\n\n return [...mask]\n .map((char) => {\n if (!isToken(char)) {\n return char;\n }\n\n const valueChar = rawValue[index] ?? placeholderChar;\n\n index += 1;\n\n return valueChar;\n })\n .join('');\n};\n\n/**\n * O texto do campo no valor sem os literais, que o `NumberFormatBase` repassa ao `format`. Quando\n * nenhuma máscara aceita o resultado, uma tecla é ignorada (fica o valor anterior), e o resto (o\n * texto colado, o `value` por prop) é cortado no maior começo que alguma máscara aceita.\n *\n * O `changeMeta` vem na digitação e na colagem: `to` é o trecho inserido no texto novo, e\n * `lastValue` o texto antes da mudança. Ele vem `undefined` quando o pacote lê o `value` por prop e\n * quando relê o texto que o `format` acabou de montar.\n */\nconst removePatternFormatting = (\n inputValue: string,\n changeMeta: ChangeMeta | undefined,\n masks: readonly string[],\n): string => {\n const rawValue = readRawValue(inputValue);\n\n if (selectMask(masks, rawValue) !== undefined) {\n return rawValue;\n }\n\n /** Quantos caracteres a mudança inseriu: um numa tecla, nenhum ao apagar, mais numa colagem. */\n const insertedLength = changeMeta\n ? changeMeta.to.end - changeMeta.to.start\n : 0;\n\n if (changeMeta && insertedLength <= 1) {\n return readRawValue(changeMeta.lastValue);\n }\n\n /** Do maior para o menor, o primeiro começo do valor que alguma máscara aceita. */\n for (let length = rawValue.length - 1; length > 0; length--) {\n const prefix = rawValue.slice(0, length);\n\n if (selectMask(masks, prefix) !== undefined) {\n return prefix;\n }\n }\n\n return '';\n};\n\n/**\n * No Backspace logo depois de um literal (ou no Delete logo antes), o cursor pula os literais e o\n * marcador antes de a tecla agir: sem isso, ela apagaria só o literal, que o valor ignora, e nada\n * mudaria. Sem letra nem dígito na direção da tecla, o cursor fica onde está. Com texto\n * selecionado, a tecla apaga a seleção, e a função não faz nada.\n *\n * Funciona porque o `keydown` vem antes de o navegador apagar, e o `NumberFormatBase` chama o\n * `onKeyDown` antes de guardar a posição do cursor que usa para medir a mudança.\n */\nconst moveCaretPastLiterals = (\n event: React.KeyboardEvent<HTMLInputElement>,\n) => {\n const input = event.currentTarget;\n\n const { selectionStart, selectionEnd, value } = input;\n\n if (selectionStart === null || selectionStart !== selectionEnd) {\n return;\n }\n\n let position = selectionStart;\n\n if (event.key === 'Backspace') {\n while (position > 0 && !isValidInputCharacter(value[position - 1] ?? '')) {\n position -= 1;\n }\n\n if (position === 0) {\n return;\n }\n } else if (event.key === 'Delete') {\n while (\n position < value.length &&\n !isValidInputCharacter(value[position] ?? '')\n ) {\n position += 1;\n }\n\n if (position === value.length) {\n return;\n }\n }\n\n if (position !== selectionStart) {\n input.setSelectionRange(position, position);\n }\n};\n\n/**\n * Onde o cursor pode ficar: junto de uma posição preenchida e na primeira posição vazia. Ele não\n * entra no marcador além dela, nem no meio dos literais.\n *\n * Devolve uma entrada por posição do cursor, do início ao fim do texto (por isso `length + 1`), com\n * `true` onde ele pode ficar. O `NumberFormatBase` leva o cursor para a posição permitida mais\n * próxima no clique, no foco, nas setas e depois de cada mudança.\n */\nconst getCaretBoundary = (formattedValue: string, masks: readonly string[]) => {\n const mask = selectMask(masks, readRawValue(formattedValue));\n\n /** Vazio, ou sem máscara que aceite o valor, o cursor pode ficar em qualquer posição. */\n if (formattedValue === '' || mask === undefined) {\n return Array.from({ length: formattedValue.length + 1 }, () => true);\n }\n\n /** Se a posição é um token já preenchido, e não o marcador. */\n const isFilledSlot = (position: number) =>\n isToken(mask[position]) && formattedValue[position] !== placeholderChar;\n\n /** Onde entra o próximo caractere; `-1` com a máscara cheia. */\n const firstEmptySlot = [...mask].findIndex(\n (char, position) =>\n isToken(char) && formattedValue[position] === placeholderChar,\n );\n\n /** Permitida: a primeira posição vazia, antes de uma preenchida ou logo depois de uma. */\n return Array.from(\n { length: formattedValue.length + 1 },\n (_, position) =>\n position === firstEmptySlot ||\n isFilledSlot(position) ||\n isFilledSlot(position - 1),\n );\n};\n"],"mappings":";;;;;;;;;;;AAgFA,MAAM,oBAAoB,iBAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BjE,MAAa,gBAAgB,UAA6B;CACxD,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO,CAC5D,QACA,SACF,CAAC;CAED,MAAM,EACJ,WACA,MACA,OACA,cACA,eACA,WACA,KACA,GAAG,SACD;;CAGJ,MAAM,QAAQ,OAAO,SAAS,WAAW,CAAC,IAAI,IAAI;;CAGlD,MAAM,iBAAiB,MAAM,MAAM,SAAS,KAAK,SAAS,GAAG,CAAC;CAE9D,OACE,oBAAC,kBAAD;EACE,kBAAe;EACf,aAAaA;EACb,aAAa;EAEb,WAAW,iBAAiB,SAAS;EAErC,gBAAgB,iBAAiB,eAAe,KAAA;EAEhD,aAAa,cAAc,IAAI,MAAM,MAAM,EAAE;EAE7C,SAAS,aACP,aAAa,KACT,KACA,cAAc,UAAU,WAAW,OAAO,QAAQ,KAAK,EAAE;EAE/D,mBAAmB,YAAY,eAC7B,wBAAwB,YAAY,YAAY,KAAK;EAEvD,mBAAmB,mBACjB,iBAAiB,gBAAgB,KAAK;EAEjB;EAEvB,YAAY,UAAU;GACpB,sBAAsB,KAAK;GAE3B,YAAY,KAAK;EACnB;EAGA,kBAAkB,EAChB,cACA,gBACA,mBACA,0BAEA,aAAa,kBAAkB,EAAE,YAAY,MAC7C,eAAe;EAGjB,OAAO,UAAU,OAAO,KAAK;EAC7B,cAAc,gBAAgB,KAAA;EAC9B,gBAAgB,QAAQ,eAAe;;GAErC,IAAI,WAAW,WAAW,SACxB;;GAIF,MAAM,eAAe,WAAW,OAAO,OAAO,KAAK;GAEnD,gBAAgB,OAAO,UAAU,KAAK,OAAO,OAAO,OAAO;IACzD,gBAAgB,OAAO;IACvB,YACE,iBAAiB,KAAA,KACjB,OAAO,MAAM,WAAW,WAAW,YAAY;IACjD,OAAO,WAAW;GACpB,CAAC;EACH;EACA,WAAW,qBACT,qBAAqB,YAAY,GACjC,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,aAAa,cAAc;;;;;;AAO3B,MAAM,kBAAkB;;;;;AAMxB,MAAM,gBAAwC;CAC5C,KAAK;CACL,KAAK;AACP;;;;;;AAOA,MAAM,yBAAyB;;;;;AAM/B,MAAM,sBAAsB;;;;;AAM5B,MAAM,WAAW,SACf,SAAS,KAAA,KAAa,QAAQ;;;;;AAMhC,MAAM,cAAc,SAAiB,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC;;;;;AAM/D,MAAM,gBAAgB,SACpB,KAAK,QAAQ,wBAAwB,EAAE,CAAC,CAAC,YAAY;;;;;;;AAQvD,MAAM,yBAAyB,SAAiB,oBAAoB,KAAK,IAAI;;;;;;AAO7E,MAAM,YAAY,MAAc,aAAqB;CACnD,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,OAAO;CAEvC,OACE,SAAS,UAAU,OAAO,UAC1B,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,MAAM,UACzB,cAAc,OAAO,UAAU,GAAG,EAAE,KAAK,IAAI,CAC/C;AAEJ;;;;;;AAOA,MAAM,cAAc,OAA0B,aAC5C,MAAM,MAAM,SAAS,SAAS,MAAM,QAAQ,CAAC;;;;;;AAO/C,MAAM,iBAAiB,UAAkB,SAAiB;CACxD,IAAI,QAAQ;CAEZ,OAAO,CAAC,GAAG,IAAI,CAAC,CACb,KAAK,SAAS;EACb,IAAI,CAAC,QAAQ,IAAI,GACf,OAAO;EAGT,MAAM,YAAY,SAAS,UAAU;EAErC,SAAS;EAET,OAAO;CACT,CAAC,CAAC,CACD,KAAK,EAAE;AACZ;;;;;;;;;;AAWA,MAAM,2BACJ,YACA,YACA,UACW;CACX,MAAM,WAAW,aAAa,UAAU;CAExC,IAAI,WAAW,OAAO,QAAQ,MAAM,KAAA,GAClC,OAAO;;CAIT,MAAM,iBAAiB,aACnB,WAAW,GAAG,MAAM,WAAW,GAAG,QAClC;CAEJ,IAAI,cAAc,kBAAkB,GAClC,OAAO,aAAa,WAAW,SAAS;;CAI1C,KAAK,IAAI,SAAS,SAAS,SAAS,GAAG,SAAS,GAAG,UAAU;EAC3D,MAAM,SAAS,SAAS,MAAM,GAAG,MAAM;EAEvC,IAAI,WAAW,OAAO,MAAM,MAAM,KAAA,GAChC,OAAO;CAEX;CAEA,OAAO;AACT;;;;;;;;;;AAWA,MAAM,yBACJ,UACG;CACH,MAAM,QAAQ,MAAM;CAEpB,MAAM,EAAE,gBAAgB,cAAc,UAAU;CAEhD,IAAI,mBAAmB,QAAQ,mBAAmB,cAChD;CAGF,IAAI,WAAW;CAEf,IAAI,MAAM,QAAQ,aAAa;EAC7B,OAAO,WAAW,KAAK,CAAC,sBAAsB,MAAM,WAAW,MAAM,EAAE,GACrE,YAAY;EAGd,IAAI,aAAa,GACf;CAEJ,OAAO,IAAI,MAAM,QAAQ,UAAU;EACjC,OACE,WAAW,MAAM,UACjB,CAAC,sBAAsB,MAAM,aAAa,EAAE,GAE5C,YAAY;EAGd,IAAI,aAAa,MAAM,QACrB;CAEJ;CAEA,IAAI,aAAa,gBACf,MAAM,kBAAkB,UAAU,QAAQ;AAE9C;;;;;;;;;AAUA,MAAM,oBAAoB,gBAAwB,UAA6B;CAC7E,MAAM,OAAO,WAAW,OAAO,aAAa,cAAc,CAAC;;CAG3D,IAAI,mBAAmB,MAAM,SAAS,KAAA,GACpC,OAAO,MAAM,KAAK,EAAE,QAAQ,eAAe,SAAS,EAAE,SAAS,IAAI;;CAIrE,MAAM,gBAAgB,aACpB,QAAQ,KAAK,SAAS,KAAK,eAAe,cAAc;;CAG1D,MAAM,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC,WAC9B,MAAM,aACL,QAAQ,IAAI,KAAK,eAAe,cAAc,eAClD;;CAGA,OAAO,MAAM,KACX,EAAE,QAAQ,eAAe,SAAS,EAAE,IACnC,GAAG,aACF,aAAa,kBACb,aAAa,QAAQ,KACrB,aAAa,WAAW,CAAC,CAC7B;AACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SwitchRootVariants } from "./switch-root-variants.js";
|
|
2
|
-
import { MergeOverride } from "@lucasbernardosn/utils";
|
|
2
|
+
import { MergeOverride } from "@lucasbernardosn/ts-utils";
|
|
3
3
|
import { Switch } from "@base-ui/react/switch";
|
|
4
4
|
//#region src/components/fields/switch/switch-root.d.ts
|
|
5
5
|
export type SwitchRootProps = MergeOverride<Switch.Root.Props, SwitchRootVariants>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mergeStateClassNames } from "../../../utils/merge-state-class-names.js";
|
|
2
2
|
import { switchRootVariants } from "./switch-root-variants.js";
|
|
3
|
-
import { createSplitProps } from "@lucasbernardosn/utils";
|
|
3
|
+
import { createSplitProps } from "@lucasbernardosn/ts-utils";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
import { Switch } from "@base-ui/react/switch";
|
|
6
6
|
//#region src/components/fields/switch/switch-root.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch-root.js","names":["BaseSwitch"],"sources":["../../../../src/components/fields/switch/switch-root.tsx"],"sourcesContent":["import { Switch as BaseSwitch } from '@base-ui/react/switch';\nimport {
|
|
1
|
+
{"version":3,"file":"switch-root.js","names":["BaseSwitch"],"sources":["../../../../src/components/fields/switch/switch-root.tsx"],"sourcesContent":["import { Switch as BaseSwitch } from '@base-ui/react/switch';\nimport {\n createSplitProps,\n type MergeOverride,\n} from '@lucasbernardosn/ts-utils';\nimport { mergeStateClassNames } from '#utils';\nimport {\n type SwitchRootVariants,\n switchRootVariants,\n} from './switch-root-variants';\n\nexport type SwitchRootProps = MergeOverride<\n BaseSwitch.Root.Props,\n SwitchRootVariants\n>;\n\nexport type SwitchRootState = BaseSwitch.Root.State;\n\nexport type SwitchRootChangeEventDetails = BaseSwitch.Root.ChangeEventDetails;\n\nexport type SwitchRootChangeEventReason = BaseSwitch.Root.ChangeEventReason;\n\nconst splitVariantProps = createSplitProps<SwitchRootVariants>();\n\n/**\n * O trilho do switch, com um `<input>` escondido ao lado para o formulário. Renderiza um `<span>`,\n * para caber dentro de um `<label>`: é o jeito mais simples de dar nome acessível. Sem rótulo\n * visível, use `aria-label`.\n *\n * O `size` e o `colorScheme` chegam à bolinha por CSS variables declaradas aqui: o\n * `Switch.Thumb` não recebe variantes.\n *\n * @example\n * ```tsx\n * <label>\n * <Switch.Root>\n * <Switch.Thumb />\n * </Switch.Root>\n * Receber notificações por e-mail\n * </label>\n * ```\n */\nexport const SwitchRoot = (props: SwitchRootProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, [\n 'colorScheme',\n 'size',\n ]);\n\n const { className, ...rest } = elementProps;\n\n return (\n <BaseSwitch.Root\n data-component=\"Switch.Root\"\n className={mergeStateClassNames(\n switchRootVariants(variantProps),\n className,\n )}\n {...rest}\n />\n );\n};\n\nSwitchRoot.displayName = 'Switch.Root';\n"],"mappings":";;;;;;AAsBA,MAAM,oBAAoB,iBAAqC;;;;;;;;;;;;;;;;;;;AAoB/D,MAAa,cAAc,UAA2B;CACpD,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO,CAC5D,eACA,MACF,CAAC;CAED,MAAM,EAAE,WAAW,GAAG,SAAS;CAE/B,OACE,oBAACA,OAAW,MAAZ;EACE,kBAAe;EACf,WAAW,qBACT,mBAAmB,YAAY,GAC/B,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,WAAW,cAAc"}
|
|
@@ -31,7 +31,7 @@ const textareaVariants = cva([
|
|
|
31
31
|
"text-start",
|
|
32
32
|
"font-normal",
|
|
33
33
|
"text-gray-12",
|
|
34
|
-
"placeholder:text-gray-
|
|
34
|
+
"placeholder:text-gray-11/80",
|
|
35
35
|
"border",
|
|
36
36
|
"rounded-md",
|
|
37
37
|
"corner-squircle",
|
|
@@ -54,9 +54,7 @@ const textareaVariants = cva([
|
|
|
54
54
|
"data-invalid:border-red-9",
|
|
55
55
|
"data-invalid:[--textarea-focus-color:var(--color-red-9)]",
|
|
56
56
|
"aria-invalid:border-red-9",
|
|
57
|
-
"aria-invalid:[--textarea-focus-color:var(--color-red-9)]"
|
|
58
|
-
"user-invalid:border-red-9",
|
|
59
|
-
"user-invalid:[--textarea-focus-color:var(--color-red-9)]"
|
|
57
|
+
"aria-invalid:[--textarea-focus-color:var(--color-red-9)]"
|
|
60
58
|
], {
|
|
61
59
|
variants: {
|
|
62
60
|
variant: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea-variants.js","names":[],"sources":["../../../../src/components/fields/textarea/textarea-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport type TextareaVariants = {\n /**\n * Padding e tamanho do texto, com os nomes do `Input`. Sem altura fixa: ela vem de `rows` ou,\n * com `field-sizing-content`, do conteúdo. Em tela de toque, do `2xs` ao `md` o texto sobe para\n * 16px, para o iPhone não dar zoom no foco.\n *\n * @default 'sm'\n */\n size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /**\n * Fundo e borda do campo.\n *\n * @default 'outline'\n */\n variant?: 'outline' | 'subtle';\n};\n\nexport const textareaDefaultVariants: Required<TextareaVariants> = {\n size: 'sm',\n variant: 'outline',\n};\n\n/**\n * Cópia de `inputVariants`, a origem do visual dos campos: o anel de foco e o inválido funcionam do\n * mesmo jeito, explicados lá. As diferenças:\n * - sem `data-placeholder` nem altura fixa: a altura vem de `rows` ou, com `field-sizing-content`,\n * do conteúdo;\n * - `block`, `resize-y` e o padding vertical em `--textarea-py`.\n *\n * Cada tamanho declara o padding vertical em `--textarea-py`, que três classes da base leem:\n * - `py`;\n * - `scroll-pb`: ao digitar na última linha de um textarea com rolagem, o navegador rola até o\n * cursor; sem ele, a linha fica colada na borda de baixo, sem o padding;\n * - `min-h`: uma linha (`1lh`, que acompanha o texto, inclusive em tela de toque), mais o padding e\n * a borda. Arrastando a alça, o campo não encolhe a ponto de cortar o texto.\n */\nexport const textareaVariants = cva(\n [\n 'relative',\n 'block', // Como `inline-block`, o padrão, deixa um vão embaixo, na linha de base do texto em volta\n 'w-full',\n 'min-h-[calc(1lh+var(--textarea-py)*2+2px)]',\n\n 'py-(--textarea-py)',\n 'scroll-pb-(--textarea-py)',\n\n 'appearance-none',\n 'outline-none',\n\n 'resize-y',\n\n 'text-start',\n 'font-normal', // Sem isto, herda o peso do `<label>` em volta\n 'text-gray-12',\n\n 'placeholder:text-gray-
|
|
1
|
+
{"version":3,"file":"textarea-variants.js","names":[],"sources":["../../../../src/components/fields/textarea/textarea-variants.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport type TextareaVariants = {\n /**\n * Padding e tamanho do texto, com os nomes do `Input`. Sem altura fixa: ela vem de `rows` ou,\n * com `field-sizing-content`, do conteúdo. Em tela de toque, do `2xs` ao `md` o texto sobe para\n * 16px, para o iPhone não dar zoom no foco.\n *\n * @default 'sm'\n */\n size?: '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /**\n * Fundo e borda do campo.\n *\n * @default 'outline'\n */\n variant?: 'outline' | 'subtle';\n};\n\nexport const textareaDefaultVariants: Required<TextareaVariants> = {\n size: 'sm',\n variant: 'outline',\n};\n\n/**\n * Cópia de `inputVariants`, a origem do visual dos campos: o anel de foco e o inválido funcionam do\n * mesmo jeito, explicados lá. As diferenças:\n * - sem `data-placeholder` nem altura fixa: a altura vem de `rows` ou, com `field-sizing-content`,\n * do conteúdo;\n * - `block`, `resize-y` e o padding vertical em `--textarea-py`.\n *\n * Cada tamanho declara o padding vertical em `--textarea-py`, que três classes da base leem:\n * - `py`;\n * - `scroll-pb`: ao digitar na última linha de um textarea com rolagem, o navegador rola até o\n * cursor; sem ele, a linha fica colada na borda de baixo, sem o padding;\n * - `min-h`: uma linha (`1lh`, que acompanha o texto, inclusive em tela de toque), mais o padding e\n * a borda. Arrastando a alça, o campo não encolhe a ponto de cortar o texto.\n */\nexport const textareaVariants = cva(\n [\n 'relative',\n 'block', // Como `inline-block`, o padrão, deixa um vão embaixo, na linha de base do texto em volta\n 'w-full',\n 'min-h-[calc(1lh+var(--textarea-py)*2+2px)]',\n\n 'py-(--textarea-py)',\n 'scroll-pb-(--textarea-py)',\n\n 'appearance-none',\n 'outline-none',\n\n 'resize-y',\n\n 'text-start',\n 'font-normal', // Sem isto, herda o peso do `<label>` em volta\n 'text-gray-12',\n\n 'placeholder:text-gray-11/80',\n\n 'border',\n 'rounded-md',\n 'corner-squircle',\n\n '[--textarea-focus-color:var(--color-black)]',\n 'dark:[--textarea-focus-color:var(--color-white)]',\n\n 'focus-visible:outline-1',\n 'focus-visible:outline-solid',\n 'focus-visible:-outline-offset-2', // Offset = borda + anel: o campo não cresce no foco\n 'focus-visible:outline-(--textarea-focus-color)',\n 'focus-visible:border-(--textarea-focus-color)',\n\n 'data-focused:outline-1',\n 'data-focused:outline-solid',\n 'data-focused:-outline-offset-2',\n 'data-focused:outline-(--textarea-focus-color)',\n 'data-focused:border-(--textarea-focus-color)',\n\n 'disabled:opacity-50',\n 'disabled:cursor-not-allowed',\n\n 'data-disabled:opacity-50',\n 'data-disabled:cursor-not-allowed',\n\n 'data-invalid:border-red-9',\n 'data-invalid:[--textarea-focus-color:var(--color-red-9)]',\n 'aria-invalid:border-red-9',\n 'aria-invalid:[--textarea-focus-color:var(--color-red-9)]',\n ],\n {\n variants: {\n variant: {\n outline: [\n 'bg-white/90',\n 'dark:bg-black/90',\n\n 'border-gray-alpha-7',\n ],\n subtle: [\n 'bg-gray-4',\n\n 'border-transparent',\n ],\n },\n size: {\n '2xs': [\n 'px-2',\n '[--textarea-py:--spacing(1)]',\n\n 'text-xs',\n // Em tela de toque, 16px: abaixo disso o Safari do iPhone dá zoom ao focar o campo.\n 'any-pointer-coarse:text-base',\n ],\n xs: [\n 'px-2',\n '[--textarea-py:--spacing(2)]',\n\n 'text-xs',\n 'any-pointer-coarse:text-base',\n ],\n sm: [\n 'px-2.5',\n '[--textarea-py:--spacing(2)]',\n\n 'text-sm',\n 'any-pointer-coarse:text-base',\n ],\n md: [\n 'px-3',\n '[--textarea-py:--spacing(2)]',\n\n 'text-sm',\n 'any-pointer-coarse:text-base',\n ],\n lg: [\n 'px-4',\n '[--textarea-py:--spacing(3)]',\n\n 'text-base',\n ],\n xl: [\n 'px-4.5',\n '[--textarea-py:--spacing(4)]',\n\n 'text-base',\n ],\n '2xl': [\n 'px-5',\n '[--textarea-py:--spacing(4)]',\n\n 'text-lg',\n ],\n },\n },\n defaultVariants: {\n size: textareaDefaultVariants.size,\n variant: textareaDefaultVariants.variant,\n },\n },\n);\n"],"mappings":";;AAmBA,MAAa,0BAAsD;CACjE,MAAM;CACN,SAAS;AACX;;;;;;;;;;;;;;;AAgBA,MAAa,mBAAmB,IAC9B;CACE;CACA;CACA;CACA;CAEA;CACA;CAEA;CACA;CAEA;CAEA;CACA;CACA;CAEA;CAEA;CACA;CACA;CAEA;CACA;CAEA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CAEA;CACA;CAEA;CACA;CAEA;CACA;CACA;CACA;AACF,GACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;IACP;IACA;IAEA;GACF;GACA,QAAQ,CACN,aAEA,oBACF;EACF;EACA,MAAM;GACJ,OAAO;IACL;IACA;IAEA;IAEA;GACF;GACA,IAAI;IACF;IACA;IAEA;IACA;GACF;GACA,IAAI;IACF;IACA;IAEA;IACA;GACF;GACA,IAAI;IACF;IACA;IAEA;IACA;GACF;GACA,IAAI;IACF;IACA;IAEA;GACF;GACA,IAAI;IACF;IACA;IAEA;GACF;GACA,OAAO;IACL;IACA;IAEA;GACF;EACF;CACF;CACA,iBAAiB;EACf,MAAM,wBAAwB;EAC9B,SAAS,wBAAwB;CACnC;AACF,CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TextareaVariants } from "./textarea-variants.js";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import { MergeOverride } from "@lucasbernardosn/utils";
|
|
3
|
+
import { MergeOverride } from "@lucasbernardosn/ts-utils";
|
|
4
4
|
import { Input } from "@base-ui/react/input";
|
|
5
5
|
//#region src/components/fields/textarea/textarea.d.ts
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mergeStateClassNames } from "../../../utils/merge-state-class-names.js";
|
|
2
2
|
import { textareaVariants } from "./textarea-variants.js";
|
|
3
|
-
import { createSplitProps } from "@lucasbernardosn/utils";
|
|
3
|
+
import { createSplitProps } from "@lucasbernardosn/ts-utils";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
import { Input } from "@base-ui/react/input";
|
|
6
6
|
//#region src/components/fields/textarea/textarea.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.js","names":["BaseInput"],"sources":["../../../../src/components/fields/textarea/textarea.tsx"],"sourcesContent":["import { Input as BaseInput } from '@base-ui/react/input';\nimport {
|
|
1
|
+
{"version":3,"file":"textarea.js","names":["BaseInput"],"sources":["../../../../src/components/fields/textarea/textarea.tsx"],"sourcesContent":["import { Input as BaseInput } from '@base-ui/react/input';\nimport {\n createSplitProps,\n type MergeOverride,\n} from '@lucasbernardosn/ts-utils';\nimport type React from 'react';\nimport { mergeStateClassNames } from '#utils';\nimport { type TextareaVariants, textareaVariants } from './textarea-variants';\n\n/**\n * As props do `<textarea>`, com as do Base UI por cima: o `Input` do Base UI tipa as props como as\n * de um `<input>`, sem `rows`, `cols` e `wrap`.\n */\nexport type TextareaProps = MergeOverride<\n React.ComponentPropsWithRef<'textarea'>,\n Pick<BaseInput.Props, 'className' | 'style' | 'render' | 'onValueChange'> &\n TextareaVariants\n>;\n\nexport type TextareaState = BaseInput.State;\n\nexport type TextareaChangeEventDetails = BaseInput.ChangeEventDetails;\n\nexport type TextareaChangeEventReason = BaseInput.ChangeEventReason;\n\nconst splitVariantProps = createSplitProps<TextareaVariants>();\n\n/**\n * O `Input` do Base UI renderizando um `<textarea>`: liga-se sozinho ao `Field` quando está dentro\n * de um, como o `Input` da lib. Fora dele, o nome acessível vem de um `<label>` (em volta ou por\n * `htmlFor`) ou de `aria-label`.\n *\n * O Enter quebra a linha: o Base UI só trata o Enter como envio num `<input>`.\n *\n * A altura vem de `rows`, com o mínimo de uma linha. Para crescer com o conteúdo,\n * `field-sizing-content` com um `min-h-*` e um `max-h-*` na `className`: com ele, o `rows` deixa\n * de valer. O redimensionamento manual é vertical (`resize-y`); `resize-none` desliga.\n *\n * @example\n * ```tsx\n * <Textarea\n * aria-label=\"Observações\"\n * rows={4}\n * />\n * ```\n */\nexport const Textarea = (props: TextareaProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, [\n 'size',\n 'variant',\n ]);\n\n const { className, ...rest } = elementProps;\n\n return (\n <BaseInput\n data-component=\"Textarea\"\n render={<textarea />}\n className={mergeStateClassNames(\n textareaVariants(variantProps),\n className,\n )}\n // O Base UI tipa os handlers com eventos de `<input>`, mas só repassa o evento do elemento que\n // renderiza: aqui, o do `<textarea>`. O cast fica porque a saída sem ele (o `render` como\n // função, com as props divididas entre o Base UI e o `<textarea>`) arriscaria a ligação\n // com o `Field`, que lê o valor pelas props do Base UI.\n // biome-ignore lint/nursery/noUnsafeTypeAssertion: ver o comentário acima\n {...(rest as BaseInput.Props)}\n />\n );\n};\n\nTextarea.displayName = 'Textarea';\n"],"mappings":";;;;;;AAyBA,MAAM,oBAAoB,iBAAmC;;;;;;;;;;;;;;;;;;;;AAqB7D,MAAa,YAAY,UAAyB;CAChD,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO,CAC5D,QACA,SACF,CAAC;CAED,MAAM,EAAE,WAAW,GAAG,SAAS;CAE/B,OACE,oBAACA,OAAD;EACE,kBAAe;EACf,QAAQ,oBAAC,YAAD,CAAW,CAAA;EACnB,WAAW,qBACT,iBAAiB,YAAY,GAC7B,SACF;EAMA,GAAK;CACN,CAAA;AAEL;AAEA,SAAS,cAAc"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CenterAbsoluteVariants } from "./center-absolute-variants.js";
|
|
2
|
-
import { MergeOverride } from "@lucasbernardosn/utils";
|
|
2
|
+
import { MergeOverride } from "@lucasbernardosn/ts-utils";
|
|
3
3
|
import { useRender } from "@base-ui/react";
|
|
4
4
|
//#region src/components/layout/center-absolute/center-absolute.d.ts
|
|
5
5
|
export type CenterAbsoluteProps = MergeOverride<useRender.ComponentProps<'div'>, CenterAbsoluteVariants>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mergeTwClassNames } from "../../../utils/merge-class-names.js";
|
|
2
2
|
import { centerAbsoluteVariants } from "./center-absolute-variants.js";
|
|
3
|
-
import { createSplitProps } from "@lucasbernardosn/utils";
|
|
3
|
+
import { createSplitProps } from "@lucasbernardosn/ts-utils";
|
|
4
4
|
import { mergeProps, useRender } from "@base-ui/react";
|
|
5
5
|
//#region src/components/layout/center-absolute/center-absolute.tsx
|
|
6
6
|
const splitVariantProps = createSplitProps();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"center-absolute.js","names":[],"sources":["../../../../src/components/layout/center-absolute/center-absolute.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport {
|
|
1
|
+
{"version":3,"file":"center-absolute.js","names":[],"sources":["../../../../src/components/layout/center-absolute/center-absolute.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport {\n createSplitProps,\n type MergeOverride,\n} from '@lucasbernardosn/ts-utils';\nimport { mergeTwClassNames } from '#utils';\nimport {\n type CenterAbsoluteVariants,\n centerAbsoluteVariants,\n} from './center-absolute-variants';\n\nexport type CenterAbsoluteProps = MergeOverride<\n useRender.ComponentProps<'div'>,\n CenterAbsoluteVariants\n>;\n\nconst splitVariantProps = createSplitProps<CenterAbsoluteVariants>();\n\n/**\n * Centraliza o elemento com `position: absolute` sobre o ancestral posicionado mais próximo,\n * que precisa ter `relative` (ou outro `position`) para servir de referência.\n */\nexport const CenterAbsolute = (props: CenterAbsoluteProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, ['axis']);\n\n const { render, className, ...rest } = elementProps;\n\n const baseProps = {\n 'data-component': 'CenterAbsolute',\n className: mergeTwClassNames(\n centerAbsoluteVariants(variantProps),\n className,\n ),\n };\n\n return useRender({\n render,\n defaultTagName: 'div',\n props: mergeProps(baseProps, rest),\n });\n};\n\nCenterAbsolute.displayName = 'CenterAbsolute';\n"],"mappings":";;;;;AAgBA,MAAM,oBAAoB,iBAAyC;;;;;AAMnE,MAAa,kBAAkB,UAA+B;CAC5D,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO,CAAC,MAAM,CAAC;CAEtE,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAEvC,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBACT,uBAAuB,YAAY,GACnC,SACF;CACF;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,eAAe,cAAc"}
|
|
@@ -13,7 +13,7 @@ export declare const floatDefaultVariants: Required<FloatVariants>;
|
|
|
13
13
|
* de sinal (`rtl:`), para o elemento continuar metade dentro e metade fora do canto.
|
|
14
14
|
*/
|
|
15
15
|
export declare const floatVariants: (props?: ({
|
|
16
|
-
placement?: "top-
|
|
16
|
+
placement?: "top-center" | "bottom-center" | "top-start" | "top-end" | "middle-start" | "middle-center" | "middle-end" | "bottom-start" | "bottom-end" | null | undefined;
|
|
17
17
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
18
18
|
//#endregion
|
|
19
19
|
//# sourceMappingURL=float-variants.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FloatVariants } from "./float-variants.js";
|
|
2
|
-
import { MergeOverride } from "@lucasbernardosn/utils";
|
|
2
|
+
import { MergeOverride } from "@lucasbernardosn/ts-utils";
|
|
3
3
|
import { useRender } from "@base-ui/react";
|
|
4
4
|
//#region src/components/layout/float/float.d.ts
|
|
5
5
|
export type FloatProps = MergeOverride<useRender.ComponentProps<'div'>, FloatVariants>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mergeTwClassNames } from "../../../utils/merge-class-names.js";
|
|
2
2
|
import { floatVariants } from "./float-variants.js";
|
|
3
|
-
import { createSplitProps } from "@lucasbernardosn/utils";
|
|
3
|
+
import { createSplitProps } from "@lucasbernardosn/ts-utils";
|
|
4
4
|
import { mergeProps, useRender } from "@base-ui/react";
|
|
5
5
|
//#region src/components/layout/float/float.tsx
|
|
6
6
|
const splitVariantProps = createSplitProps();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"float.js","names":[],"sources":["../../../../src/components/layout/float/float.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport {
|
|
1
|
+
{"version":3,"file":"float.js","names":[],"sources":["../../../../src/components/layout/float/float.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport {\n createSplitProps,\n type MergeOverride,\n} from '@lucasbernardosn/ts-utils';\nimport { mergeTwClassNames } from '#utils';\nimport { type FloatVariants, floatVariants } from './float-variants';\n\nexport type FloatProps = MergeOverride<\n useRender.ComponentProps<'div'>,\n FloatVariants\n>;\n\nconst splitVariantProps = createSplitProps<FloatVariants>();\n\n/**\n * Prende o elemento num canto ou borda do ancestral posicionado mais próximo (badge sobre um\n * avatar, por exemplo). O ancestral precisa ter `relative` para servir de referência.\n */\nexport const Float = (props: FloatProps) => {\n const [variantProps, elementProps] = splitVariantProps(props, ['placement']);\n\n const { render, className, ...rest } = elementProps;\n\n const baseProps = {\n 'data-component': 'Float',\n className: mergeTwClassNames(floatVariants(variantProps), className),\n };\n\n return useRender({\n render,\n defaultTagName: 'div',\n props: mergeProps(baseProps, rest),\n });\n};\n\nFloat.displayName = 'Float';\n"],"mappings":";;;;;AAaA,MAAM,oBAAoB,iBAAgC;;;;;AAM1D,MAAa,SAAS,UAAsB;CAC1C,MAAM,CAAC,cAAc,gBAAgB,kBAAkB,OAAO,CAAC,WAAW,CAAC;CAE3E,MAAM,EAAE,QAAQ,WAAW,GAAG,SAAS;CAEvC,MAAM,YAAY;EAChB,kBAAkB;EAClB,WAAW,kBAAkB,cAAc,YAAY,GAAG,SAAS;CACrE;CAEA,OAAO,UAAU;EACf;EACA,gBAAgB;EAChB,OAAO,WAAW,WAAW,IAAI;CACnC,CAAC;AACH;AAEA,MAAM,cAAc"}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
+
import { MergeOverride } from "@lucasbernardosn/ts-utils";
|
|
1
2
|
import { ScrollArea } from "@base-ui/react/scroll-area";
|
|
2
3
|
//#region src/components/layout/scroll-area/scroll-area-root.d.ts
|
|
3
|
-
export type ScrollAreaRootProps = ScrollArea.Root.Props
|
|
4
|
+
export type ScrollAreaRootProps = MergeOverride<ScrollArea.Root.Props, {
|
|
5
|
+
/**
|
|
6
|
+
* Quando as barras aparecem. Com `'auto'`, no hover e na rolagem. Com `'always'`, ficam sempre
|
|
7
|
+
* visíveis com mouse, com a trilha de 16px; no toque, continuam sumindo. Serve a uma área de
|
|
8
|
+
* dados, em que a barra mostra a posição e que há mais conteúdo ao lado. Vale para as barras
|
|
9
|
+
* filhas diretas do `Root`, não para as de um `ScrollArea` aninhado.
|
|
10
|
+
*
|
|
11
|
+
* @default 'auto'
|
|
12
|
+
*/
|
|
13
|
+
scrollbars?: 'auto' | 'always';
|
|
14
|
+
}>;
|
|
4
15
|
export type ScrollAreaRootState = ScrollArea.Root.State;
|
|
5
16
|
/**
|
|
6
17
|
* Agrupa as partes e serve de referência de posição para as barras. **Não declara tamanho**:
|
|
@@ -14,9 +25,11 @@ export type ScrollAreaRootState = ScrollArea.Root.State;
|
|
|
14
25
|
*
|
|
15
26
|
* | Variável | Controla | Padrão |
|
|
16
27
|
* | --- | --- | --- |
|
|
17
|
-
* | `--scroll-area-scrollbar-size` | espessura da trilha | 4px no toque,
|
|
28
|
+
* | `--scroll-area-scrollbar-size` | espessura da trilha | 4px no toque, 12px com mouse, 16px com mouse e `scrollbars="always"` |
|
|
18
29
|
* | `--scroll-area-scrollbar-inset` | recuo da trilha até a borda | 2px |
|
|
19
|
-
* | `--scroll-area-thumb-size` | espessura do polegar na trilha | a trilha toda |
|
|
30
|
+
* | `--scroll-area-thumb-size` | espessura do polegar na trilha | a trilha toda no toque, 6px com mouse |
|
|
31
|
+
*
|
|
32
|
+
* A visibilidade e a espessura de `scrollbars="always"` são explicadas no `Scrollbar`.
|
|
20
33
|
*
|
|
21
34
|
* Como funciona:
|
|
22
35
|
* 1. o `Root` zera as três com `initial` — assim um `ScrollArea` aninhado não herda os valores
|