@igne-agency/react-web-ui 0.0.0-stage → 0.3.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/LICENSE +21 -0
- package/README.md +239 -2
- package/dist/assets/spinner.js +28 -0
- package/dist/base.css +171 -0
- package/dist/components/accordion/accordion.css +93 -0
- package/dist/components/accordion/accordion.d.ts +46 -0
- package/dist/components/accordion/accordion.js +184 -0
- package/dist/components/accordion/accordion.module.js +16 -0
- package/dist/components/accordion/index.d.ts +1 -0
- package/dist/components/accordion/index.js +1 -0
- package/dist/components/active-filters/active-filter-describers.d.ts +62 -0
- package/dist/components/active-filters/active-filter-describers.js +48 -0
- package/dist/components/active-filters/active-filters.d.ts +27 -0
- package/dist/components/active-filters/active-filters.js +96 -0
- package/dist/components/active-filters/index.d.ts +2 -0
- package/dist/components/active-filters/index.js +3 -0
- package/dist/components/attachment-tile/attachment-preview.d.ts +33 -0
- package/dist/components/attachment-tile/attachment-preview.js +181 -0
- package/dist/components/attachment-tile/attachment-tile.css +92 -0
- package/dist/components/attachment-tile/attachment-tile.d.ts +51 -0
- package/dist/components/attachment-tile/attachment-tile.js +126 -0
- package/dist/components/attachment-tile/attachment-tile.module.js +20 -0
- package/dist/components/attachment-tile/index.d.ts +2 -0
- package/dist/components/attachment-tile/index.js +3 -0
- package/dist/components/avatar/avatar.css +48 -0
- package/dist/components/avatar/avatar.d.ts +19 -0
- package/dist/components/avatar/avatar.js +98 -0
- package/dist/components/avatar/avatar.module.js +10 -0
- package/dist/components/avatar/index.d.ts +1 -0
- package/dist/components/avatar/index.js +1 -0
- package/dist/components/avatar-group/avatar-group-context.d.ts +15 -0
- package/dist/components/avatar-group/avatar-group-context.js +14 -0
- package/dist/components/avatar-group/avatar-group.css +62 -0
- package/dist/components/avatar-group/avatar-group.d.ts +96 -0
- package/dist/components/avatar-group/avatar-group.js +519 -0
- package/dist/components/avatar-group/avatar-group.module.js +20 -0
- package/dist/components/avatar-group/index.d.ts +1 -0
- package/dist/components/avatar-group/index.js +1 -0
- package/dist/components/badge/badge.css +101 -0
- package/dist/components/badge/badge.d.ts +17 -0
- package/dist/components/badge/badge.js +61 -0
- package/dist/components/badge/badge.module.js +4 -0
- package/dist/components/badge/index.d.ts +1 -0
- package/dist/components/badge/index.js +1 -0
- package/dist/components/breadcrumbs/breadcrumbs.css +57 -0
- package/dist/components/breadcrumbs/breadcrumbs.d.ts +105 -0
- package/dist/components/breadcrumbs/breadcrumbs.js +710 -0
- package/dist/components/breadcrumbs/breadcrumbs.module.js +20 -0
- package/dist/components/breadcrumbs/index.d.ts +2 -0
- package/dist/components/breadcrumbs/index.js +3 -0
- package/dist/components/breadcrumbs/use-fold.d.ts +34 -0
- package/dist/components/breadcrumbs/use-fold.js +73 -0
- package/dist/components/button/button-attributes.d.ts +23 -0
- package/dist/components/button/button-attributes.js +17 -0
- package/dist/components/button/button.css +111 -0
- package/dist/components/button/button.d.ts +47 -0
- package/dist/components/button/button.js +210 -0
- package/dist/components/button/button.module.js +4 -0
- package/dist/components/button/close-button.d.ts +14 -0
- package/dist/components/button/close-button.js +30 -0
- package/dist/components/button/index.d.ts +1 -0
- package/dist/components/button/index.js +1 -0
- package/dist/components/checkbox-field/checkbox-field.d.ts +21 -0
- package/dist/components/checkbox-field/checkbox-field.js +181 -0
- package/dist/components/checkbox-field/checkbox-glyph.d.ts +12 -0
- package/dist/components/checkbox-field/checkbox-glyph.js +38 -0
- package/dist/components/checkbox-field/checkbox.css +128 -0
- package/dist/components/checkbox-field/checkbox.d.ts +14 -0
- package/dist/components/checkbox-field/checkbox.js +91 -0
- package/dist/components/checkbox-field/checkbox.module.js +14 -0
- package/dist/components/checkbox-field/index.d.ts +4 -0
- package/dist/components/checkbox-field/index.js +5 -0
- package/dist/components/checkbox-field/tsf-checkbox-field.d.ts +14 -0
- package/dist/components/checkbox-field/tsf-checkbox-field.js +40 -0
- package/dist/components/checkbox-group-field/checkbox-group-field.d.ts +33 -0
- package/dist/components/checkbox-group-field/checkbox-group-field.js +128 -0
- package/dist/components/checkbox-group-field/checkbox-group.css +31 -0
- package/dist/components/checkbox-group-field/checkbox-group.d.ts +38 -0
- package/dist/components/checkbox-group-field/checkbox-group.js +102 -0
- package/dist/components/checkbox-group-field/checkbox-group.module.js +8 -0
- package/dist/components/checkbox-group-field/index.d.ts +3 -0
- package/dist/components/checkbox-group-field/index.js +4 -0
- package/dist/components/checkbox-group-field/tsf-checkbox-group-field.d.ts +15 -0
- package/dist/components/checkbox-group-field/tsf-checkbox-group-field.js +41 -0
- package/dist/components/collapsible/collapsible.css +88 -0
- package/dist/components/collapsible/collapsible.d.ts +33 -0
- package/dist/components/collapsible/collapsible.js +146 -0
- package/dist/components/collapsible/collapsible.module.js +14 -0
- package/dist/components/collapsible/index.d.ts +1 -0
- package/dist/components/collapsible/index.js +1 -0
- package/dist/components/combobox-field/combobox-field.d.ts +66 -0
- package/dist/components/combobox-field/combobox-field.js +527 -0
- package/dist/components/combobox-field/combobox-items.d.ts +80 -0
- package/dist/components/combobox-field/combobox-items.js +27 -0
- package/dist/components/combobox-field/combobox-popup-body.d.ts +34 -0
- package/dist/components/combobox-field/combobox-popup-body.js +142 -0
- package/dist/components/combobox-field/combobox.css +535 -0
- package/dist/components/combobox-field/combobox.d.ts +105 -0
- package/dist/components/combobox-field/combobox.js +642 -0
- package/dist/components/combobox-field/combobox.module.js +46 -0
- package/dist/components/combobox-field/index.d.ts +7 -0
- package/dist/components/combobox-field/index.js +4 -0
- package/dist/components/combobox-field/item-lookups.d.ts +18 -0
- package/dist/components/combobox-field/item-lookups.js +8 -0
- package/dist/components/combobox-field/react-query.d.ts +15 -0
- package/dist/components/combobox-field/react-query.js +78 -0
- package/dist/components/combobox-field/selection.d.ts +50 -0
- package/dist/components/combobox-field/selection.js +38 -0
- package/dist/components/combobox-field/tsf-combobox-field.d.ts +33 -0
- package/dist/components/combobox-field/tsf-combobox-field.js +88 -0
- package/dist/components/combobox-field/value-state-view.css +21 -0
- package/dist/components/combobox-field/value-state-view.d.ts +35 -0
- package/dist/components/combobox-field/value-state-view.js +107 -0
- package/dist/components/combobox-field/value-state-view.module.js +10 -0
- package/dist/components/combobox-field/value-state.d.ts +49 -0
- package/dist/components/combobox-field/value-state.js +38 -0
- package/dist/components/composer/composer-attachments.d.ts +31 -0
- package/dist/components/composer/composer-attachments.js +158 -0
- package/dist/components/composer/composer-editor.css +104 -0
- package/dist/components/composer/composer-editor.d.ts +15 -0
- package/dist/components/composer/composer-editor.js +165 -0
- package/dist/components/composer/composer-editor.module.js +14 -0
- package/dist/components/composer/composer-mentions.d.ts +10 -0
- package/dist/components/composer/composer-mentions.js +294 -0
- package/dist/components/composer/composer.context.d.ts +56 -0
- package/dist/components/composer/composer.context.js +14 -0
- package/dist/components/composer/composer.css +81 -0
- package/dist/components/composer/composer.d.ts +77 -0
- package/dist/components/composer/composer.handle.d.ts +31 -0
- package/dist/components/composer/composer.handle.js +41 -0
- package/dist/components/composer/composer.js +428 -0
- package/dist/components/composer/composer.module.js +14 -0
- package/dist/components/composer/editor-behavior.d.ts +2 -0
- package/dist/components/composer/editor-behavior.js +99 -0
- package/dist/components/composer/index.d.ts +8 -0
- package/dist/components/composer/index.js +3 -0
- package/dist/components/composer/mention-node.d.ts +44 -0
- package/dist/components/composer/mention-node.js +71 -0
- package/dist/components/composer/mention-sources.d.ts +14 -0
- package/dist/components/composer/mention-text.css +14 -0
- package/dist/components/composer/mention-text.d.ts +66 -0
- package/dist/components/composer/mention-text.js +95 -0
- package/dist/components/composer/mention-text.module.js +4 -0
- package/dist/components/confirm-dialog/confirm-dialog.css +68 -0
- package/dist/components/confirm-dialog/confirm-dialog.d.ts +75 -0
- package/dist/components/confirm-dialog/confirm-dialog.js +399 -0
- package/dist/components/confirm-dialog/confirm-dialog.module.js +14 -0
- package/dist/components/confirm-dialog/index.d.ts +1 -0
- package/dist/components/confirm-dialog/index.js +1 -0
- package/dist/components/conversation/conversation.context.d.ts +9 -0
- package/dist/components/conversation/conversation.context.js +4 -0
- package/dist/components/conversation/conversation.css +143 -0
- package/dist/components/conversation/conversation.d.ts +126 -0
- package/dist/components/conversation/conversation.js +761 -0
- package/dist/components/conversation/conversation.module.js +34 -0
- package/dist/components/conversation/group-messages.d.ts +34 -0
- package/dist/components/conversation/group-messages.js +64 -0
- package/dist/components/conversation/index.d.ts +4 -0
- package/dist/components/conversation/index.js +3 -0
- package/dist/components/conversation/moment.d.ts +11 -0
- package/dist/components/conversation/moment.js +15 -0
- package/dist/components/date-field/date-field.d.ts +45 -0
- package/dist/components/date-field/date-field.js +162 -0
- package/dist/components/date-field/date-input.d.ts +46 -0
- package/dist/components/date-field/date-input.js +109 -0
- package/dist/components/date-field/index.d.ts +4 -0
- package/dist/components/date-field/index.js +4 -0
- package/dist/components/date-field/tsf-date-field.d.ts +14 -0
- package/dist/components/date-field/tsf-date-field.js +40 -0
- package/dist/components/date-range-field/date-range-field.d.ts +53 -0
- package/dist/components/date-range-field/date-range-field.js +167 -0
- package/dist/components/date-range-field/date-range-input.d.ts +51 -0
- package/dist/components/date-range-field/date-range-input.js +109 -0
- package/dist/components/date-range-field/index.d.ts +4 -0
- package/dist/components/date-range-field/index.js +5 -0
- package/dist/components/date-range-field/tsf-date-range-field.d.ts +15 -0
- package/dist/components/date-range-field/tsf-date-range-field.js +58 -0
- package/dist/components/detail-list/detail-list.css +32 -0
- package/dist/components/detail-list/detail-list.d.ts +41 -0
- package/dist/components/detail-list/detail-list.js +163 -0
- package/dist/components/detail-list/detail-list.module.js +14 -0
- package/dist/components/detail-list/index.d.ts +1 -0
- package/dist/components/detail-list/index.js +1 -0
- package/dist/components/dialog/dialog.css +78 -0
- package/dist/components/dialog/dialog.d.ts +59 -0
- package/dist/components/dialog/dialog.js +245 -0
- package/dist/components/dialog/dialog.module.js +16 -0
- package/dist/components/dialog/index.d.ts +1 -0
- package/dist/components/dialog/index.js +1 -0
- package/dist/components/divider/divider.css +16 -0
- package/dist/components/divider/divider.d.ts +13 -0
- package/dist/components/divider/divider.js +47 -0
- package/dist/components/divider/divider.module.js +10 -0
- package/dist/components/divider/index.d.ts +1 -0
- package/dist/components/divider/index.js +1 -0
- package/dist/components/drawer/drawer.css +168 -0
- package/dist/components/drawer/drawer.d.ts +65 -0
- package/dist/components/drawer/drawer.js +219 -0
- package/dist/components/drawer/drawer.module.js +16 -0
- package/dist/components/drawer/index.d.ts +1 -0
- package/dist/components/drawer/index.js +1 -0
- package/dist/components/email-field/email-field.d.ts +11 -0
- package/dist/components/email-field/email-field.js +45 -0
- package/dist/components/email-field/index.d.ts +2 -0
- package/dist/components/email-field/index.js +3 -0
- package/dist/components/email-field/tsf-email-field.d.ts +13 -0
- package/dist/components/email-field/tsf-email-field.js +14 -0
- package/dist/components/empty-message/empty-message.d.ts +16 -0
- package/dist/components/empty-message/empty-message.js +31 -0
- package/dist/components/empty-message/index.d.ts +1 -0
- package/dist/components/empty-message/index.js +1 -0
- package/dist/components/error-boundary/error-boundary.d.ts +43 -0
- package/dist/components/error-boundary/error-boundary.js +60 -0
- package/dist/components/error-boundary/index.d.ts +1 -0
- package/dist/components/error-boundary/index.js +1 -0
- package/dist/components/error-message/error-message.d.ts +15 -0
- package/dist/components/error-message/error-message.js +30 -0
- package/dist/components/error-message/index.d.ts +1 -0
- package/dist/components/error-message/index.js +1 -0
- package/dist/components/error-text/error-cascade.d.ts +32 -0
- package/dist/components/error-text/error-cascade.js +49 -0
- package/dist/components/error-text/error-text.css +27 -0
- package/dist/components/error-text/error-text.d.ts +22 -0
- package/dist/components/error-text/error-text.js +139 -0
- package/dist/components/error-text/error-text.module.js +11 -0
- package/dist/components/error-text/index.d.ts +1 -0
- package/dist/components/error-text/index.js +1 -0
- package/dist/components/field/choice-option.d.ts +11 -0
- package/dist/components/field/field-group-context.d.ts +21 -0
- package/dist/components/field/field-group-context.js +38 -0
- package/dist/components/field/field-state.d.ts +51 -0
- package/dist/components/field/field-state.js +28 -0
- package/dist/components/field/field.css +69 -0
- package/dist/components/field/field.d.ts +186 -0
- package/dist/components/field/field.js +477 -0
- package/dist/components/field/field.module.js +22 -0
- package/dist/components/field/hidden-input.d.ts +8 -0
- package/dist/components/field/hidden-input.js +12 -0
- package/dist/components/field/index.d.ts +6 -0
- package/dist/components/field/index.js +6 -0
- package/dist/components/field/input-parts.d.ts +49 -0
- package/dist/components/field/input-parts.js +94 -0
- package/dist/components/field/options-load.d.ts +54 -0
- package/dist/components/field/options-load.js +38 -0
- package/dist/components/field/rim-focus.d.ts +10 -0
- package/dist/components/field/rim-focus.js +23 -0
- package/dist/components/field/use-field-focus.d.ts +37 -0
- package/dist/components/field/use-field-focus.js +71 -0
- package/dist/components/field/use-field-state.d.ts +32 -0
- package/dist/components/field/use-field-state.js +77 -0
- package/dist/components/field-placeholder/field-placeholder.css +22 -0
- package/dist/components/field-placeholder/field-placeholder.d.ts +10 -0
- package/dist/components/field-placeholder/field-placeholder.js +54 -0
- package/dist/components/field-placeholder/field-placeholder.module.js +12 -0
- package/dist/components/field-placeholder/index.d.ts +1 -0
- package/dist/components/field-placeholder/index.js +1 -0
- package/dist/components/fieldset/field-group.d.ts +31 -0
- package/dist/components/fieldset/field-group.js +102 -0
- package/dist/components/fieldset/fieldset-root.d.ts +60 -0
- package/dist/components/fieldset/fieldset-root.js +285 -0
- package/dist/components/fieldset/fieldset.css +21 -0
- package/dist/components/fieldset/fieldset.d.ts +37 -0
- package/dist/components/fieldset/fieldset.js +127 -0
- package/dist/components/fieldset/fieldset.module.js +8 -0
- package/dist/components/fieldset/index.d.ts +4 -0
- package/dist/components/fieldset/index.js +4 -0
- package/dist/components/fieldset/tsf-field-group.d.ts +21 -0
- package/dist/components/fieldset/tsf-field-group.js +58 -0
- package/dist/components/file-field/file-field.css +101 -0
- package/dist/components/file-field/file-field.d.ts +59 -0
- package/dist/components/file-field/file-field.js +296 -0
- package/dist/components/file-field/file-field.module.js +10 -0
- package/dist/components/file-field/file-input.d.ts +85 -0
- package/dist/components/file-field/file-input.js +334 -0
- package/dist/components/file-field/file-size.d.ts +21 -0
- package/dist/components/file-field/file-size.js +18 -0
- package/dist/components/file-field/file-type.d.ts +21 -0
- package/dist/components/file-field/file-type.js +28 -0
- package/dist/components/file-field/index.d.ts +3 -0
- package/dist/components/file-field/index.js +4 -0
- package/dist/components/file-field/tsf-file-field.d.ts +14 -0
- package/dist/components/file-field/tsf-file-field.js +48 -0
- package/dist/components/filter-bar/filter-bar.css +34 -0
- package/dist/components/filter-bar/filter-bar.d.ts +87 -0
- package/dist/components/filter-bar/filter-bar.js +311 -0
- package/dist/components/filter-bar/filter-bar.module.js +14 -0
- package/dist/components/filter-bar/index.d.ts +2 -0
- package/dist/components/filter-bar/index.js +3 -0
- package/dist/components/filter-bar/use-filter-view.d.ts +86 -0
- package/dist/components/filter-bar/use-filter-view.js +219 -0
- package/dist/components/form/first-invalid.d.ts +10 -0
- package/dist/components/form/first-invalid.js +31 -0
- package/dist/components/form/form-context.d.ts +23 -0
- package/dist/components/form/form-context.js +28 -0
- package/dist/components/form/form.css +14 -0
- package/dist/components/form/form.d.ts +68 -0
- package/dist/components/form/form.js +317 -0
- package/dist/components/form/form.module.js +8 -0
- package/dist/components/form/index.d.ts +2 -0
- package/dist/components/form/index.js +3 -0
- package/dist/components/icon/icon.css +9 -0
- package/dist/components/icon/icon.d.ts +31 -0
- package/dist/components/icon/icon.js +61 -0
- package/dist/components/icon/icon.module.js +4 -0
- package/dist/components/icon/index.d.ts +1 -0
- package/dist/components/icon/index.js +1 -0
- package/dist/components/link/index.d.ts +1 -0
- package/dist/components/link/index.js +1 -0
- package/dist/components/link/link.css +18 -0
- package/dist/components/link/link.d.ts +11 -0
- package/dist/components/link/link.js +45 -0
- package/dist/components/link/link.module.js +4 -0
- package/dist/components/link-button/index.d.ts +1 -0
- package/dist/components/link-button/index.js +1 -0
- package/dist/components/link-button/link-button.d.ts +23 -0
- package/dist/components/link-button/link-button.js +80 -0
- package/dist/components/loading-message/index.d.ts +1 -0
- package/dist/components/loading-message/index.js +1 -0
- package/dist/components/loading-message/loading-message.d.ts +22 -0
- package/dist/components/loading-message/loading-message.js +55 -0
- package/dist/components/locale-provider/index.d.ts +1 -0
- package/dist/components/locale-provider/index.js +1 -0
- package/dist/components/locale-provider/locale-provider.d.ts +22 -0
- package/dist/components/locale-provider/locale-provider.js +50 -0
- package/dist/components/menu/index.d.ts +1 -0
- package/dist/components/menu/index.js +1 -0
- package/dist/components/menu/menu.css +122 -0
- package/dist/components/menu/menu.d.ts +78 -0
- package/dist/components/menu/menu.js +382 -0
- package/dist/components/menu/menu.module.js +20 -0
- package/dist/components/nav/index.d.ts +3 -0
- package/dist/components/nav/index.js +3 -0
- package/dist/components/nav/nav-context.d.ts +17 -0
- package/dist/components/nav/nav-context.js +5 -0
- package/dist/components/nav/nav-item-view.d.ts +63 -0
- package/dist/components/nav/nav-item-view.js +243 -0
- package/dist/components/nav/nav.css +310 -0
- package/dist/components/nav/nav.d.ts +87 -0
- package/dist/components/nav/nav.js +481 -0
- package/dist/components/nav/nav.module.js +32 -0
- package/dist/components/number-field/index.d.ts +4 -0
- package/dist/components/number-field/index.js +5 -0
- package/dist/components/number-field/number-field-formats.d.ts +24 -0
- package/dist/components/number-field/number-field-formats.js +43 -0
- package/dist/components/number-field/number-field.css +116 -0
- package/dist/components/number-field/number-field.d.ts +34 -0
- package/dist/components/number-field/number-field.js +168 -0
- package/dist/components/number-field/number-field.module.js +16 -0
- package/dist/components/number-field/number-input.d.ts +76 -0
- package/dist/components/number-field/number-input.js +383 -0
- package/dist/components/number-field/tsf-number-field.d.ts +14 -0
- package/dist/components/number-field/tsf-number-field.js +34 -0
- package/dist/components/otp-field/index.d.ts +3 -0
- package/dist/components/otp-field/index.js +4 -0
- package/dist/components/otp-field/otp-field.css +97 -0
- package/dist/components/otp-field/otp-field.d.ts +22 -0
- package/dist/components/otp-field/otp-field.js +91 -0
- package/dist/components/otp-field/otp-field.module.js +12 -0
- package/dist/components/otp-field/otp-input-context.d.ts +27 -0
- package/dist/components/otp-field/otp-input-context.js +15 -0
- package/dist/components/otp-field/otp-input.d.ts +76 -0
- package/dist/components/otp-field/otp-input.js +341 -0
- package/dist/components/otp-field/tsf-otp-field.d.ts +14 -0
- package/dist/components/otp-field/tsf-otp-field.js +34 -0
- package/dist/components/pagination/index.d.ts +1 -0
- package/dist/components/pagination/index.js +1 -0
- package/dist/components/pagination/pagination-context.d.ts +23 -0
- package/dist/components/pagination/pagination-context.js +14 -0
- package/dist/components/pagination/pagination.css +24 -0
- package/dist/components/pagination/pagination.d.ts +60 -0
- package/dist/components/pagination/pagination.js +341 -0
- package/dist/components/pagination/pagination.module.js +12 -0
- package/dist/components/password-field/index.d.ts +4 -0
- package/dist/components/password-field/index.js +4 -0
- package/dist/components/password-field/password-field.css +66 -0
- package/dist/components/password-field/password-field.d.ts +44 -0
- package/dist/components/password-field/password-field.js +227 -0
- package/dist/components/password-field/password-field.module.js +20 -0
- package/dist/components/password-field/password-strength.d.ts +27 -0
- package/dist/components/password-field/password-strength.js +124 -0
- package/dist/components/password-field/tsf-password-field.d.ts +14 -0
- package/dist/components/password-field/tsf-password-field.js +34 -0
- package/dist/components/phone-field/index.d.ts +2 -0
- package/dist/components/phone-field/index.js +3 -0
- package/dist/components/phone-field/phone-field.d.ts +14 -0
- package/dist/components/phone-field/phone-field.js +29 -0
- package/dist/components/phone-field/tsf-phone-field.d.ts +14 -0
- package/dist/components/phone-field/tsf-phone-field.js +14 -0
- package/dist/components/photo-field/index.d.ts +3 -0
- package/dist/components/photo-field/index.js +4 -0
- package/dist/components/photo-field/photo-field.d.ts +29 -0
- package/dist/components/photo-field/photo-field.js +183 -0
- package/dist/components/photo-field/photo-input.css +113 -0
- package/dist/components/photo-field/photo-input.d.ts +63 -0
- package/dist/components/photo-field/photo-input.js +327 -0
- package/dist/components/photo-field/photo-input.module.js +18 -0
- package/dist/components/photo-field/tsf-photo-field.d.ts +19 -0
- package/dist/components/photo-field/tsf-photo-field.js +56 -0
- package/dist/components/popover/index.d.ts +1 -0
- package/dist/components/popover/index.js +1 -0
- package/dist/components/popover/popover.css +120 -0
- package/dist/components/popover/popover.d.ts +72 -0
- package/dist/components/popover/popover.js +434 -0
- package/dist/components/popover/popover.module.js +34 -0
- package/dist/components/radio-group-field/index.d.ts +3 -0
- package/dist/components/radio-group-field/index.js +4 -0
- package/dist/components/radio-group-field/radio-group-field.d.ts +26 -0
- package/dist/components/radio-group-field/radio-group-field.js +128 -0
- package/dist/components/radio-group-field/radio-group.css +116 -0
- package/dist/components/radio-group-field/radio-group.d.ts +38 -0
- package/dist/components/radio-group-field/radio-group.js +158 -0
- package/dist/components/radio-group-field/radio-group.module.js +12 -0
- package/dist/components/radio-group-field/tsf-radio-group-field.d.ts +15 -0
- package/dist/components/radio-group-field/tsf-radio-group-field.js +41 -0
- package/dist/components/search-field/index.d.ts +2 -0
- package/dist/components/search-field/index.js +3 -0
- package/dist/components/search-field/search-field.d.ts +17 -0
- package/dist/components/search-field/search-field.js +45 -0
- package/dist/components/search-field/tsf-search-field.d.ts +14 -0
- package/dist/components/search-field/tsf-search-field.js +14 -0
- package/dist/components/segmented-control-field/index.d.ts +3 -0
- package/dist/components/segmented-control-field/index.js +4 -0
- package/dist/components/segmented-control-field/segmented-control-field.d.ts +32 -0
- package/dist/components/segmented-control-field/segmented-control-field.js +166 -0
- package/dist/components/segmented-control-field/segmented-control.css +203 -0
- package/dist/components/segmented-control-field/segmented-control.d.ts +58 -0
- package/dist/components/segmented-control-field/segmented-control.js +209 -0
- package/dist/components/segmented-control-field/segmented-control.module.js +12 -0
- package/dist/components/segmented-control-field/tsf-segmented-control-field.d.ts +15 -0
- package/dist/components/segmented-control-field/tsf-segmented-control-field.js +41 -0
- package/dist/components/select-field/index.d.ts +3 -0
- package/dist/components/select-field/index.js +4 -0
- package/dist/components/select-field/select-context.d.ts +20 -0
- package/dist/components/select-field/select-context.js +15 -0
- package/dist/components/select-field/select-field.d.ts +32 -0
- package/dist/components/select-field/select-field.js +312 -0
- package/dist/components/select-field/select.css +233 -0
- package/dist/components/select-field/select.d.ts +78 -0
- package/dist/components/select-field/select.js +529 -0
- package/dist/components/select-field/select.module.js +30 -0
- package/dist/components/select-field/tsf-select-field.d.ts +15 -0
- package/dist/components/select-field/tsf-select-field.js +41 -0
- package/dist/components/skeleton/index.d.ts +1 -0
- package/dist/components/skeleton/index.js +1 -0
- package/dist/components/skeleton/skeleton.css +16 -0
- package/dist/components/skeleton/skeleton.d.ts +13 -0
- package/dist/components/skeleton/skeleton.js +34 -0
- package/dist/components/skeleton/skeleton.module.js +9 -0
- package/dist/components/spinner/index.d.ts +1 -0
- package/dist/components/spinner/index.js +1 -0
- package/dist/components/spinner/spinner.css +7 -0
- package/dist/components/spinner/spinner.d.ts +15 -0
- package/dist/components/spinner/spinner.js +50 -0
- package/dist/components/spinner/spinner.module.js +4 -0
- package/dist/components/stale/index.d.ts +1 -0
- package/dist/components/stale/index.js +1 -0
- package/dist/components/stale/stale.css +60 -0
- package/dist/components/stale/stale.d.ts +68 -0
- package/dist/components/stale/stale.js +231 -0
- package/dist/components/stale/stale.module.js +16 -0
- package/dist/components/status-message/index.d.ts +1 -0
- package/dist/components/status-message/index.js +1 -0
- package/dist/components/status-message/status-message.css +122 -0
- package/dist/components/status-message/status-message.d.ts +72 -0
- package/dist/components/status-message/status-message.js +182 -0
- package/dist/components/status-message/status-message.module.js +16 -0
- package/dist/components/status-message/status-preset.d.ts +26 -0
- package/dist/components/status-message/status-preset.js +64 -0
- package/dist/components/switch-field/index.d.ts +3 -0
- package/dist/components/switch-field/index.js +4 -0
- package/dist/components/switch-field/switch-field.d.ts +23 -0
- package/dist/components/switch-field/switch-field.js +142 -0
- package/dist/components/switch-field/switch.css +145 -0
- package/dist/components/switch-field/switch.d.ts +35 -0
- package/dist/components/switch-field/switch.js +207 -0
- package/dist/components/switch-field/switch.module.js +12 -0
- package/dist/components/switch-field/tsf-switch-field.d.ts +14 -0
- package/dist/components/switch-field/tsf-switch-field.js +40 -0
- package/dist/components/tabs/index.d.ts +1 -0
- package/dist/components/tabs/index.js +1 -0
- package/dist/components/tabs/tabs.css +122 -0
- package/dist/components/tabs/tabs.d.ts +57 -0
- package/dist/components/tabs/tabs.js +194 -0
- package/dist/components/tabs/tabs.module.js +18 -0
- package/dist/components/tag/index.d.ts +1 -0
- package/dist/components/tag/index.js +1 -0
- package/dist/components/tag/tag.css +120 -0
- package/dist/components/tag/tag.d.ts +36 -0
- package/dist/components/tag/tag.js +124 -0
- package/dist/components/tag/tag.module.js +10 -0
- package/dist/components/tag-group/index.d.ts +1 -0
- package/dist/components/tag-group/index.js +1 -0
- package/dist/components/tag-group/tag-group.css +155 -0
- package/dist/components/tag-group/tag-group.d.ts +53 -0
- package/dist/components/tag-group/tag-group.js +182 -0
- package/dist/components/tag-group/tag-group.module.js +12 -0
- package/dist/components/text-field/connect-text-preset.d.ts +13 -0
- package/dist/components/text-field/connect-text-preset.js +34 -0
- package/dist/components/text-field/index.d.ts +5 -0
- package/dist/components/text-field/index.js +5 -0
- package/dist/components/text-field/text-field.css +171 -0
- package/dist/components/text-field/text-field.d.ts +57 -0
- package/dist/components/text-field/text-field.js +247 -0
- package/dist/components/text-field/text-field.module.js +22 -0
- package/dist/components/text-field/text-input-context.d.ts +28 -0
- package/dist/components/text-field/text-input-context.js +16 -0
- package/dist/components/text-field/text-input.d.ts +79 -0
- package/dist/components/text-field/text-input.js +588 -0
- package/dist/components/text-field/text-preset.d.ts +7 -0
- package/dist/components/text-field/tsf-text-field.d.ts +14 -0
- package/dist/components/text-field/tsf-text-field.js +34 -0
- package/dist/components/textarea-field/index.d.ts +3 -0
- package/dist/components/textarea-field/index.js +4 -0
- package/dist/components/textarea-field/textarea-field.css +12 -0
- package/dist/components/textarea-field/textarea-field.d.ts +19 -0
- package/dist/components/textarea-field/textarea-field.js +168 -0
- package/dist/components/textarea-field/textarea-field.module.js +8 -0
- package/dist/components/textarea-field/textarea.d.ts +19 -0
- package/dist/components/textarea-field/textarea.js +108 -0
- package/dist/components/textarea-field/tsf-textarea-field.d.ts +14 -0
- package/dist/components/textarea-field/tsf-textarea-field.js +34 -0
- package/dist/components/textarea-field/use-autosize.d.ts +11 -0
- package/dist/components/textarea-field/use-autosize.js +65 -0
- package/dist/components/time-field/index.d.ts +3 -0
- package/dist/components/time-field/index.js +4 -0
- package/dist/components/time-field/time-field.d.ts +25 -0
- package/dist/components/time-field/time-field.js +115 -0
- package/dist/components/time-field/time-input.d.ts +30 -0
- package/dist/components/time-field/time-input.js +66 -0
- package/dist/components/time-field/tsf-time-field.d.ts +14 -0
- package/dist/components/time-field/tsf-time-field.js +40 -0
- package/dist/components/time-zone-provider/index.d.ts +1 -0
- package/dist/components/time-zone-provider/index.js +1 -0
- package/dist/components/time-zone-provider/time-zone-provider.d.ts +22 -0
- package/dist/components/time-zone-provider/time-zone-provider.js +39 -0
- package/dist/components/toast/index.d.ts +2 -0
- package/dist/components/toast/index.js +3 -0
- package/dist/components/toast/toast-provider.css +99 -0
- package/dist/components/toast/toast-provider.d.ts +18 -0
- package/dist/components/toast/toast-provider.js +203 -0
- package/dist/components/toast/toast-provider.module.js +24 -0
- package/dist/components/toast/toast.d.ts +79 -0
- package/dist/components/toast/toast.js +68 -0
- package/dist/components/toggle-group-field/index.d.ts +3 -0
- package/dist/components/toggle-group-field/index.js +4 -0
- package/dist/components/toggle-group-field/toggle-group-field.d.ts +32 -0
- package/dist/components/toggle-group-field/toggle-group-field.js +158 -0
- package/dist/components/toggle-group-field/toggle-group.css +148 -0
- package/dist/components/toggle-group-field/toggle-group.d.ts +44 -0
- package/dist/components/toggle-group-field/toggle-group.js +156 -0
- package/dist/components/toggle-group-field/toggle-group.module.js +8 -0
- package/dist/components/toggle-group-field/tsf-toggle-group-field.d.ts +15 -0
- package/dist/components/toggle-group-field/tsf-toggle-group-field.js +41 -0
- package/dist/components/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/index.js +1 -0
- package/dist/components/tooltip/tooltip.css +22 -0
- package/dist/components/tooltip/tooltip.d.ts +46 -0
- package/dist/components/tooltip/tooltip.js +175 -0
- package/dist/components/tooltip/tooltip.module.js +4 -0
- package/dist/data-table/data-table-content.d.ts +27 -0
- package/dist/data-table/data-table-content.js +311 -0
- package/dist/data-table/data-table-context.d.ts +33 -0
- package/dist/data-table/data-table-context.js +31 -0
- package/dist/data-table/data-table-selection.d.ts +42 -0
- package/dist/data-table/data-table-selection.js +299 -0
- package/dist/data-table/data-table.css +515 -0
- package/dist/data-table/data-table.d.ts +93 -0
- package/dist/data-table/data-table.js +215 -0
- package/dist/data-table/data-table.module.js +68 -0
- package/dist/data-table/index.d.ts +6 -0
- package/dist/data-table/index.js +5 -0
- package/dist/data-table/resolve-view.d.ts +31 -0
- package/dist/data-table/resolve-view.js +37 -0
- package/dist/data-table/table-features.d.ts +69 -0
- package/dist/data-table/table-features.js +41 -0
- package/dist/data-table/use-sticky-offsets.d.ts +21 -0
- package/dist/data-table/use-sticky-offsets.js +86 -0
- package/dist/data-view/index.d.ts +1 -0
- package/dist/data-view/index.js +1 -0
- package/dist/data-view/use-data-view.d.ts +83 -0
- package/dist/data-view/use-data-view.js +135 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.js +136 -0
- package/dist/lib/calendar/calendar-navigation.d.ts +19 -0
- package/dist/lib/calendar/calendar-navigation.js +216 -0
- package/dist/lib/calendar/calendar-state.d.ts +19 -0
- package/dist/lib/calendar/calendar-state.js +33 -0
- package/dist/lib/calendar/calendar-year.d.ts +20 -0
- package/dist/lib/calendar/calendar-year.js +342 -0
- package/dist/lib/calendar/temporal-value.d.ts +84 -0
- package/dist/lib/calendar/temporal-value.js +105 -0
- package/dist/lib/calendar/temporal.css +596 -0
- package/dist/lib/calendar/temporal.d.ts +134 -0
- package/dist/lib/calendar/temporal.js +783 -0
- package/dist/lib/calendar/temporal.module.js +80 -0
- package/dist/lib/format-bytes.d.ts +10 -0
- package/dist/lib/format-bytes.js +22 -0
- package/dist/lib/forms/context.d.ts +32 -0
- package/dist/lib/forms/context.js +33 -0
- package/dist/lib/forms/create-app-form.d.ts +33 -0
- package/dist/lib/forms/create-app-form.js +45 -0
- package/dist/lib/forms/errors.d.ts +23 -0
- package/dist/lib/forms/errors.js +25 -0
- package/dist/lib/forms/failed-submit.d.ts +16 -0
- package/dist/lib/forms/failed-submit.js +44 -0
- package/dist/lib/forms/index.d.ts +4 -0
- package/dist/lib/forms/index.js +5 -0
- package/dist/lib/forms/use-connected-field.d.ts +30 -0
- package/dist/lib/forms/use-connected-field.js +74 -0
- package/dist/lib/hooks/index.d.ts +5 -0
- package/dist/lib/hooks/index.js +6 -0
- package/dist/lib/hooks/use-busy-phase.d.ts +31 -0
- package/dist/lib/hooks/use-busy-phase.js +75 -0
- package/dist/lib/hooks/use-media-query.d.ts +8 -0
- package/dist/lib/hooks/use-media-query.js +34 -0
- package/dist/lib/hooks/use-presence.d.ts +25 -0
- package/dist/lib/hooks/use-presence.js +155 -0
- package/dist/lib/hooks/use-row-selection.d.ts +65 -0
- package/dist/lib/hooks/use-row-selection.js +136 -0
- package/dist/lib/hooks/use-theme.d.ts +28 -0
- package/dist/lib/hooks/use-theme.js +88 -0
- package/dist/lib/iso-zoned.d.ts +9 -0
- package/dist/lib/iso-zoned.js +19 -0
- package/dist/lib/password-strength/password-strength.d.ts +38 -0
- package/dist/lib/password-strength/password-strength.js +72 -0
- package/dist/lib/popup-edge-padding.d.ts +20 -0
- package/dist/lib/popup-edge-padding.js +41 -0
- package/dist/lib/sliding-indicator/index.d.ts +1 -0
- package/dist/lib/sliding-indicator/use-sliding-indicator.d.ts +27 -0
- package/dist/lib/sliding-indicator/use-sliding-indicator.js +84 -0
- package/dist/lib/storage.d.ts +21 -0
- package/dist/lib/storage.js +0 -0
- package/dist/lib/table-storage.d.ts +43 -0
- package/dist/lib/table-storage.js +62 -0
- package/dist/lib/text-length.d.ts +10 -0
- package/dist/lib/text-length.js +15 -0
- package/dist/lib/tone.d.ts +14 -0
- package/dist/lib/tone.js +0 -0
- package/dist/lib/unsaved-changes/before-unload.d.ts +8 -0
- package/dist/lib/unsaved-changes/before-unload.js +37 -0
- package/dist/lib/unsaved-changes/index.d.ts +4 -0
- package/dist/lib/unsaved-changes/index.js +5 -0
- package/dist/lib/unsaved-changes/leave-guard.d.ts +80 -0
- package/dist/lib/unsaved-changes/leave-guard.js +170 -0
- package/dist/lib/unsaved-changes/policy.d.ts +24 -0
- package/dist/lib/unsaved-changes/policy.js +17 -0
- package/dist/lib/unsaved-changes/registry.d.ts +36 -0
- package/dist/lib/unsaved-changes/registry.js +78 -0
- package/dist/lib/unsaved-changes/tanstack-router.d.ts +12 -0
- package/dist/lib/unsaved-changes/tanstack-router.js +50 -0
- package/dist/lib/use-infinite-scroll.d.ts +31 -0
- package/dist/lib/use-infinite-scroll.js +78 -0
- package/dist/lib/use-intent.d.ts +17 -0
- package/dist/lib/use-intent.js +77 -0
- package/dist/lib/use-required-context.d.ts +9 -0
- package/dist/lib/use-required-context.js +15 -0
- package/dist/terrazzo/index.d.ts +39 -0
- package/dist/terrazzo/index.js +93 -0
- package/dist/tokens.css +1102 -0
- package/dist/vendor/@material-design-icons/svg/outlined/add.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/arrow_downward.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/arrow_forward.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/arrow_upward.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/attach_file.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/block.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/calendar_today.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/check.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/check_circle.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/chevron_left.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/chevron_right.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/close.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/content_copy.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/date_range.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/description.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/download.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/error.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/error_outline.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/expand_less.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/expand_more.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/filter_alt.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/filter_alt_off.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/first_page.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/info.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/keyboard_arrow_down.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/last_page.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/mail.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/more_horiz.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/photo_camera.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/remove.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/restart_alt.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/restore.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/search.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/unfold_more.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/upload_file.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/visibility.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/visibility_off.js +12 -0
- package/dist/vendor/@material-design-icons/svg/outlined/warning_amber.js +12 -0
- package/package.json +456 -5
- package/tokens/dark.tokens.json +329 -0
- package/tokens/kit.resolver.json +38 -0
- package/tokens/ref.tokens.json +1436 -0
- package/tokens/sys.tokens.json +1267 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
/** The state attributes `usePresence` puts on its element, as base-ui does. */
|
|
3
|
+
export type PresenceProps = Readonly<{
|
|
4
|
+
"data-open": "" | undefined;
|
|
5
|
+
"data-starting-style": "" | undefined;
|
|
6
|
+
"data-ending-style": "" | undefined;
|
|
7
|
+
}>;
|
|
8
|
+
export type Presence = Readonly<{
|
|
9
|
+
/** Whether to render the element. */
|
|
10
|
+
mounted: boolean;
|
|
11
|
+
/** The state attributes to spread onto it. */
|
|
12
|
+
props: PresenceProps;
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Keeps an element mounted until its exit transition has finished, and puts
|
|
16
|
+
* base-ui's state attributes on it, so a stylesheet animates both directions
|
|
17
|
+
* with `[data-starting-style]` and `[data-ending-style]`. Under reduced motion
|
|
18
|
+
* it mounts and unmounts at once.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const ref = useRef<HTMLDivElement>(null);
|
|
22
|
+
* const presence = usePresence(busy, ref);
|
|
23
|
+
* return presence.mounted ? <div ref={ref} {...presence.props} /> : null;
|
|
24
|
+
*/
|
|
25
|
+
export declare const usePresence: (open: boolean, ref: RefObject<Element | null>) => Presence;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { useMediaQuery } from "./use-media-query.js";
|
|
2
|
+
import { c } from "react/compiler-runtime";
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
// src/lib/hooks/use-presence.ts
|
|
5
|
+
var nextState = (state, open, reducedMotion) => {
|
|
6
|
+
if (reducedMotion) return {
|
|
7
|
+
open,
|
|
8
|
+
mounted: open,
|
|
9
|
+
transition: "idle"
|
|
10
|
+
};
|
|
11
|
+
if (open) return {
|
|
12
|
+
open,
|
|
13
|
+
mounted: true,
|
|
14
|
+
transition: state.mounted ? "idle" : "starting"
|
|
15
|
+
};
|
|
16
|
+
return {
|
|
17
|
+
open,
|
|
18
|
+
mounted: state.mounted,
|
|
19
|
+
transition: state.mounted ? "ending" : "idle"
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
var runningAnimationsOf = (element) => element.getAnimations().filter((animation) => animation.playState !== "finished");
|
|
23
|
+
var animationsSettled = async (element) => {
|
|
24
|
+
if (element === null) return;
|
|
25
|
+
const running = runningAnimationsOf(element);
|
|
26
|
+
if (running.length === 0) return;
|
|
27
|
+
await Promise.allSettled(running.map((animation) => animation.finished));
|
|
28
|
+
await animationsSettled(element);
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Keeps an element mounted until its exit transition has finished, and puts
|
|
32
|
+
* base-ui's state attributes on it, so a stylesheet animates both directions
|
|
33
|
+
* with `[data-starting-style]` and `[data-ending-style]`. Under reduced motion
|
|
34
|
+
* it mounts and unmounts at once.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* const ref = useRef<HTMLDivElement>(null);
|
|
38
|
+
* const presence = usePresence(busy, ref);
|
|
39
|
+
* return presence.mounted ? <div ref={ref} {...presence.props} /> : null;
|
|
40
|
+
*/
|
|
41
|
+
var usePresence = (open, ref) => {
|
|
42
|
+
const $ = c(20);
|
|
43
|
+
const reducedMotion = useMediaQuery("(prefers-reduced-motion: reduce)");
|
|
44
|
+
let t0;
|
|
45
|
+
if ($[0] !== open) {
|
|
46
|
+
t0 = {
|
|
47
|
+
open,
|
|
48
|
+
mounted: open,
|
|
49
|
+
transition: "idle"
|
|
50
|
+
};
|
|
51
|
+
$[0] = open;
|
|
52
|
+
$[1] = t0;
|
|
53
|
+
} else t0 = $[1];
|
|
54
|
+
const [state, setState] = useState(t0);
|
|
55
|
+
if (state.open !== open) {
|
|
56
|
+
let t1;
|
|
57
|
+
if ($[2] !== open || $[3] !== reducedMotion || $[4] !== state) {
|
|
58
|
+
t1 = nextState(state, open, reducedMotion);
|
|
59
|
+
$[2] = open;
|
|
60
|
+
$[3] = reducedMotion;
|
|
61
|
+
$[4] = state;
|
|
62
|
+
$[5] = t1;
|
|
63
|
+
} else t1 = $[5];
|
|
64
|
+
setState(t1);
|
|
65
|
+
}
|
|
66
|
+
let t1;
|
|
67
|
+
let t2;
|
|
68
|
+
if ($[6] !== state.transition) {
|
|
69
|
+
t1 = () => {
|
|
70
|
+
if (state.transition !== "starting") return;
|
|
71
|
+
let frame = requestAnimationFrame(() => {
|
|
72
|
+
frame = requestAnimationFrame(() => {
|
|
73
|
+
setState(_temp);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
return () => cancelAnimationFrame(frame);
|
|
77
|
+
};
|
|
78
|
+
t2 = [state.transition];
|
|
79
|
+
$[6] = state.transition;
|
|
80
|
+
$[7] = t1;
|
|
81
|
+
$[8] = t2;
|
|
82
|
+
} else {
|
|
83
|
+
t1 = $[7];
|
|
84
|
+
t2 = $[8];
|
|
85
|
+
}
|
|
86
|
+
useEffect(t1, t2);
|
|
87
|
+
let t3;
|
|
88
|
+
let t4;
|
|
89
|
+
if ($[9] !== ref || $[10] !== state.transition) {
|
|
90
|
+
t3 = () => {
|
|
91
|
+
if (state.transition !== "ending") return;
|
|
92
|
+
const abort = new AbortController();
|
|
93
|
+
const unmountWhenSettled = async () => {
|
|
94
|
+
await animationsSettled(ref.current);
|
|
95
|
+
if (!abort.signal.aborted) setState(_temp2);
|
|
96
|
+
};
|
|
97
|
+
const frame_0 = requestAnimationFrame(() => {
|
|
98
|
+
unmountWhenSettled();
|
|
99
|
+
});
|
|
100
|
+
return () => {
|
|
101
|
+
cancelAnimationFrame(frame_0);
|
|
102
|
+
abort.abort();
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
t4 = [state.transition, ref];
|
|
106
|
+
$[9] = ref;
|
|
107
|
+
$[10] = state.transition;
|
|
108
|
+
$[11] = t3;
|
|
109
|
+
$[12] = t4;
|
|
110
|
+
} else {
|
|
111
|
+
t3 = $[11];
|
|
112
|
+
t4 = $[12];
|
|
113
|
+
}
|
|
114
|
+
useEffect(t3, t4);
|
|
115
|
+
const t5 = open ? "" : void 0;
|
|
116
|
+
const t6 = state.transition === "starting" ? "" : void 0;
|
|
117
|
+
const t7 = state.transition === "ending" ? "" : void 0;
|
|
118
|
+
let t8;
|
|
119
|
+
if ($[13] !== t5 || $[14] !== t6 || $[15] !== t7) {
|
|
120
|
+
t8 = {
|
|
121
|
+
"data-open": t5,
|
|
122
|
+
"data-starting-style": t6,
|
|
123
|
+
"data-ending-style": t7
|
|
124
|
+
};
|
|
125
|
+
$[13] = t5;
|
|
126
|
+
$[14] = t6;
|
|
127
|
+
$[15] = t7;
|
|
128
|
+
$[16] = t8;
|
|
129
|
+
} else t8 = $[16];
|
|
130
|
+
let t9;
|
|
131
|
+
if ($[17] !== state.mounted || $[18] !== t8) {
|
|
132
|
+
t9 = {
|
|
133
|
+
mounted: state.mounted,
|
|
134
|
+
props: t8
|
|
135
|
+
};
|
|
136
|
+
$[17] = state.mounted;
|
|
137
|
+
$[18] = t8;
|
|
138
|
+
$[19] = t9;
|
|
139
|
+
} else t9 = $[19];
|
|
140
|
+
return t9;
|
|
141
|
+
};
|
|
142
|
+
function _temp(current) {
|
|
143
|
+
return current.transition === "starting" ? {
|
|
144
|
+
...current,
|
|
145
|
+
transition: "idle"
|
|
146
|
+
} : current;
|
|
147
|
+
}
|
|
148
|
+
function _temp2(current_0) {
|
|
149
|
+
return {
|
|
150
|
+
...current_0,
|
|
151
|
+
mounted: false,
|
|
152
|
+
transition: "idle"
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export { usePresence };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/** What a selection asks the server to act on: the checked ids, or every matching row but the excluded ones. */
|
|
2
|
+
export type RowSelectionRequest = Readonly<{
|
|
3
|
+
mode: "ids";
|
|
4
|
+
ids: readonly string[];
|
|
5
|
+
}> | Readonly<{
|
|
6
|
+
mode: "allMatching";
|
|
7
|
+
excludedIds: readonly string[];
|
|
8
|
+
}>;
|
|
9
|
+
/** The marked row ids: selected ones, or, while `allMatching`, excluded ones. */
|
|
10
|
+
export type SelectionState = Readonly<{
|
|
11
|
+
allMatching: boolean;
|
|
12
|
+
rowSelection: Readonly<Record<string, true>>;
|
|
13
|
+
}>;
|
|
14
|
+
export type SelectionAction = Readonly<{
|
|
15
|
+
type: "toggleRow";
|
|
16
|
+
rowId: string;
|
|
17
|
+
selected: boolean;
|
|
18
|
+
totalRows: number;
|
|
19
|
+
}> | Readonly<{
|
|
20
|
+
type: "allMatching";
|
|
21
|
+
}> | Readonly<{
|
|
22
|
+
type: "clear";
|
|
23
|
+
}>;
|
|
24
|
+
/**
|
|
25
|
+
* Applies one selection action. While every matching row is selected, the
|
|
26
|
+
* marked ids are exclusions, and excluding every row clears the selection.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* selectionReducer(state, { type: "toggleRow", rowId: "a", selected: true, totalRows: 20 });
|
|
30
|
+
*/
|
|
31
|
+
export declare const selectionReducer: (state: SelectionState, action: SelectionAction) => SelectionState;
|
|
32
|
+
/**
|
|
33
|
+
* How many rows a selection holds, out of `totalRows` matching rows.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* selectionCount({ allMatching: true, rowSelection: { a: true } }, 20); // 19
|
|
37
|
+
*/
|
|
38
|
+
export declare const selectionCount: (state: SelectionState, totalRows: number) => number;
|
|
39
|
+
/**
|
|
40
|
+
* The request a selection sends to the server, or `null` when nothing is selected.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* selectionRequest({ allMatching: false, rowSelection: { a: true } }); // { mode: "ids", ids: ["a"] }
|
|
44
|
+
*/
|
|
45
|
+
export declare const selectionRequest: (state: SelectionState) => RowSelectionRequest | null;
|
|
46
|
+
/** The row selection model returned by {@link useRowSelection}. */
|
|
47
|
+
export type RowSelectionView = Readonly<{
|
|
48
|
+
allMatching: boolean;
|
|
49
|
+
isRowSelected: (rowId: string) => boolean;
|
|
50
|
+
toggleRow: (rowId: string, selected: boolean, totalRows: number) => void;
|
|
51
|
+
selectAllMatching: () => void;
|
|
52
|
+
clear: () => void;
|
|
53
|
+
count: (totalRows: number) => number;
|
|
54
|
+
request: () => RowSelectionRequest | null;
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Holds a server-side row selection: checked ids, or every matching row
|
|
58
|
+
* minus the unchecked ones once the reader selects all matching.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* const selection = useRowSelection();
|
|
62
|
+
* selection.toggleRow("a", true, totalRows);
|
|
63
|
+
* exportRows(selection.request());
|
|
64
|
+
*/
|
|
65
|
+
export declare const useRowSelection: () => RowSelectionView;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { c } from "react/compiler-runtime";
|
|
2
|
+
import { useReducer } from "react";
|
|
3
|
+
// src/lib/hooks/use-row-selection.ts
|
|
4
|
+
var EMPTY_SELECTION = {
|
|
5
|
+
allMatching: false,
|
|
6
|
+
rowSelection: {}
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Applies one selection action. While every matching row is selected, the
|
|
10
|
+
* marked ids are exclusions, and excluding every row clears the selection.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* selectionReducer(state, { type: "toggleRow", rowId: "a", selected: true, totalRows: 20 });
|
|
14
|
+
*/
|
|
15
|
+
var selectionReducer = (state, action) => {
|
|
16
|
+
if (action.type === "allMatching") return {
|
|
17
|
+
allMatching: true,
|
|
18
|
+
rowSelection: {}
|
|
19
|
+
};
|
|
20
|
+
if (action.type === "clear") return EMPTY_SELECTION;
|
|
21
|
+
const marked = state.allMatching ? !action.selected : action.selected;
|
|
22
|
+
const others = Object.fromEntries(Object.entries(state.rowSelection).filter(([id]) => id !== action.rowId));
|
|
23
|
+
const rowSelection = marked ? {
|
|
24
|
+
...others,
|
|
25
|
+
[action.rowId]: true
|
|
26
|
+
} : others;
|
|
27
|
+
if (state.allMatching && Object.keys(rowSelection).length >= action.totalRows) return EMPTY_SELECTION;
|
|
28
|
+
return {
|
|
29
|
+
...state,
|
|
30
|
+
rowSelection
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
var markedIds = (state) => Object.keys(state.rowSelection);
|
|
34
|
+
/**
|
|
35
|
+
* How many rows a selection holds, out of `totalRows` matching rows.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* selectionCount({ allMatching: true, rowSelection: { a: true } }, 20); // 19
|
|
39
|
+
*/
|
|
40
|
+
var selectionCount = (state, totalRows) => state.allMatching ? Math.max(totalRows - markedIds(state).length, 0) : markedIds(state).length;
|
|
41
|
+
/**
|
|
42
|
+
* The request a selection sends to the server, or `null` when nothing is selected.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* selectionRequest({ allMatching: false, rowSelection: { a: true } }); // { mode: "ids", ids: ["a"] }
|
|
46
|
+
*/
|
|
47
|
+
var selectionRequest = (state) => {
|
|
48
|
+
const ids = markedIds(state);
|
|
49
|
+
return state.allMatching ? {
|
|
50
|
+
mode: "allMatching",
|
|
51
|
+
excludedIds: ids
|
|
52
|
+
} : ids.length > 0 ? {
|
|
53
|
+
mode: "ids",
|
|
54
|
+
ids
|
|
55
|
+
} : null;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Holds a server-side row selection: checked ids, or every matching row
|
|
59
|
+
* minus the unchecked ones once the reader selects all matching.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* const selection = useRowSelection();
|
|
63
|
+
* selection.toggleRow("a", true, totalRows);
|
|
64
|
+
* exportRows(selection.request());
|
|
65
|
+
*/
|
|
66
|
+
var useRowSelection = () => {
|
|
67
|
+
const $ = c(14);
|
|
68
|
+
const [state, dispatch] = useReducer(selectionReducer, EMPTY_SELECTION);
|
|
69
|
+
let t0;
|
|
70
|
+
if ($[0] !== state.allMatching || $[1] !== state.rowSelection) {
|
|
71
|
+
t0 = (rowId) => {
|
|
72
|
+
const marked = Object.hasOwn(state.rowSelection, rowId);
|
|
73
|
+
return state.allMatching ? !marked : marked;
|
|
74
|
+
};
|
|
75
|
+
$[0] = state.allMatching;
|
|
76
|
+
$[1] = state.rowSelection;
|
|
77
|
+
$[2] = t0;
|
|
78
|
+
} else t0 = $[2];
|
|
79
|
+
let t1;
|
|
80
|
+
let t2;
|
|
81
|
+
let t3;
|
|
82
|
+
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
|
83
|
+
t1 = (rowId_0, selected, totalRows) => {
|
|
84
|
+
dispatch({
|
|
85
|
+
type: "toggleRow",
|
|
86
|
+
rowId: rowId_0,
|
|
87
|
+
selected,
|
|
88
|
+
totalRows
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
t2 = () => {
|
|
92
|
+
dispatch({ type: "allMatching" });
|
|
93
|
+
};
|
|
94
|
+
t3 = () => {
|
|
95
|
+
dispatch({ type: "clear" });
|
|
96
|
+
};
|
|
97
|
+
$[3] = t1;
|
|
98
|
+
$[4] = t2;
|
|
99
|
+
$[5] = t3;
|
|
100
|
+
} else {
|
|
101
|
+
t1 = $[3];
|
|
102
|
+
t2 = $[4];
|
|
103
|
+
t3 = $[5];
|
|
104
|
+
}
|
|
105
|
+
let t4;
|
|
106
|
+
let t5;
|
|
107
|
+
if ($[6] !== state) {
|
|
108
|
+
t4 = (totalRows_0) => selectionCount(state, totalRows_0);
|
|
109
|
+
t5 = () => selectionRequest(state);
|
|
110
|
+
$[6] = state;
|
|
111
|
+
$[7] = t4;
|
|
112
|
+
$[8] = t5;
|
|
113
|
+
} else {
|
|
114
|
+
t4 = $[7];
|
|
115
|
+
t5 = $[8];
|
|
116
|
+
}
|
|
117
|
+
let t6;
|
|
118
|
+
if ($[9] !== state.allMatching || $[10] !== t0 || $[11] !== t4 || $[12] !== t5) {
|
|
119
|
+
t6 = {
|
|
120
|
+
allMatching: state.allMatching,
|
|
121
|
+
isRowSelected: t0,
|
|
122
|
+
toggleRow: t1,
|
|
123
|
+
selectAllMatching: t2,
|
|
124
|
+
clear: t3,
|
|
125
|
+
count: t4,
|
|
126
|
+
request: t5
|
|
127
|
+
};
|
|
128
|
+
$[9] = state.allMatching;
|
|
129
|
+
$[10] = t0;
|
|
130
|
+
$[11] = t4;
|
|
131
|
+
$[12] = t5;
|
|
132
|
+
$[13] = t6;
|
|
133
|
+
} else t6 = $[13];
|
|
134
|
+
return t6;
|
|
135
|
+
};
|
|
136
|
+
export { selectionCount, selectionReducer, selectionRequest, useRowSelection };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { StorageAdapter } from "../storage.ts";
|
|
2
|
+
/** The user's choice. `auto` follows the operating system, live. */
|
|
3
|
+
export type ThemePreference = "auto" | "light" | "dark";
|
|
4
|
+
/** The theme actually applied to the document. */
|
|
5
|
+
export type Theme = "light" | "dark";
|
|
6
|
+
export type UseThemeOptions = Readonly<{
|
|
7
|
+
/** Where the preference persists. */
|
|
8
|
+
storage: StorageAdapter;
|
|
9
|
+
/** The key the preference is stored under. */
|
|
10
|
+
key: string;
|
|
11
|
+
}>;
|
|
12
|
+
export type ThemeControls = Readonly<{
|
|
13
|
+
theme: Theme;
|
|
14
|
+
preference: ThemePreference;
|
|
15
|
+
setPreference: (next: ThemePreference) => void;
|
|
16
|
+
toggle: () => void;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Owns the document's colour theme. The stored preference is `auto` unless set,
|
|
20
|
+
* following the operating system, while `light` and `dark` pin it on `<html>`
|
|
21
|
+
* as `data-theme`. Under `auto` the attribute is absent and the stylesheet's
|
|
22
|
+
* `prefers-color-scheme` queries resolve the theme.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* const { theme, setPreference } = useTheme({ storage, key: "theme" });
|
|
26
|
+
* setPreference("auto");
|
|
27
|
+
*/
|
|
28
|
+
export declare const useTheme: ({ storage, key, }: UseThemeOptions) => ThemeControls;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { useMediaQuery } from "./use-media-query.js";
|
|
2
|
+
import { c } from "react/compiler-runtime";
|
|
3
|
+
import { useEffect, useSyncExternalStore } from "react";
|
|
4
|
+
// src/lib/hooks/use-theme.ts
|
|
5
|
+
var preferenceOf = (stored) => stored === "light" || stored === "dark" ? stored : "auto";
|
|
6
|
+
/**
|
|
7
|
+
* Owns the document's colour theme. The stored preference is `auto` unless set,
|
|
8
|
+
* following the operating system, while `light` and `dark` pin it on `<html>`
|
|
9
|
+
* as `data-theme`. Under `auto` the attribute is absent and the stylesheet's
|
|
10
|
+
* `prefers-color-scheme` queries resolve the theme.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const { theme, setPreference } = useTheme({ storage, key: "theme" });
|
|
14
|
+
* setPreference("auto");
|
|
15
|
+
*/
|
|
16
|
+
var useTheme = (t0) => {
|
|
17
|
+
const $ = c(18);
|
|
18
|
+
const { storage, key } = t0;
|
|
19
|
+
let t1;
|
|
20
|
+
let t2;
|
|
21
|
+
if ($[0] !== key || $[1] !== storage) {
|
|
22
|
+
t1 = (onChange) => storage.subscribe(key, onChange);
|
|
23
|
+
t2 = () => preferenceOf(storage.read(key));
|
|
24
|
+
$[0] = key;
|
|
25
|
+
$[1] = storage;
|
|
26
|
+
$[2] = t1;
|
|
27
|
+
$[3] = t2;
|
|
28
|
+
} else {
|
|
29
|
+
t1 = $[2];
|
|
30
|
+
t2 = $[3];
|
|
31
|
+
}
|
|
32
|
+
const preference = useSyncExternalStore(t1, t2, _temp);
|
|
33
|
+
const prefersDark = useMediaQuery("(prefers-color-scheme: dark)");
|
|
34
|
+
const theme = preference === "auto" ? prefersDark ? "dark" : "light" : preference;
|
|
35
|
+
let t3;
|
|
36
|
+
let t4;
|
|
37
|
+
if ($[4] !== preference) {
|
|
38
|
+
t3 = () => {
|
|
39
|
+
const root = document.documentElement;
|
|
40
|
+
if (preference === "auto") root.removeAttribute("data-theme");
|
|
41
|
+
else root.setAttribute("data-theme", preference);
|
|
42
|
+
};
|
|
43
|
+
t4 = [preference];
|
|
44
|
+
$[4] = preference;
|
|
45
|
+
$[5] = t3;
|
|
46
|
+
$[6] = t4;
|
|
47
|
+
} else {
|
|
48
|
+
t3 = $[5];
|
|
49
|
+
t4 = $[6];
|
|
50
|
+
}
|
|
51
|
+
useEffect(t3, t4);
|
|
52
|
+
let t5;
|
|
53
|
+
if ($[7] !== key || $[8] !== storage) {
|
|
54
|
+
t5 = (next) => {
|
|
55
|
+
storage.write(key, next);
|
|
56
|
+
};
|
|
57
|
+
$[7] = key;
|
|
58
|
+
$[8] = storage;
|
|
59
|
+
$[9] = t5;
|
|
60
|
+
} else t5 = $[9];
|
|
61
|
+
const setPreference = t5;
|
|
62
|
+
let t6;
|
|
63
|
+
if ($[10] !== setPreference || $[11] !== theme) {
|
|
64
|
+
t6 = () => setPreference(theme === "dark" ? "light" : "dark");
|
|
65
|
+
$[10] = setPreference;
|
|
66
|
+
$[11] = theme;
|
|
67
|
+
$[12] = t6;
|
|
68
|
+
} else t6 = $[12];
|
|
69
|
+
let t7;
|
|
70
|
+
if ($[13] !== preference || $[14] !== setPreference || $[15] !== t6 || $[16] !== theme) {
|
|
71
|
+
t7 = {
|
|
72
|
+
theme,
|
|
73
|
+
preference,
|
|
74
|
+
setPreference,
|
|
75
|
+
toggle: t6
|
|
76
|
+
};
|
|
77
|
+
$[13] = preference;
|
|
78
|
+
$[14] = setPreference;
|
|
79
|
+
$[15] = t6;
|
|
80
|
+
$[16] = theme;
|
|
81
|
+
$[17] = t7;
|
|
82
|
+
} else t7 = $[17];
|
|
83
|
+
return t7;
|
|
84
|
+
};
|
|
85
|
+
function _temp() {
|
|
86
|
+
return "auto";
|
|
87
|
+
}
|
|
88
|
+
export { useTheme };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Temporal } from "temporal-polyfill";
|
|
2
|
+
/**
|
|
3
|
+
* The moment an ISO-8601 instant or plain date-time denotes in `timeZone`, or
|
|
4
|
+
* `null` when it parses as neither.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* isoToZonedDateTime("2026-05-26T22:30:00Z", "Europe/Amsterdam"); // 2026-05-27T00:30+02:00
|
|
8
|
+
*/
|
|
9
|
+
export declare const isoToZonedDateTime: (iso: string, timeZone: string) => Temporal.ZonedDateTime | null;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Temporal } from "temporal-polyfill";
|
|
2
|
+
// src/lib/iso-zoned.ts
|
|
3
|
+
var ISO_PARSERS = [(iso, timeZone) => Temporal.Instant.from(iso).toZonedDateTimeISO(timeZone), (iso, timeZone) => Temporal.PlainDateTime.from(iso).toZonedDateTime(timeZone)];
|
|
4
|
+
/**
|
|
5
|
+
* The moment an ISO-8601 instant or plain date-time denotes in `timeZone`, or
|
|
6
|
+
* `null` when it parses as neither.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* isoToZonedDateTime("2026-05-26T22:30:00Z", "Europe/Amsterdam"); // 2026-05-27T00:30+02:00
|
|
10
|
+
*/
|
|
11
|
+
var isoToZonedDateTime = (iso, timeZone) => {
|
|
12
|
+
for (const parse of ISO_PARSERS) try {
|
|
13
|
+
return parse(iso, timeZone);
|
|
14
|
+
} catch {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
};
|
|
19
|
+
export { isoToZonedDateTime };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { OptionsDictionary, Score, TranslationKeys } from "@zxcvbn-ts/core";
|
|
2
|
+
/** A zxcvbn language pack: its dictionaries, and its feedback in that language. */
|
|
3
|
+
export type ZxcvbnLanguagePack = Readonly<{
|
|
4
|
+
dictionary: OptionsDictionary;
|
|
5
|
+
translations: TranslationKeys;
|
|
6
|
+
}>;
|
|
7
|
+
/** Loads a zxcvbn language pack, such as `() => import("@zxcvbn-ts/language-de")`. */
|
|
8
|
+
export type ZxcvbnLanguageLoader = () => Promise<ZxcvbnLanguagePack>;
|
|
9
|
+
/** zxcvbn language pack loaders by lowercase language tag, such as `de` or `nl-be`. */
|
|
10
|
+
export type ZxcvbnLanguages = Readonly<Record<string, ZxcvbnLanguageLoader>>;
|
|
11
|
+
/** How strong a password is, as zxcvbn judged it. */
|
|
12
|
+
export type PasswordStrengthResult = Readonly<{
|
|
13
|
+
/** zxcvbn's 0–4 band. */
|
|
14
|
+
score: Score;
|
|
15
|
+
/** zxcvbn's own warning, in the language pack's language. */
|
|
16
|
+
warning: string;
|
|
17
|
+
/** zxcvbn's own suggestions, in the language pack's language. */
|
|
18
|
+
suggestions: readonly string[];
|
|
19
|
+
}>;
|
|
20
|
+
/**
|
|
21
|
+
* The language pack that serves a locale, with its tag: the locale itself,
|
|
22
|
+
* then its language, then any regional pack of that language. It throws when
|
|
23
|
+
* none does.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* const [tag, load] = resolvePasswordLanguage("nl-NL", { en: loadEn, "nl-be": loadNlBe }); // tag "nl-be"
|
|
27
|
+
*/
|
|
28
|
+
export declare const resolvePasswordLanguage: (locale: string, languages: ZxcvbnLanguages) => readonly [string, ZxcvbnLanguageLoader];
|
|
29
|
+
/**
|
|
30
|
+
* The strength of a password in a locale, or `null` while it is empty. It
|
|
31
|
+
* suspends while the locale's dictionaries load, each language in a chunk of
|
|
32
|
+
* its own; `languages` adds packs to the kit's English and Dutch ones. The
|
|
33
|
+
* first loader a language tag is checked with is the one kept.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* const strength = usePasswordStrength(password, useLocale(), { de: () => import("@zxcvbn-ts/language-de") });
|
|
37
|
+
*/
|
|
38
|
+
export declare const usePasswordStrength: (password: string, locale: string, languages?: ZxcvbnLanguages) => PasswordStrengthResult | null;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { use } from "react";
|
|
2
|
+
// src/lib/password-strength/password-strength.ts
|
|
3
|
+
var BUILT_IN_LANGUAGES = {
|
|
4
|
+
en: () => import("@zxcvbn-ts/language-en"),
|
|
5
|
+
"nl-be": () => import("@zxcvbn-ts/language-nl-be")
|
|
6
|
+
};
|
|
7
|
+
var checks = /* @__PURE__ */ new Map();
|
|
8
|
+
var createCheck = async (load) => {
|
|
9
|
+
const [{ ZxcvbnFactory }, common, pack] = await Promise.all([
|
|
10
|
+
import("@zxcvbn-ts/core"),
|
|
11
|
+
import("@zxcvbn-ts/language-common"),
|
|
12
|
+
load()
|
|
13
|
+
]);
|
|
14
|
+
const zxcvbn = new ZxcvbnFactory({
|
|
15
|
+
dictionary: {
|
|
16
|
+
...common.dictionary,
|
|
17
|
+
...pack.dictionary
|
|
18
|
+
},
|
|
19
|
+
graphs: common.adjacencyGraphs,
|
|
20
|
+
translations: pack.translations,
|
|
21
|
+
useLevenshteinDistance: true
|
|
22
|
+
});
|
|
23
|
+
return (password) => {
|
|
24
|
+
const { score, feedback } = zxcvbn.check(password);
|
|
25
|
+
return {
|
|
26
|
+
score,
|
|
27
|
+
warning: feedback.warning ?? "",
|
|
28
|
+
suggestions: feedback.suggestions
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
var checkFor = (tag, load) => {
|
|
33
|
+
const existing = checks.get(tag);
|
|
34
|
+
if (existing !== void 0) return existing;
|
|
35
|
+
const loading = createCheck(load);
|
|
36
|
+
checks.set(tag, loading);
|
|
37
|
+
return loading;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* The language pack that serves a locale, with its tag: the locale itself,
|
|
41
|
+
* then its language, then any regional pack of that language. It throws when
|
|
42
|
+
* none does.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* const [tag, load] = resolvePasswordLanguage("nl-NL", { en: loadEn, "nl-be": loadNlBe }); // tag "nl-be"
|
|
46
|
+
*/
|
|
47
|
+
var resolvePasswordLanguage = (locale, languages) => {
|
|
48
|
+
const exact = locale.toLowerCase();
|
|
49
|
+
const [language = exact] = exact.split("-");
|
|
50
|
+
const packs = Object.entries(languages);
|
|
51
|
+
const match = packs.find(([tag]) => tag === exact) ?? packs.find(([tag]) => tag === language) ?? packs.find(([tag]) => tag.startsWith(`${language}-`));
|
|
52
|
+
if (match === void 0) throw new Error(`There is no zxcvbn language pack for "${locale}". Pass one to PasswordStrength's \`languages\`.`);
|
|
53
|
+
return match;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* The strength of a password in a locale, or `null` while it is empty. It
|
|
57
|
+
* suspends while the locale's dictionaries load, each language in a chunk of
|
|
58
|
+
* its own; `languages` adds packs to the kit's English and Dutch ones. The
|
|
59
|
+
* first loader a language tag is checked with is the one kept.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* const strength = usePasswordStrength(password, useLocale(), { de: () => import("@zxcvbn-ts/language-de") });
|
|
63
|
+
*/
|
|
64
|
+
var usePasswordStrength = (password, locale, languages = {}) => {
|
|
65
|
+
const [tag, load] = resolvePasswordLanguage(locale, {
|
|
66
|
+
...BUILT_IN_LANGUAGES,
|
|
67
|
+
...languages
|
|
68
|
+
});
|
|
69
|
+
const check = use(checkFor(tag, load));
|
|
70
|
+
return password === "" ? null : check(password);
|
|
71
|
+
};
|
|
72
|
+
export { resolvePasswordLanguage, usePasswordStrength };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type RefCallback } from "react";
|
|
2
|
+
/** What {@link usePopupEdgePadding} hands a positioner. */
|
|
3
|
+
export type PopupEdgePadding = Readonly<{
|
|
4
|
+
/** The positioner's ref, which reads the padding once it mounts. */
|
|
5
|
+
ref: RefCallback<HTMLElement>;
|
|
6
|
+
/** The space to keep from the viewport's edges, in pixels. */
|
|
7
|
+
collisionPadding: number;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Reads a positioned popup's collision padding at runtime from the
|
|
11
|
+
* `--popup-edge-padding` knob, resolved to pixels on the positioner by the
|
|
12
|
+
* `popup.edge-padding` mixin. `0` until the positioner mounts.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* <BasePopover.Positioner
|
|
16
|
+
* {...usePopupEdgePadding()}
|
|
17
|
+
* className={styles.positioner}
|
|
18
|
+
* />
|
|
19
|
+
*/
|
|
20
|
+
export declare const usePopupEdgePadding: () => PopupEdgePadding;
|