@wakastellar/ui 4.0.1 โ 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blocks/_shared/identity/InviteUserPanel.cjs.js +1 -1
- package/dist/blocks/_shared/identity/RoleSelect.cjs.js +1 -1
- package/dist/blocks/_shared/identity/SidePushLayout.cjs.js +1 -1
- package/dist/blocks/activity-timeline/index.cjs.js +1 -1
- package/dist/blocks/activity-timeline/index.es.js +1 -1
- package/dist/blocks/antivirus-dashboard/index.cjs.js +1 -1
- package/dist/blocks/antivirus-dashboard/index.es.js +1 -1
- package/dist/blocks/api-keys-manager/index.cjs.js +1 -1
- package/dist/blocks/apm-overview/index.cjs.js +1 -1
- package/dist/blocks/auth-2fa/index.cjs.js +2 -2
- package/dist/blocks/auth-2fa/index.es.js +1 -1
- package/dist/blocks/avatar-upload/index.cjs.js +1 -1
- package/dist/blocks/avatar-upload/index.es.js +13 -13
- package/dist/blocks/calendar-view/index.cjs.js +1 -1
- package/dist/blocks/calendar-view/index.es.js +1 -1
- package/dist/blocks/chat/index.cjs.js +1 -1
- package/dist/blocks/chat/index.es.js +162 -162
- package/dist/blocks/chat/widget.cjs.js +1 -1
- package/dist/blocks/chat/widget.es.js +19 -13
- package/dist/blocks/chat-interface/index.cjs.js +1 -1
- package/dist/blocks/chat-interface/index.es.js +1 -1
- package/dist/blocks/checkout-flow/index.cjs.js +1 -1
- package/dist/blocks/checkout-flow/index.es.js +1 -1
- package/dist/blocks/cicd-builder/index.cjs.js +1 -1
- package/dist/blocks/clamav-service-status/index.cjs.js +1 -1
- package/dist/blocks/cloud-cost-dashboard/index.cjs.js +1 -1
- package/dist/blocks/container-orchestrator/index.cjs.js +1 -1
- package/dist/blocks/container-orchestrator/index.es.js +2 -1
- package/dist/blocks/dashboard/index.cjs.js +1 -1
- package/dist/blocks/dashboard/index.es.js +2 -2
- package/dist/blocks/dashboard-kpi/index.cjs.js +1 -1
- package/dist/blocks/dashboard-kpi/index.es.js +1 -1
- package/dist/blocks/database-admin/index.cjs.js +1 -1
- package/dist/blocks/deployment-dashboard/index.cjs.js +1 -1
- package/dist/blocks/deployment-dashboard/index.es.js +1 -1
- package/dist/blocks/empty-states/index.cjs.js +1 -1
- package/dist/blocks/empty-states/index.es.js +1 -1
- package/dist/blocks/error-pages/index.cjs.js +1 -1
- package/dist/blocks/error-pages/index.es.js +1 -1
- package/dist/blocks/faq/index.cjs.js +1 -1
- package/dist/blocks/faq/index.es.js +1 -1
- package/dist/blocks/file-manager/index.cjs.js +1 -1
- package/dist/blocks/file-manager/index.es.js +1 -1
- package/dist/blocks/file-scan-uploader/index.cjs.js +1 -1
- package/dist/blocks/file-scan-uploader/index.es.js +2 -2
- package/dist/blocks/footer/index.cjs.js +1 -1
- package/dist/blocks/gitops-sync-status/index.cjs.js +1 -1
- package/dist/blocks/header/index.cjs.js +1 -1
- package/dist/blocks/header/index.es.js +1 -1
- package/dist/blocks/headtab/index.cjs.js +1 -1
- package/dist/blocks/i18n-editor/index.cjs.js +1 -1
- package/dist/blocks/i18n-editor/index.es.js +127 -127
- package/dist/blocks/incident-manager/index.cjs.js +1 -1
- package/dist/blocks/infrastructure-map/index.cjs.js +1 -1
- package/dist/blocks/kanban-board/index.cjs.js +1 -1
- package/dist/blocks/kanban-board/index.es.js +1 -1
- package/dist/blocks/landing/index.cjs.js +1 -1
- package/dist/blocks/landing/index.es.js +1 -1
- package/dist/blocks/language-selector/index.cjs.js +1 -1
- package/dist/blocks/layout/index.cjs.js +1 -1
- package/dist/blocks/login/index.cjs.js +1 -1
- package/dist/blocks/on-call-schedule/index.cjs.js +1 -1
- package/dist/blocks/player-profile/index.cjs.js +1 -1
- package/dist/blocks/player-profile/index.es.js +1 -1
- package/dist/blocks/pricing/index.cjs.js +1 -1
- package/dist/blocks/pricing/index.es.js +1 -1
- package/dist/blocks/profile/index.cjs.js +1 -1
- package/dist/blocks/profile/index.es.js +1 -1
- package/dist/blocks/profile-list/index.cjs.js +1 -1
- package/dist/blocks/quarantine-manager/index.cjs.js +1 -1
- package/dist/blocks/quarantine-manager/index.es.js +1 -1
- package/dist/blocks/release-notes/index.cjs.js +1 -1
- package/dist/blocks/scan-history-log/index.cjs.js +1 -1
- package/dist/blocks/scan-history-log/index.es.js +1 -1
- package/dist/blocks/scan-policy-editor/index.cjs.js +1 -1
- package/dist/blocks/scan-report-generator/index.cjs.js +1 -1
- package/dist/blocks/settings/index.cjs.js +1 -1
- package/dist/blocks/settings/index.es.js +1 -1
- package/dist/blocks/sidebar/index.cjs.js +1 -1
- package/dist/blocks/sidebar/index.es.js +1 -1
- package/dist/blocks/signature-database-manager/index.cjs.js +1 -1
- package/dist/blocks/team-form/index.cjs.js +1 -1
- package/dist/blocks/threat-alert-banner/index.cjs.js +1 -1
- package/dist/blocks/user-management/index.cjs.js +1 -1
- package/dist/blocks/waka-doc-shell/index.cjs.js +1 -1
- package/dist/blocks/wizard/index.cjs.js +1 -1
- package/dist/blocks/wizard/index.es.js +37 -37
- package/dist/charts.cjs.js +1 -1
- package/dist/charts.es.js +8 -8
- package/dist/cli/index.cjs +5 -1
- package/dist/components/DataTable/DataTable.cjs.js +1 -1
- package/dist/components/DataTable/DataTable.es.js +68 -66
- package/dist/components/DataTable/DataTableAdvanced.cjs.js +1 -1
- package/dist/components/DataTable/DataTableColumnResizer.cjs.js +1 -1
- package/dist/components/DataTable/DataTableContextMenu.cjs.js +1 -1
- package/dist/components/DataTable/DataTableEditCell.cjs.js +1 -1
- package/dist/components/DataTable/DataTableFilters.cjs.js +1 -1
- package/dist/components/DataTable/DataTableGrouping.cjs.js +1 -1
- package/dist/components/DataTable/DataTablePagination.cjs.js +1 -1
- package/dist/components/DataTable/DataTablePagination.d.ts +3 -1
- package/dist/components/DataTable/DataTablePagination.es.js +38 -27
- package/dist/components/DataTable/DataTableSelection.cjs.js +1 -1
- package/dist/components/DataTable/DataTableToolbar.cjs.js +1 -1
- package/dist/components/DataTable/hooks/useDataTable.cjs.js +1 -1
- package/dist/components/DataTable/hooks/useDataTable.es.js +5 -1
- package/dist/components/DataTable/hooks/useDataTableAdvanced.cjs.js +1 -1
- package/dist/components/DataTable/hooks/useDataTableEdit.cjs.js +1 -1
- package/dist/components/DataTable/hooks/useDataTableExport.cjs.js +2 -2
- package/dist/components/DataTable/hooks/useDataTableImport.cjs.js +2 -2
- package/dist/components/DataTable/hooks/useDataTableImport.es.js +2 -1
- package/dist/components/DataTable/hooks/useDataTableTheme.cjs.js +1 -1
- package/dist/components/DataTable/hooks/useDataTableVirtualization.cjs.js +1 -1
- package/dist/components/DataTable/hooks/useTableLayout.cjs.js +1 -1
- package/dist/components/DataTable/utils.cjs.js +1 -1
- package/dist/components/accordion/index.cjs.js +1 -1
- package/dist/components/alert/index.cjs.js +1 -1
- package/dist/components/alert-dialog/index.cjs.js +1 -1
- package/dist/components/aspect-ratio/index.cjs.js +1 -1
- package/dist/components/avatar/index.cjs.js +1 -1
- package/dist/components/badge/index.cjs.js +1 -1
- package/dist/components/button/index.cjs.js +1 -1
- package/dist/components/calendar/index.cjs.js +1 -1
- package/dist/components/card/index.cjs.js +1 -1
- package/dist/components/checkbox/index.cjs.js +1 -1
- package/dist/components/code/index.cjs.js +2 -2
- package/dist/components/code/index.es.js +3 -2
- package/dist/components/collapsible/index.cjs.js +1 -1
- package/dist/components/command/index.cjs.js +1 -1
- package/dist/components/context-menu/index.cjs.js +1 -1
- package/dist/components/dialog/index.cjs.js +1 -1
- package/dist/components/dropdown-menu/index.cjs.js +1 -1
- package/dist/components/editor/blocks/index.cjs.js +1 -1
- package/dist/components/editor/blocks/index.es.js +12 -12
- package/dist/components/editor/blocks/waka-acceptance-criteria-block.cjs.js +1 -1
- package/dist/components/editor/blocks/waka-ai-assist-block.cjs.js +1 -1
- package/dist/components/editor/blocks/waka-api-endpoint-block.cjs.js +1 -1
- package/dist/components/editor/blocks/waka-code-playground-block.cjs.js +1 -1
- package/dist/components/editor/blocks/waka-comment-thread-block.cjs.js +1 -1
- package/dist/components/editor/blocks/waka-diagram-block.cjs.js +3 -3
- package/dist/components/editor/blocks/waka-diagram-block.es.js +21 -40
- package/dist/components/editor/blocks/waka-embed-block.cjs.js +1 -1
- package/dist/components/editor/blocks/waka-slash-menu-block.cjs.js +1 -1
- package/dist/components/editor/blocks/waka-user-story-block.cjs.js +1 -1
- package/dist/components/editor/blocks/waka-version-diff-block.cjs.js +1 -1
- package/dist/components/editor/waka-ai-writer.cjs.js +1 -1
- package/dist/components/editor/waka-collaborative-editor.cjs.js +1 -1
- package/dist/components/editor/waka-diff-viewer.cjs.js +1 -1
- package/dist/components/editor/waka-dnd-editor.cjs.js +1 -1
- package/dist/components/editor/waka-document-editor.cjs.js +1 -1
- package/dist/components/editor/waka-document-editor.es.js +1 -1
- package/dist/components/editor/waka-editor-elements.cjs.js +1 -1
- package/dist/components/editor/waka-editor-leaves.cjs.js +1 -1
- package/dist/components/editor/waka-editor-toolbar.cjs.js +1 -1
- package/dist/components/editor/waka-editor.cjs.js +1 -1
- package/dist/components/editor/waka-floating-toolbar.cjs.js +1 -1
- package/dist/components/editor/waka-markdown-editor.cjs.js +1 -1
- package/dist/components/editor/waka-mention-editor.cjs.js +1 -1
- package/dist/components/editor/waka-mention-editor.es.js +2 -2
- package/dist/components/editor/waka-slash-menu.cjs.js +1 -1
- package/dist/components/editor/waka-spec-editor.cjs.js +1 -1
- package/dist/components/form/index.cjs.js +1 -1
- package/dist/components/hover-card/index.cjs.js +1 -1
- package/dist/components/input/index.cjs.js +1 -1
- package/dist/components/input-otp/index.cjs.js +1 -1
- package/dist/components/input-otp/index.es.js +2 -1
- package/dist/components/label/index.cjs.js +1 -1
- package/dist/components/language-selector/index.cjs.js +1 -1
- package/dist/components/menubar/index.cjs.js +1 -1
- package/dist/components/navigation-menu/index.cjs.js +1 -1
- package/dist/components/popover/index.cjs.js +1 -1
- package/dist/components/progress/index.cjs.js +1 -1
- package/dist/components/radio-group/index.cjs.js +1 -1
- package/dist/components/resizable/index.cjs.js +1 -1
- package/dist/components/resizable/index.es.js +9 -9
- package/dist/components/scroll-area/index.cjs.js +1 -1
- package/dist/components/select/index.cjs.js +1 -1
- package/dist/components/separator/index.cjs.js +1 -1
- package/dist/components/sheet/index.cjs.js +1 -1
- package/dist/components/skeleton/index.cjs.js +1 -1
- package/dist/components/slider/index.cjs.js +1 -1
- package/dist/components/switch/index.cjs.js +1 -1
- package/dist/components/table/index.cjs.js +1 -1
- package/dist/components/tabs/index.cjs.js +1 -1
- package/dist/components/textarea/index.cjs.js +1 -1
- package/dist/components/theme-selector/index.cjs.js +1 -1
- package/dist/components/toast/index.cjs.js +1 -1
- package/dist/components/toaster/index.cjs.js +1 -1
- package/dist/components/toggle/index.cjs.js +1 -1
- package/dist/components/toggle-group/index.cjs.js +1 -1
- package/dist/components/tooltip/index.cjs.js +1 -1
- package/dist/components/typography/index.cjs.js +1 -1
- package/dist/components/waka-3d-pie-chart/index.cjs.js +1 -1
- package/dist/components/waka-3d-pie-chart/index.es.js +1 -1
- package/dist/components/waka-achievement-unlock/index.cjs.js +1 -1
- package/dist/components/waka-achievement-unlock/index.es.js +1 -1
- package/dist/components/waka-activity-feed/index.cjs.js +2 -2
- package/dist/components/waka-activity-feed/index.es.js +1 -1
- package/dist/components/waka-ad-banner/index.cjs.js +1 -1
- package/dist/components/waka-ad-banner/index.es.js +18 -15
- package/dist/components/waka-ad-fallback/index.cjs.js +1 -1
- package/dist/components/waka-ad-fallback/index.es.js +1 -1
- package/dist/components/waka-ad-inline/index.cjs.js +1 -1
- package/dist/components/waka-ad-inline/index.es.js +2 -2
- package/dist/components/waka-ad-interstitial/index.cjs.js +1 -1
- package/dist/components/waka-ad-interstitial/index.es.js +3 -3
- package/dist/components/waka-ad-placeholder/index.cjs.js +2 -2
- package/dist/components/waka-ad-placeholder/index.es.js +1 -1
- package/dist/components/waka-ad-provider/index.cjs.js +1 -1
- package/dist/components/waka-ad-provider/index.es.js +1 -1
- package/dist/components/waka-ad-sidebar/index.cjs.js +1 -1
- package/dist/components/waka-ad-sidebar/index.es.js +2 -2
- package/dist/components/waka-ad-sticky-footer/index.cjs.js +1 -1
- package/dist/components/waka-ad-sticky-footer/index.es.js +2 -2
- package/dist/components/waka-address-autocomplete/index.cjs.js +2 -2
- package/dist/components/waka-address-autocomplete/index.es.js +10 -6
- package/dist/components/waka-admincrumb/index.cjs.js +1 -1
- package/dist/components/waka-alert-panel/index.cjs.js +1 -1
- package/dist/components/waka-alert-stack/index.cjs.js +1 -1
- package/dist/components/waka-alert-stack/index.es.js +1 -1
- package/dist/components/waka-allocation-matrix/index.cjs.js +2 -2
- package/dist/components/waka-allocation-matrix/index.es.js +1 -1
- package/dist/components/waka-approval-chain/index.cjs.js +1 -1
- package/dist/components/waka-approval-chain/index.es.js +1 -1
- package/dist/components/waka-artifact-list/index.cjs.js +1 -1
- package/dist/components/waka-artifact-list/index.es.js +1 -1
- package/dist/components/waka-audit-log/index.cjs.js +2 -2
- package/dist/components/waka-audit-log/index.es.js +1 -1
- package/dist/components/waka-autocomplete/index.cjs.js +1 -1
- package/dist/components/waka-autocomplete/index.es.js +3 -2
- package/dist/components/waka-badge-showcase/index.cjs.js +1 -1
- package/dist/components/waka-barcode/index.cjs.js +1 -1
- package/dist/components/waka-barcode/index.es.js +1 -1
- package/dist/components/waka-biometric-prompt/index.cjs.js +2 -2
- package/dist/components/waka-biometric-prompt/index.es.js +1 -1
- package/dist/components/waka-bottom-sheet/index.cjs.js +1 -1
- package/dist/components/waka-bottom-sheet/index.es.js +12 -7
- package/dist/components/waka-breadcrumb/index.cjs.js +1 -1
- package/dist/components/waka-breadcrumb/index.es.js +1 -1
- package/dist/components/waka-breadcrumb-path/index.cjs.js +1 -1
- package/dist/components/waka-breadcrumb-path/index.es.js +1 -1
- package/dist/components/waka-budget-burn/index.cjs.js +2 -2
- package/dist/components/waka-budget-burn/index.es.js +3 -3
- package/dist/components/waka-build-matrix/index.cjs.js +1 -1
- package/dist/components/waka-capacity-planner/index.cjs.js +2 -2
- package/dist/components/waka-capacity-planner/index.es.js +1 -1
- package/dist/components/waka-carousel/index.cjs.js +1 -1
- package/dist/components/waka-carousel/index.es.js +2 -2
- package/dist/components/waka-cart-summary/index.cjs.js +1 -1
- package/dist/components/waka-cart-summary/index.es.js +2 -2
- package/dist/components/waka-challenge-timer/index.cjs.js +1 -1
- package/dist/components/waka-charts/WakaAreaChart.cjs.js +1 -1
- package/dist/components/waka-charts/WakaAreaChart.es.js +2 -2
- package/dist/components/waka-charts/WakaBarChart.cjs.js +1 -1
- package/dist/components/waka-charts/WakaBarChart.es.js +2 -2
- package/dist/components/waka-charts/WakaChart.cjs.js +1 -1
- package/dist/components/waka-charts/WakaChart.es.js +1 -1
- package/dist/components/waka-charts/WakaLineChart.cjs.js +1 -1
- package/dist/components/waka-charts/WakaLineChart.es.js +2 -2
- package/dist/components/waka-charts/WakaMiniChart.cjs.js +1 -1
- package/dist/components/waka-charts/WakaMiniChart.es.js +2 -2
- package/dist/components/waka-charts/WakaPieChart.cjs.js +1 -1
- package/dist/components/waka-charts/WakaPieChart.es.js +2 -2
- package/dist/components/waka-charts/WakaSparkline.cjs.js +1 -1
- package/dist/components/waka-charts/WakaSparkline.es.js +1 -1
- package/dist/components/waka-charts/dataTableHelpers.cjs.js +1 -1
- package/dist/components/waka-charts/dataTableHelpers.es.js +1 -1
- package/dist/components/waka-charts/hooks/useChartTheme.cjs.js +1 -1
- package/dist/components/waka-charts/hooks/useChartTheme.es.js +1 -1
- package/dist/components/waka-charts/hooks/useRechartsLoader.cjs.js +1 -1
- package/dist/components/waka-charts/hooks/useRechartsLoader.es.js +1 -1
- package/dist/components/waka-chat-bubble/index.cjs.js +1 -1
- package/dist/components/waka-checklist/index.cjs.js +2 -2
- package/dist/components/waka-checklist/index.es.js +1 -1
- package/dist/components/waka-checkout-stepper/index.cjs.js +1 -1
- package/dist/components/waka-checkout-stepper/index.es.js +1 -1
- package/dist/components/waka-cohort-table/index.cjs.js +2 -2
- package/dist/components/waka-cohort-table/index.es.js +1 -1
- package/dist/components/waka-color-picker/index.cjs.js +2 -2
- package/dist/components/waka-color-picker/index.es.js +1 -1
- package/dist/components/waka-combo-counter/index.cjs.js +1 -1
- package/dist/components/waka-combobox/index.cjs.js +1 -1
- package/dist/components/waka-combobox/index.es.js +3 -2
- package/dist/components/waka-command-bar/index.cjs.js +1 -1
- package/dist/components/waka-compare-period/index.cjs.js +2 -2
- package/dist/components/waka-compare-period/index.es.js +7 -5
- package/dist/components/waka-config-comparator/index.cjs.js +1 -1
- package/dist/components/waka-config-comparator/index.es.js +1 -1
- package/dist/components/waka-connection-matrix/index.cjs.js +1 -1
- package/dist/components/waka-connection-matrix/index.es.js +1 -1
- package/dist/components/waka-container-list/index.cjs.js +1 -1
- package/dist/components/waka-container-list/index.es.js +1 -1
- package/dist/components/waka-content-recommendation/index.cjs.js +1 -1
- package/dist/components/waka-content-recommendation/index.es.js +2 -2
- package/dist/components/waka-contribution-graph/index.cjs.js +1 -1
- package/dist/components/waka-contribution-graph/index.es.js +4 -4
- package/dist/components/waka-cost-breakdown/index.cjs.js +1 -1
- package/dist/components/waka-cost-breakdown/index.es.js +7 -7
- package/dist/components/waka-coupon-input/index.cjs.js +2 -2
- package/dist/components/waka-coupon-input/index.es.js +1 -1
- package/dist/components/waka-credit-activity-feed/index.cjs.js +2 -2
- package/dist/components/waka-credit-activity-feed/index.es.js +1 -1
- package/dist/components/waka-credit-alert/index.cjs.js +1 -1
- package/dist/components/waka-credit-alert/index.es.js +1 -1
- package/dist/components/waka-credit-balance/index.cjs.js +1 -1
- package/dist/components/waka-credit-balance/index.es.js +3 -3
- package/dist/components/waka-credit-breakdown/index.cjs.js +1 -1
- package/dist/components/waka-credit-breakdown/index.es.js +1 -1
- package/dist/components/waka-credit-burn-rate/index.cjs.js +1 -1
- package/dist/components/waka-credit-burn-rate/index.es.js +1 -1
- package/dist/components/waka-credit-card-input/index.cjs.js +1 -1
- package/dist/components/waka-credit-card-input/index.es.js +1 -1
- package/dist/components/waka-credit-history/index.cjs.js +1 -1
- package/dist/components/waka-credit-history/index.es.js +1 -1
- package/dist/components/waka-credit-meter/index.cjs.js +2 -2
- package/dist/components/waka-credit-meter/index.es.js +3 -3
- package/dist/components/waka-credit-pricing-pack/index.cjs.js +1 -1
- package/dist/components/waka-credit-pricing-pack/index.es.js +1 -1
- package/dist/components/waka-credit-projection/index.cjs.js +1 -1
- package/dist/components/waka-credit-projection/index.es.js +1 -1
- package/dist/components/waka-credit-quota/index.cjs.js +1 -1
- package/dist/components/waka-credit-quota/index.es.js +3 -3
- package/dist/components/waka-credit-receipt/index.cjs.js +1 -1
- package/dist/components/waka-credit-receipt/index.es.js +1 -1
- package/dist/components/waka-credit-top-up/index.cjs.js +1 -1
- package/dist/components/waka-credit-top-up/index.es.js +1 -1
- package/dist/components/waka-credit-transaction/index.cjs.js +1 -1
- package/dist/components/waka-credit-transaction/index.es.js +1 -1
- package/dist/components/waka-credit-transfer-form/index.cjs.js +1 -1
- package/dist/components/waka-credit-transfer-form/index.es.js +1 -1
- package/dist/components/waka-credit-usage-chart/index.cjs.js +1 -1
- package/dist/components/waka-credit-usage-chart/index.es.js +1 -1
- package/dist/components/waka-daily-reward/index.cjs.js +1 -1
- package/dist/components/waka-database-card/index.cjs.js +1 -1
- package/dist/components/waka-database-card/index.es.js +1 -1
- package/dist/components/waka-date-range-picker/index.cjs.js +1 -1
- package/dist/components/waka-date-range-picker/index.es.js +3 -2
- package/dist/components/waka-datetime-picker/index.cjs.js +1 -1
- package/dist/components/waka-datetime-picker/index.es.js +4 -1
- package/dist/components/waka-datetime-picker.form-integration/index.cjs.js +1 -1
- package/dist/components/waka-dependency-tree/index.cjs.js +1 -1
- package/dist/components/waka-dependency-tree/index.es.js +1 -1
- package/dist/components/waka-deployment-lane/index.cjs.js +1 -1
- package/dist/components/waka-deployment-lane/index.es.js +1 -1
- package/dist/components/waka-device-trust/index.cjs.js +2 -2
- package/dist/components/waka-device-trust/index.es.js +1 -1
- package/dist/components/waka-doc-breadcrumb/index.cjs.js +1 -1
- package/dist/components/waka-doc-callout/index.cjs.js +1 -1
- package/dist/components/waka-doc-code-block/index.cjs.js +1 -1
- package/dist/components/waka-doc-nav/index.cjs.js +1 -1
- package/dist/components/waka-doc-renderer/index.cjs.js +1 -1
- package/dist/components/waka-doc-search/index.cjs.js +1 -1
- package/dist/components/waka-doc-table/index.cjs.js +1 -1
- package/dist/components/waka-doc-toc/index.cjs.js +1 -1
- package/dist/components/waka-doc-toolbar/index.cjs.js +1 -1
- package/dist/components/waka-doc-version/index.cjs.js +1 -1
- package/dist/components/waka-dock/index.cjs.js +1 -1
- package/dist/components/waka-dock/index.es.js +2 -2
- package/dist/components/waka-drawer/index.cjs.js +1 -1
- package/dist/components/waka-drawer/index.es.js +1 -1
- package/dist/components/waka-empty-state/index.cjs.js +1 -1
- package/dist/components/waka-env-var-editor/index.cjs.js +1 -1
- package/dist/components/waka-error-shake/index.cjs.js +1 -1
- package/dist/components/waka-feature-announcement/index.cjs.js +2 -2
- package/dist/components/waka-feature-announcement/index.es.js +1 -1
- package/dist/components/waka-feature-flag-row/index.cjs.js +1 -1
- package/dist/components/waka-file-upload/index.cjs.js +1 -1
- package/dist/components/waka-file-upload/index.es.js +2 -2
- package/dist/components/waka-floating-nav/index.cjs.js +1 -1
- package/dist/components/waka-floating-nav/index.es.js +1 -1
- package/dist/components/waka-flow-diagram/index.cjs.js +1 -1
- package/dist/components/waka-funnel-chart/index.cjs.js +2 -2
- package/dist/components/waka-funnel-chart/index.es.js +1 -1
- package/dist/components/waka-glow-card/index.cjs.js +1 -1
- package/dist/components/waka-glow-card/index.es.js +3 -3
- package/dist/components/waka-goal-progress/index.cjs.js +3 -3
- package/dist/components/waka-goal-progress/index.es.js +3 -3
- package/dist/components/waka-haptic-button/index.cjs.js +1 -1
- package/dist/components/waka-health-pulse/index.cjs.js +2 -2
- package/dist/components/waka-health-pulse/index.es.js +1 -1
- package/dist/components/waka-heatmap/index.cjs.js +1 -1
- package/dist/components/waka-heatmap/index.es.js +3 -3
- package/dist/components/waka-hotspot/index.cjs.js +1 -1
- package/dist/components/waka-image/index.cjs.js +1 -1
- package/dist/components/waka-image/index.es.js +1 -1
- package/dist/components/waka-incident-timeline/index.cjs.js +1 -1
- package/dist/components/waka-incident-timeline/index.es.js +3 -2
- package/dist/components/waka-invoice-preview/index.cjs.js +1 -1
- package/dist/components/waka-invoice-preview/index.es.js +1 -1
- package/dist/components/waka-kanban/index.cjs.js +1 -1
- package/dist/components/waka-kanban/index.es.js +1 -1
- package/dist/components/waka-kpi-dashboard/index.cjs.js +1 -1
- package/dist/components/waka-kpi-dashboard/index.es.js +6 -4
- package/dist/components/waka-kubernetes-overview/index.cjs.js +1 -1
- package/dist/components/waka-kubernetes-overview/index.es.js +1 -1
- package/dist/components/waka-leaderboard/index.cjs.js +1 -1
- package/dist/components/waka-level-progress/index.cjs.js +2 -2
- package/dist/components/waka-level-progress/index.es.js +2 -2
- package/dist/components/waka-liquid-button/index.cjs.js +1 -1
- package/dist/components/waka-loading-orbit/index.cjs.js +1 -1
- package/dist/components/waka-log-viewer/index.cjs.js +1 -1
- package/dist/components/waka-loot-box/index.cjs.js +2 -2
- package/dist/components/waka-loot-box/index.es.js +1 -1
- package/dist/components/waka-magic-link/index.cjs.js +2 -2
- package/dist/components/waka-magnetic-button/index.cjs.js +1 -1
- package/dist/components/waka-mention-input/index.cjs.js +1 -1
- package/dist/components/waka-mention-input/index.es.js +52 -40
- package/dist/components/waka-metric-sparkline/index.cjs.js +1 -1
- package/dist/components/waka-metric-sparkline/index.es.js +1 -1
- package/dist/components/waka-migration-list/index.cjs.js +1 -1
- package/dist/components/waka-milestone-road/index.cjs.js +2 -2
- package/dist/components/waka-milestone-road/index.es.js +5 -5
- package/dist/components/waka-modal/index.cjs.js +1 -1
- package/dist/components/waka-modal/index.es.js +1 -1
- package/dist/components/waka-morph-button/index.cjs.js +2 -2
- package/dist/components/waka-morph-button/index.es.js +6 -2
- package/dist/components/waka-network-topology/index.cjs.js +1 -1
- package/dist/components/waka-network-topology/index.es.js +4 -2
- package/dist/components/waka-notifications/index.cjs.js +1 -1
- package/dist/components/waka-number-input/index.cjs.js +1 -1
- package/dist/components/waka-number-input/index.es.js +1 -1
- package/dist/components/waka-orbital-menu/index.cjs.js +1 -1
- package/dist/components/waka-orbital-menu/index.es.js +1 -1
- package/dist/components/waka-order-tracker/index.cjs.js +1 -1
- package/dist/components/waka-order-tracker/index.es.js +3 -2
- package/dist/components/waka-outstream-video/index.cjs.js +1 -1
- package/dist/components/waka-outstream-video/index.es.js +2 -2
- package/dist/components/waka-pagination/index.cjs.js +1 -1
- package/dist/components/waka-pagination/index.es.js +1 -1
- package/dist/components/waka-password-strength/index.cjs.js +2 -2
- package/dist/components/waka-password-strength/index.es.js +3 -3
- package/dist/components/waka-payment-method-picker/index.cjs.js +1 -1
- package/dist/components/waka-payment-method-picker/index.es.js +1 -1
- package/dist/components/waka-permission-matrix/index.cjs.js +2 -2
- package/dist/components/waka-permission-matrix/index.es.js +3 -2
- package/dist/components/waka-phone-input/index.cjs.js +1 -1
- package/dist/components/waka-phone-input/index.es.js +5 -3
- package/dist/components/waka-pipeline-view/index.cjs.js +2 -2
- package/dist/components/waka-pipeline-view/index.es.js +1 -1
- package/dist/components/waka-player-card/index.cjs.js +2 -2
- package/dist/components/waka-player-card/index.es.js +4 -4
- package/dist/components/waka-pod-card/index.cjs.js +1 -1
- package/dist/components/waka-pod-card/index.es.js +1 -1
- package/dist/components/waka-points-popup/index.cjs.js +1 -1
- package/dist/components/waka-points-popup/index.es.js +5 -1
- package/dist/components/waka-power-up/index.cjs.js +1 -1
- package/dist/components/waka-presence-indicator/index.cjs.js +2 -2
- package/dist/components/waka-presence-indicator/index.es.js +1 -1
- package/dist/components/waka-pricing-table/index.cjs.js +2 -2
- package/dist/components/waka-pricing-table/index.es.js +1 -1
- package/dist/components/waka-product-card/index.cjs.js +1 -1
- package/dist/components/waka-progress-onboarding/index.cjs.js +3 -3
- package/dist/components/waka-progress-onboarding/index.es.js +1 -1
- package/dist/components/waka-pull-to-refresh/index.cjs.js +1 -1
- package/dist/components/waka-qrcode/index.cjs.js +1 -1
- package/dist/components/waka-qrcode/index.es.js +1 -1
- package/dist/components/waka-query-explain/index.cjs.js +1 -1
- package/dist/components/waka-quest-card/index.cjs.js +2 -2
- package/dist/components/waka-quest-card/index.es.js +4 -1
- package/dist/components/waka-quota-bar/index.cjs.js +2 -2
- package/dist/components/waka-quota-bar/index.es.js +11 -4
- package/dist/components/waka-radar-score/index.cjs.js +1 -1
- package/dist/components/waka-radar-score/index.es.js +6 -6
- package/dist/components/waka-rank-badge/index.cjs.js +2 -2
- package/dist/components/waka-rank-badge/index.es.js +1 -1
- package/dist/components/waka-rating-input/index.cjs.js +2 -2
- package/dist/components/waka-rating-input/index.es.js +1 -1
- package/dist/components/waka-reaction-picker/index.cjs.js +1 -1
- package/dist/components/waka-reaction-picker/index.es.js +7 -4
- package/dist/components/waka-region-map/index.cjs.js +1 -1
- package/dist/components/waka-region-map/index.es.js +1 -1
- package/dist/components/waka-resource-gauge/index.cjs.js +2 -2
- package/dist/components/waka-resource-gauge/index.es.js +3 -3
- package/dist/components/waka-resource-pool/index.cjs.js +2 -2
- package/dist/components/waka-resource-pool/index.es.js +1 -1
- package/dist/components/waka-rich-text-editor/index.cjs.js +1 -1
- package/dist/components/waka-rich-text-editor/index.es.js +1 -1
- package/dist/components/waka-rollback-slider/index.cjs.js +2 -2
- package/dist/components/waka-rollback-slider/index.es.js +5 -3
- package/dist/components/waka-sankey-diagram/index.cjs.js +2 -2
- package/dist/components/waka-sankey-diagram/index.es.js +5 -5
- package/dist/components/waka-schedule-picker/index.cjs.js +1 -1
- package/dist/components/waka-schedule-picker/index.es.js +3 -2
- package/dist/components/waka-scratch-card/index.cjs.js +2 -2
- package/dist/components/waka-scratch-card/index.es.js +1 -1
- package/dist/components/waka-season-pass/index.cjs.js +1 -1
- package/dist/components/waka-secret-card/index.cjs.js +1 -1
- package/dist/components/waka-security-scan-result/index.cjs.js +1 -1
- package/dist/components/waka-security-score/index.cjs.js +2 -2
- package/dist/components/waka-security-score/index.es.js +5 -5
- package/dist/components/waka-segmented-control/index.cjs.js +1 -1
- package/dist/components/waka-segmented-control/index.es.js +1 -1
- package/dist/components/waka-server-rack/index.cjs.js +1 -1
- package/dist/components/waka-service-graph/index.cjs.js +1 -1
- package/dist/components/waka-session-manager/index.cjs.js +1 -1
- package/dist/components/waka-session-manager/index.es.js +3 -2
- package/dist/components/waka-signature-pad/index.cjs.js +1 -1
- package/dist/components/waka-signature-pad/index.es.js +1 -1
- package/dist/components/waka-skeleton-wave/index.cjs.js +1 -1
- package/dist/components/waka-skill-tree/index.cjs.js +2 -2
- package/dist/components/waka-skill-tree/index.es.js +32 -32
- package/dist/components/waka-sla-tracker/index.cjs.js +1 -1
- package/dist/components/waka-sla-tracker/index.es.js +1 -1
- package/dist/components/waka-slider-range/index.cjs.js +1 -1
- package/dist/components/waka-slider-range/index.es.js +3 -3
- package/dist/components/waka-spin-wheel/index.cjs.js +2 -2
- package/dist/components/waka-spin-wheel/index.es.js +6 -6
- package/dist/components/waka-spinner/index.cjs.js +1 -1
- package/dist/components/waka-sponsored-badge/index.cjs.js +1 -1
- package/dist/components/waka-sponsored-badge/index.es.js +1 -1
- package/dist/components/waka-sponsored-card/index.cjs.js +1 -1
- package/dist/components/waka-sponsored-card/index.es.js +2 -2
- package/dist/components/waka-sponsored-feed/index.cjs.js +1 -1
- package/dist/components/waka-sponsored-feed/index.es.js +2 -2
- package/dist/components/waka-spotlight/index.cjs.js +1 -1
- package/dist/components/waka-spotlight/index.es.js +2 -1
- package/dist/components/waka-stat/index.cjs.js +1 -1
- package/dist/components/waka-stat/index.es.js +1 -1
- package/dist/components/waka-stats-hexagon/index.cjs.js +1 -1
- package/dist/components/waka-stats-hexagon/index.es.js +9 -9
- package/dist/components/waka-status-matrix/index.cjs.js +1 -1
- package/dist/components/waka-status-matrix/index.es.js +1 -1
- package/dist/components/waka-stepper/index.cjs.js +1 -1
- package/dist/components/waka-stepper/index.es.js +1 -1
- package/dist/components/waka-streak-counter/index.cjs.js +1 -1
- package/dist/components/waka-success-explosion/index.cjs.js +1 -1
- package/dist/components/waka-swipe-card/index.cjs.js +1 -1
- package/dist/components/waka-swipe-card/index.es.js +2 -2
- package/dist/components/waka-tabs-morph/index.cjs.js +1 -1
- package/dist/components/waka-tabs-morph/index.es.js +1 -1
- package/dist/components/waka-tag-input/index.cjs.js +1 -1
- package/dist/components/waka-tag-input/index.es.js +3 -2
- package/dist/components/waka-team-banner/index.cjs.js +2 -2
- package/dist/components/waka-team-banner/index.es.js +1 -1
- package/dist/components/waka-terminal-output/index.cjs.js +2 -2
- package/dist/components/waka-terminal-output/index.es.js +5 -3
- package/dist/components/waka-test-report/index.cjs.js +1 -1
- package/dist/components/waka-theme-creator/index.cjs.js +1 -1
- package/dist/components/waka-theme-manager/index.cjs.js +1 -1
- package/dist/components/waka-theme-manager/index.es.js +5 -2
- package/dist/components/waka-thread-view/index.cjs.js +2 -2
- package/dist/components/waka-thread-view/index.es.js +1 -1
- package/dist/components/waka-tilt-card/index.cjs.js +1 -1
- package/dist/components/waka-tilt-card/index.es.js +8 -6
- package/dist/components/waka-time-picker/index.cjs.js +1 -1
- package/dist/components/waka-time-picker/index.es.js +10 -6
- package/dist/components/waka-timeline/index.cjs.js +1 -1
- package/dist/components/waka-timeline/index.es.js +1 -1
- package/dist/components/waka-tooltip-tour/index.cjs.js +3 -3
- package/dist/components/waka-tooltip-tour/index.es.js +53 -51
- package/dist/components/waka-tour-guide/index.cjs.js +2 -2
- package/dist/components/waka-tour-guide/index.es.js +1 -1
- package/dist/components/waka-tournament-bracket/index.cjs.js +2 -2
- package/dist/components/waka-tournament-bracket/index.es.js +1 -1
- package/dist/components/waka-trace-viewer/index.cjs.js +1 -1
- package/dist/components/waka-tree/index.cjs.js +1 -1
- package/dist/components/waka-tree/index.es.js +1 -1
- package/dist/components/waka-treemap-chart/index.cjs.js +1 -1
- package/dist/components/waka-treemap-chart/index.es.js +1 -1
- package/dist/components/waka-two-factor-setup/index.cjs.js +2 -2
- package/dist/components/waka-two-factor-setup/index.es.js +5 -4
- package/dist/components/waka-typewriter/index.cjs.js +1 -1
- package/dist/components/waka-typewriter/index.es.js +7 -2
- package/dist/components/waka-typing-indicator/index.cjs.js +2 -2
- package/dist/components/waka-typing-indicator/index.es.js +1 -1
- package/dist/components/waka-versus-card/index.cjs.js +3 -3
- package/dist/components/waka-versus-card/index.es.js +5 -4
- package/dist/components/waka-video/index.cjs.js +1 -1
- package/dist/components/waka-video/index.es.js +1 -1
- package/dist/components/waka-video-ad/index.cjs.js +1 -1
- package/dist/components/waka-video-ad/index.es.js +3 -3
- package/dist/components/waka-video-call/index.cjs.js +2 -2
- package/dist/components/waka-video-call/index.es.js +1 -1
- package/dist/components/waka-video-overlay/index.cjs.js +1 -1
- package/dist/components/waka-video-overlay/index.es.js +2 -2
- package/dist/components/waka-virtual-list/index.cjs.js +1 -1
- package/dist/components/waka-virtual-list/index.es.js +1 -1
- package/dist/components/waka-voice-message/index.cjs.js +1 -1
- package/dist/components/waka-voice-message/index.es.js +6 -5
- package/dist/components/waka-welcome-modal/index.cjs.js +2 -2
- package/dist/components/waka-welcome-modal/index.es.js +1 -1
- package/dist/components/waka-xp-bar/index.cjs.js +1 -1
- package/dist/components/waka-xp-bar/index.es.js +2 -2
- package/dist/context/admincrumb-context.cjs.js +1 -1
- package/dist/context/language-context.cjs.js +1 -1
- package/dist/context/language-context.es.js +2 -2
- package/dist/context/theme-context.cjs.js +1 -1
- package/dist/context/theme-provider.cjs.js +1 -1
- package/dist/context/theme-provider.es.js +9 -6
- package/dist/context/waka-provider.cjs.js +1 -1
- package/dist/context/waka-provider.es.js +57 -53
- package/dist/doc.cjs.js +1 -1
- package/dist/editor.cjs.js +1 -1
- package/dist/export.cjs.js +1 -1
- package/dist/hooks/use-toast.cjs.js +1 -1
- package/dist/hooks/use-translation.cjs.js +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.es.js +279 -278
- package/dist/lib/i18n.cjs.js +1 -1
- package/dist/lib/i18n.es.js +11 -9
- package/dist/locales/default-resources.cjs.js +1 -0
- package/dist/locales/default-resources.d.ts +155 -0
- package/dist/locales/default-resources.es.js +150 -0
- package/dist/node_modules/.pnpm/exceljs@4.4.0/node_modules/exceljs/dist/exceljs.min.cjs.js +13 -13
- package/dist/node_modules/.pnpm/exceljs@4.4.0/node_modules/exceljs/dist/exceljs.min.es.js +13 -13
- package/dist/node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-docker.cjs.js +1 -1
- package/dist/node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-docker.es.js +19 -19
- package/dist/node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-markdown.cjs.js +1 -1
- package/dist/node_modules/.pnpm/prismjs@1.30.0/node_modules/prismjs/components/prism-markdown.es.js +24 -25
- package/dist/node_modules/.pnpm/react-resizable-panels@4.11.2_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/react-resizable-panels.cjs.js +1 -1
- package/dist/node_modules/.pnpm/react-resizable-panels@4.11.2_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-resizable-panels/dist/react-resizable-panels.es.js +26 -23
- package/dist/rich-text.cjs.js +1 -1
- package/dist/ui.css +1 -1
- package/dist/utils/cn.cjs.js +1 -1
- package/dist/utils/datetime-helpers.cjs.js +1 -1
- package/dist/utils/theme-loader.cjs.js +1 -1
- package/dist/utils/tweak.cjs.js +1 -1
- package/package.json +28 -27
- package/src/components/DataTable/DataTable.tsx +2 -0
- package/src/components/DataTable/DataTablePagination.tsx +28 -8
- package/src/components/DataTable/hooks/useDataTable.ts +13 -0
- package/src/components/editor/blocks/waka-diagram-block.tsx +7 -36
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use client";"use client";const e=require(`../../_virtual/_rolldown/runtime.cjs.js`),t=require(`../../utils/cn.cjs.js`),n=require(`../badge/index.cjs.js`),r=require(`../button/index.cjs.js`),i=require(`../scroll-area/index.cjs.js`),a=require(`../tooltip/index.cjs.js`);let o=require(`react`);o=e.__toESM(o);let s=require(`lucide-react`),c=require(`react/jsx-runtime`);var l={"Seq Scan":{icon:s.Table2,color:`text-red-500`,description:`Sequential scan (full table scan)`},"Index Scan":{icon:s.Search,color:`text-green-500`,description:`Index scan`},"Index Only Scan":{icon:s.Search,color:`text-green-600`,description:`Index only scan (no heap access)`},"Bitmap Heap Scan":{icon:s.Table2,color:`text-yellow-500`,description:`Bitmap heap scan`},"Bitmap Index Scan":{icon:s.Search,color:`text-yellow-600`,description:`Bitmap index scan`},"Nested Loop":{icon:s.Layers,color:`text-blue-500`,description:`Nested loop join`},"Hash Join":{icon:s.Layers,color:`text-purple-500`,description:`Hash join`},"Merge Join":{icon:s.Layers,color:`text-indigo-500`,description:`Merge join`},Sort:{icon:s.ArrowDownUp,color:`text-orange-500`,description:`Sort operation`},Aggregate:{icon:s.BarChart3,color:`text-cyan-500`,description:`Aggregate operation`},Group:{icon:s.BarChart3,color:`text-cyan-600`,description:`Group operation`},Limit:{icon:s.Filter,color:`text-gray-500`,description:`Limit rows`},Hash:{icon:s.Database,color:`text-purple-400`,description:`Hash for join`},Materialize:{icon:s.Database,color:`text-gray-400`,description:`Materialize subquery`},"Subquery Scan":{icon:s.Search,color:`text-gray-500`,description:`Subquery scan`},"CTE Scan":{icon:s.Search,color:`text-blue-400`,description:`CTE (Common Table Expression) scan`},Result:{icon:s.Database,color:`text-gray-400`,description:`Result node`},Append:{icon:s.Layers,color:`text-gray-500`,description:`Append results`},Unique:{icon:s.Filter,color:`text-gray-500`,description:`Remove duplicates`},WindowAgg:{icon:s.BarChart3,color:`text-cyan-400`,description:`Window function`},Gather:{icon:s.Layers,color:`text-green-400`,description:`Parallel gather`},"Gather Merge":{icon:s.Layers,color:`text-green-500`,description:`Parallel gather merge`}};function u(e){return e<1e3?e.toFixed(2):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function d(e){return e<1e3?e.toString():e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function f(e){return e<1?`${(e*1e3).toFixed(0)}ยตs`:e<1e3?`${e.toFixed(2)}ms`:`${(e/1e3).toFixed(2)}s`}function p(e,t){return Math.max(5,e/t*100)}function m({node:e,depth:r,maxCost:i,isExpanded:o,onToggle:m,onClick:h,showActual:g,showBuffers:_}){let v=e.children&&e.children.length>0,y=l[e.type]||{icon:s.Database,color:`text-gray-500`,description:e.type},b=y.icon,x=p(e.totalCost,i),S=e.actualRows===void 0?0:(e.actualRows-e.rows)/Math.max(e.rows,1)*100;return(0,c.jsx)(`div`,{className:t.cn(`border-b last:border-b-0 hover:bg-muted/30 transition-colors`,e.warnings&&e.warnings.length>0&&`bg-yellow-500/5`),children:(0,c.jsxs)(`div`,{className:`flex items-center gap-2 p-2 cursor-pointer`,style:{paddingLeft:`${r*20+8}px`},onClick:h,children:[(0,c.jsx)(`button`,{className:`w-5 h-5 flex items-center justify-center text-muted-foreground shrink-0`,onClick:e=>{e.stopPropagation(),m()},disabled:!v,children:v?o?(0,c.jsx)(s.ChevronDown,{className:`h-4 w-4`}):(0,c.jsx)(s.ChevronRight,{className:`h-4 w-4`}):(0,c.jsx)(`span`,{className:`w-4`})}),(0,c.jsx)(a.TooltipProvider,{children:(0,c.jsxs)(a.Tooltip,{children:[(0,c.jsx)(a.TooltipTrigger,{children:(0,c.jsx)(b,{className:t.cn(`h-4 w-4 shrink-0`,y.color)})}),(0,c.jsx)(a.TooltipContent,{children:y.description})]})}),(0,c.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,c.jsx)(`span`,{className:`font-medium text-sm`,children:e.type}),e.relation&&(0,c.jsx)(n.Badge,{variant:`outline`,className:`text-xs`,children:e.alias?`${e.relation} as ${e.alias}`:e.relation}),e.indexName&&(0,c.jsx)(n.Badge,{variant:`secondary`,className:`text-xs text-green-600`,children:e.indexName}),e.joinType&&(0,c.jsx)(n.Badge,{variant:`outline`,className:`text-xs`,children:e.joinType}),e.warnings?.map((e,t)=>(0,c.jsx)(a.TooltipProvider,{children:(0,c.jsxs)(a.Tooltip,{children:[(0,c.jsx)(a.TooltipTrigger,{children:(0,c.jsx)(s.AlertTriangle,{className:`h-4 w-4 text-yellow-500`})}),(0,c.jsx)(a.TooltipContent,{children:e})]})},t))]}),e.filter&&(0,c.jsxs)(`div`,{className:`text-xs text-muted-foreground mt-0.5 font-mono truncate`,children:[`Filter: `,e.filter]}),e.sortKey&&e.sortKey.length>0&&(0,c.jsxs)(`div`,{className:`text-xs text-muted-foreground mt-0.5 font-mono truncate`,children:[`Sort: `,e.sortKey.join(`, `)]})]}),(0,c.jsxs)(`div`,{className:`w-24 shrink-0`,children:[(0,c.jsx)(`div`,{className:`h-2 bg-muted rounded overflow-hidden`,children:(0,c.jsx)(`div`,{className:t.cn(`h-full rounded`,e.type===`Seq Scan`?`bg-red-500`:`bg-primary`),style:{width:`${x}%`}})}),(0,c.jsx)(`div`,{className:`text-xs text-muted-foreground text-center mt-0.5`,children:u(e.totalCost)})]}),(0,c.jsxs)(`div`,{className:`w-20 text-right shrink-0`,children:[(0,c.jsx)(`div`,{className:`text-sm font-medium`,children:d(e.rows)}),g&&e.actualRows!==void 0&&(0,c.jsxs)(`div`,{className:t.cn(`text-xs`,Math.abs(S)>100?`text-red-500`:Math.abs(S)>50?`text-yellow-500`:`text-muted-foreground`),children:[`โ `,d(e.actualRows)]})]}),g&&e.actualTime!==void 0&&(0,c.jsxs)(`div`,{className:`w-20 text-right shrink-0`,children:[(0,c.jsx)(`div`,{className:`text-sm`,children:f(e.actualTime)}),e.loops&&e.loops>1&&(0,c.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[`ร`,e.loops]})]}),_&&e.buffers&&(0,c.jsxs)(`div`,{className:`w-24 text-right shrink-0 text-xs text-muted-foreground`,children:[e.buffers.sharedHit!==void 0&&(0,c.jsxs)(`div`,{children:[`Hit: `,e.buffers.sharedHit]}),e.buffers.sharedRead!==void 0&&(0,c.jsxs)(`div`,{className:`text-yellow-500`,children:[`Read: `,e.buffers.sharedRead]})]})]})})}function h({node:e,depth:t,maxCost:n,expandedIds:r,onToggle:i,onNodeClick:a,showActual:o,showBuffers:s}){let l=r.has(e.id);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(m,{node:e,depth:t,maxCost:n,isExpanded:l,onToggle:()=>i(e.id),onClick:()=>a?.(e),showActual:o,showBuffers:s}),l&&e.children?.map(e=>(0,c.jsx)(h,{node:e,depth:t+1,maxCost:n,expandedIds:r,onToggle:i,onNodeClick:a,showActual:o,showBuffers:s},e.id))]})}function g({plan:e,showActual:a=!0,showBuffers:l=!1,onNodeClick:d,title:p=`Query Plan`,className:m}){let[g,_]=o.useState(()=>{let t=new Set,n=e=>{t.add(e.id),e.children?.forEach(n)};return n(e.rootNode),t}),[v,y]=o.useState(!1),b=e=>{_(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},x=()=>{let t=new Set,n=e=>{t.add(e.id),e.children?.forEach(n)};n(e.rootNode),_(t)},S=()=>{_(new Set)},C=()=>{navigator.clipboard.writeText(e.query),y(!0),setTimeout(()=>y(!1),2e3)},w=o.useMemo(()=>{let t=0,n=e=>{t+=e.warnings?.length||0,e.children?.forEach(n)};return n(e.rootNode),t},[e.rootNode]),T=o.useMemo(()=>{let t=e=>e.type===`Seq Scan`?!0:e.children?.some(t)||!1;return t(e.rootNode)},[e.rootNode]);return(0,c.jsxs)(`div`,{className:t.cn(`flex flex-col border rounded-lg bg-background`,m),children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between gap-4 p-3 border-b`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,c.jsx)(s.Zap,{className:`h-5 w-5`}),(0,c.jsx)(`h3`,{className:`font-semibold`,children:p})]}),(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.planningTime!==void 0&&(0,c.jsxs)(n.Badge,{variant:`outline`,className:`text-xs`,children:[(0,c.jsx)(s.Clock,{className:`h-3 w-3 mr-1`}),`Plan: `,f(e.planningTime)]}),e.executionTime!==void 0&&(0,c.jsxs)(n.Badge,{variant:`outline`,className:`text-xs`,children:[(0,c.jsx)(s.Clock,{className:`h-3 w-3 mr-1`}),`Exec: `,f(e.executionTime)]}),T&&(0,c.jsxs)(n.Badge,{className:`bg-red-500 text-xs`,children:[(0,c.jsx)(s.AlertTriangle,{className:`h-3 w-3 mr-1`}),`Seq Scan`]}),w>0&&(0,c.jsxs)(n.Badge,{className:`bg-yellow-500 text-xs`,children:[w,` warnings`]})]})]}),(0,c.jsx)(`div`,{className:`p-3 border-b bg-muted/30`,children:(0,c.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,c.jsx)(`pre`,{className:`text-xs font-mono whitespace-pre-wrap overflow-x-auto flex-1`,children:e.query}),(0,c.jsx)(r.Button,{variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0 shrink-0`,onClick:C,children:v?(0,c.jsx)(s.CheckCircle2,{className:`h-4 w-4 text-green-500`}):(0,c.jsx)(s.Copy,{className:`h-4 w-4`})})]})}),(0,c.jsxs)(`div`,{className:`flex items-center gap-2 p-2 border-b`,children:[(0,c.jsx)(r.Button,{variant:`ghost`,size:`sm`,className:`h-7`,onClick:x,children:`Expand All`}),(0,c.jsx)(r.Button,{variant:`ghost`,size:`sm`,className:`h-7`,onClick:S,children:`Collapse All`}),(0,c.jsxs)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:[`Total Cost: `,u(e.totalCost)]})]}),(0,c.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1.5 border-b bg-muted/50 text-xs font-medium text-muted-foreground`,children:[(0,c.jsx)(`div`,{className:`flex-1 pl-7`,children:`Operation`}),(0,c.jsx)(`div`,{className:`w-24 text-center`,children:`Cost`}),(0,c.jsx)(`div`,{className:`w-20 text-right`,children:`Rows`}),a&&(0,c.jsx)(`div`,{className:`w-20 text-right`,children:`Time`}),l&&(0,c.jsx)(`div`,{className:`w-24 text-right`,children:`Buffers`})]}),(0,c.jsx)(i.ScrollArea,{className:`flex-1 max-h-[500px]`,children:(0,c.jsx)(h,{node:e.rootNode,depth:0,maxCost:e.totalCost,expandedIds:g,onToggle:b,onNodeClick:d,showActual:a,showBuffers:l})}),(0,c.jsx)(`div`,{className:`p-2 border-t bg-muted/30 text-xs text-muted-foreground`,children:(0,c.jsxs)(`div`,{className:`flex items-center gap-4 flex-wrap`,children:[(0,c.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,c.jsx)(s.Search,{className:`h-3 w-3 text-green-500`}),`Index Scan (efficient)`]}),(0,c.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,c.jsx)(s.Table2,{className:`h-3 w-3 text-red-500`}),`Seq Scan (may need index)`]}),(0,c.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,c.jsx)(s.Layers,{className:`h-3 w-3 text-blue-500`}),`Join`]}),(0,c.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,c.jsx)(s.ArrowDownUp,{className:`h-3 w-3 text-orange-500`}),`Sort`]})]})})]})}var _={query:`SELECT u.name, COUNT(p.id) as post_count
|
|
1
|
+
"use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js"),n=require("../badge/index.cjs.js"),r=require("../button/index.cjs.js"),i=require("../scroll-area/index.cjs.js"),a=require("../tooltip/index.cjs.js");let o=require("react");o=e.__toESM(o);let s=require("lucide-react"),c=require("react/jsx-runtime");var l={"Seq Scan":{icon:s.Table2,color:`text-red-500`,description:`Sequential scan (full table scan)`},"Index Scan":{icon:s.Search,color:`text-green-500`,description:`Index scan`},"Index Only Scan":{icon:s.Search,color:`text-green-600`,description:`Index only scan (no heap access)`},"Bitmap Heap Scan":{icon:s.Table2,color:`text-yellow-500`,description:`Bitmap heap scan`},"Bitmap Index Scan":{icon:s.Search,color:`text-yellow-600`,description:`Bitmap index scan`},"Nested Loop":{icon:s.Layers,color:`text-blue-500`,description:`Nested loop join`},"Hash Join":{icon:s.Layers,color:`text-purple-500`,description:`Hash join`},"Merge Join":{icon:s.Layers,color:`text-indigo-500`,description:`Merge join`},Sort:{icon:s.ArrowDownUp,color:`text-orange-500`,description:`Sort operation`},Aggregate:{icon:s.BarChart3,color:`text-cyan-500`,description:`Aggregate operation`},Group:{icon:s.BarChart3,color:`text-cyan-600`,description:`Group operation`},Limit:{icon:s.Filter,color:`text-gray-500`,description:`Limit rows`},Hash:{icon:s.Database,color:`text-purple-400`,description:`Hash for join`},Materialize:{icon:s.Database,color:`text-gray-400`,description:`Materialize subquery`},"Subquery Scan":{icon:s.Search,color:`text-gray-500`,description:`Subquery scan`},"CTE Scan":{icon:s.Search,color:`text-blue-400`,description:`CTE (Common Table Expression) scan`},Result:{icon:s.Database,color:`text-gray-400`,description:`Result node`},Append:{icon:s.Layers,color:`text-gray-500`,description:`Append results`},Unique:{icon:s.Filter,color:`text-gray-500`,description:`Remove duplicates`},WindowAgg:{icon:s.BarChart3,color:`text-cyan-400`,description:`Window function`},Gather:{icon:s.Layers,color:`text-green-400`,description:`Parallel gather`},"Gather Merge":{icon:s.Layers,color:`text-green-500`,description:`Parallel gather merge`}};function u(e){return e<1e3?e.toFixed(2):e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function d(e){return e<1e3?e.toString():e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function f(e){return e<1?`${(e*1e3).toFixed(0)}ยตs`:e<1e3?`${e.toFixed(2)}ms`:`${(e/1e3).toFixed(2)}s`}function p(e,t){return Math.max(5,e/t*100)}function m({node:e,depth:r,maxCost:i,isExpanded:o,onToggle:m,onClick:h,showActual:g,showBuffers:_}){let v=e.children&&e.children.length>0,y=l[e.type]||{icon:s.Database,color:`text-gray-500`,description:e.type},b=y.icon,x=p(e.totalCost,i),S=e.actualRows===void 0?0:(e.actualRows-e.rows)/Math.max(e.rows,1)*100;return(0,c.jsx)(`div`,{className:t.cn(`border-b last:border-b-0 hover:bg-muted/30 transition-colors`,e.warnings&&e.warnings.length>0&&`bg-yellow-500/5`),children:(0,c.jsxs)(`div`,{className:`flex items-center gap-2 p-2 cursor-pointer`,style:{paddingLeft:`${r*20+8}px`},onClick:h,children:[(0,c.jsx)(`button`,{className:`w-5 h-5 flex items-center justify-center text-muted-foreground shrink-0`,onClick:e=>{e.stopPropagation(),m()},disabled:!v,children:v?o?(0,c.jsx)(s.ChevronDown,{className:`h-4 w-4`}):(0,c.jsx)(s.ChevronRight,{className:`h-4 w-4`}):(0,c.jsx)(`span`,{className:`w-4`})}),(0,c.jsx)(a.TooltipProvider,{children:(0,c.jsxs)(a.Tooltip,{children:[(0,c.jsx)(a.TooltipTrigger,{children:(0,c.jsx)(b,{className:t.cn(`h-4 w-4 shrink-0`,y.color)})}),(0,c.jsx)(a.TooltipContent,{children:y.description})]})}),(0,c.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,c.jsx)(`span`,{className:`font-medium text-sm`,children:e.type}),e.relation&&(0,c.jsx)(n.Badge,{variant:`outline`,className:`text-xs`,children:e.alias?`${e.relation} as ${e.alias}`:e.relation}),e.indexName&&(0,c.jsx)(n.Badge,{variant:`secondary`,className:`text-xs text-green-600`,children:e.indexName}),e.joinType&&(0,c.jsx)(n.Badge,{variant:`outline`,className:`text-xs`,children:e.joinType}),e.warnings?.map((e,t)=>(0,c.jsx)(a.TooltipProvider,{children:(0,c.jsxs)(a.Tooltip,{children:[(0,c.jsx)(a.TooltipTrigger,{children:(0,c.jsx)(s.AlertTriangle,{className:`h-4 w-4 text-yellow-500`})}),(0,c.jsx)(a.TooltipContent,{children:e})]})},t))]}),e.filter&&(0,c.jsxs)(`div`,{className:`text-xs text-muted-foreground mt-0.5 font-mono truncate`,children:[`Filter: `,e.filter]}),e.sortKey&&e.sortKey.length>0&&(0,c.jsxs)(`div`,{className:`text-xs text-muted-foreground mt-0.5 font-mono truncate`,children:[`Sort: `,e.sortKey.join(`, `)]})]}),(0,c.jsxs)(`div`,{className:`w-24 shrink-0`,children:[(0,c.jsx)(`div`,{className:`h-2 bg-muted rounded overflow-hidden`,children:(0,c.jsx)(`div`,{className:t.cn(`h-full rounded`,e.type===`Seq Scan`?`bg-red-500`:`bg-primary`),style:{width:`${x}%`}})}),(0,c.jsx)(`div`,{className:`text-xs text-muted-foreground text-center mt-0.5`,children:u(e.totalCost)})]}),(0,c.jsxs)(`div`,{className:`w-20 text-right shrink-0`,children:[(0,c.jsx)(`div`,{className:`text-sm font-medium`,children:d(e.rows)}),g&&e.actualRows!==void 0&&(0,c.jsxs)(`div`,{className:t.cn(`text-xs`,Math.abs(S)>100?`text-red-500`:Math.abs(S)>50?`text-yellow-500`:`text-muted-foreground`),children:[`โ `,d(e.actualRows)]})]}),g&&e.actualTime!==void 0&&(0,c.jsxs)(`div`,{className:`w-20 text-right shrink-0`,children:[(0,c.jsx)(`div`,{className:`text-sm`,children:f(e.actualTime)}),e.loops&&e.loops>1&&(0,c.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[`ร`,e.loops]})]}),_&&e.buffers&&(0,c.jsxs)(`div`,{className:`w-24 text-right shrink-0 text-xs text-muted-foreground`,children:[e.buffers.sharedHit!==void 0&&(0,c.jsxs)(`div`,{children:[`Hit: `,e.buffers.sharedHit]}),e.buffers.sharedRead!==void 0&&(0,c.jsxs)(`div`,{className:`text-yellow-500`,children:[`Read: `,e.buffers.sharedRead]})]})]})})}function h({node:e,depth:t,maxCost:n,expandedIds:r,onToggle:i,onNodeClick:a,showActual:o,showBuffers:s}){let l=r.has(e.id);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(m,{node:e,depth:t,maxCost:n,isExpanded:l,onToggle:()=>i(e.id),onClick:()=>a?.(e),showActual:o,showBuffers:s}),l&&e.children?.map(e=>(0,c.jsx)(h,{node:e,depth:t+1,maxCost:n,expandedIds:r,onToggle:i,onNodeClick:a,showActual:o,showBuffers:s},e.id))]})}function g({plan:e,showActual:a=!0,showBuffers:l=!1,onNodeClick:d,title:p=`Query Plan`,className:m}){let[g,_]=o.useState(()=>{let t=new Set,n=e=>{t.add(e.id),e.children?.forEach(n)};return n(e.rootNode),t}),[v,y]=o.useState(!1),b=e=>{_(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},x=()=>{let t=new Set,n=e=>{t.add(e.id),e.children?.forEach(n)};n(e.rootNode),_(t)},S=()=>{_(new Set)},C=()=>{navigator.clipboard.writeText(e.query),y(!0),setTimeout(()=>y(!1),2e3)},w=o.useMemo(()=>{let t=0,n=e=>{t+=e.warnings?.length||0,e.children?.forEach(n)};return n(e.rootNode),t},[e.rootNode]),T=o.useMemo(()=>{let t=e=>e.type===`Seq Scan`?!0:e.children?.some(t)||!1;return t(e.rootNode)},[e.rootNode]);return(0,c.jsxs)(`div`,{className:t.cn(`flex flex-col border rounded-lg bg-background`,m),children:[(0,c.jsxs)(`div`,{className:`flex items-center justify-between gap-4 p-3 border-b`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,c.jsx)(s.Zap,{className:`h-5 w-5`}),(0,c.jsx)(`h3`,{className:`font-semibold`,children:p})]}),(0,c.jsxs)(`div`,{className:`flex items-center gap-2`,children:[e.planningTime!==void 0&&(0,c.jsxs)(n.Badge,{variant:`outline`,className:`text-xs`,children:[(0,c.jsx)(s.Clock,{className:`h-3 w-3 mr-1`}),`Plan: `,f(e.planningTime)]}),e.executionTime!==void 0&&(0,c.jsxs)(n.Badge,{variant:`outline`,className:`text-xs`,children:[(0,c.jsx)(s.Clock,{className:`h-3 w-3 mr-1`}),`Exec: `,f(e.executionTime)]}),T&&(0,c.jsxs)(n.Badge,{className:`bg-red-500 text-xs`,children:[(0,c.jsx)(s.AlertTriangle,{className:`h-3 w-3 mr-1`}),`Seq Scan`]}),w>0&&(0,c.jsxs)(n.Badge,{className:`bg-yellow-500 text-xs`,children:[w,` warnings`]})]})]}),(0,c.jsx)(`div`,{className:`p-3 border-b bg-muted/30`,children:(0,c.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,c.jsx)(`pre`,{className:`text-xs font-mono whitespace-pre-wrap overflow-x-auto flex-1`,children:e.query}),(0,c.jsx)(r.Button,{variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0 shrink-0`,onClick:C,children:v?(0,c.jsx)(s.CheckCircle2,{className:`h-4 w-4 text-green-500`}):(0,c.jsx)(s.Copy,{className:`h-4 w-4`})})]})}),(0,c.jsxs)(`div`,{className:`flex items-center gap-2 p-2 border-b`,children:[(0,c.jsx)(r.Button,{variant:`ghost`,size:`sm`,className:`h-7`,onClick:x,children:`Expand All`}),(0,c.jsx)(r.Button,{variant:`ghost`,size:`sm`,className:`h-7`,onClick:S,children:`Collapse All`}),(0,c.jsxs)(`span`,{className:`text-xs text-muted-foreground ml-auto`,children:[`Total Cost: `,u(e.totalCost)]})]}),(0,c.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-1.5 border-b bg-muted/50 text-xs font-medium text-muted-foreground`,children:[(0,c.jsx)(`div`,{className:`flex-1 pl-7`,children:`Operation`}),(0,c.jsx)(`div`,{className:`w-24 text-center`,children:`Cost`}),(0,c.jsx)(`div`,{className:`w-20 text-right`,children:`Rows`}),a&&(0,c.jsx)(`div`,{className:`w-20 text-right`,children:`Time`}),l&&(0,c.jsx)(`div`,{className:`w-24 text-right`,children:`Buffers`})]}),(0,c.jsx)(i.ScrollArea,{className:`flex-1 max-h-[500px]`,children:(0,c.jsx)(h,{node:e.rootNode,depth:0,maxCost:e.totalCost,expandedIds:g,onToggle:b,onNodeClick:d,showActual:a,showBuffers:l})}),(0,c.jsx)(`div`,{className:`p-2 border-t bg-muted/30 text-xs text-muted-foreground`,children:(0,c.jsxs)(`div`,{className:`flex items-center gap-4 flex-wrap`,children:[(0,c.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,c.jsx)(s.Search,{className:`h-3 w-3 text-green-500`}),`Index Scan (efficient)`]}),(0,c.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,c.jsx)(s.Table2,{className:`h-3 w-3 text-red-500`}),`Seq Scan (may need index)`]}),(0,c.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,c.jsx)(s.Layers,{className:`h-3 w-3 text-blue-500`}),`Join`]}),(0,c.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,c.jsx)(s.ArrowDownUp,{className:`h-3 w-3 text-orange-500`}),`Sort`]})]})})]})}var _={query:`SELECT u.name, COUNT(p.id) as post_count
|
|
2
2
|
FROM users u
|
|
3
3
|
LEFT JOIN posts p ON p.user_id = u.id
|
|
4
4
|
WHERE u.created_at > '2024-01-01'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use client";"use client";const e=require(
|
|
1
|
+
"use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js");let n=require("react");n=e.__toESM(n);let r=require("lucide-react"),i=require("react/jsx-runtime");var a={daily:{icon:r.Calendar,label:`Daily Quest`,color:`text-blue-500`,bgColor:`bg-blue-500/10`,borderColor:`border-blue-500/30`},weekly:{icon:r.CalendarDays,label:`Weekly Quest`,color:`text-purple-500`,bgColor:`bg-purple-500/10`,borderColor:`border-purple-500/30`},story:{icon:r.BookOpen,label:`Story Quest`,color:`text-amber-500`,bgColor:`bg-amber-500/10`,borderColor:`border-amber-500/30`},challenge:{icon:r.Swords,label:`Challenge`,color:`text-red-500`,bgColor:`bg-red-500/10`,borderColor:`border-red-500/30`},achievement:{icon:r.Trophy,label:`Achievement`,color:`text-yellow-500`,bgColor:`bg-yellow-500/10`,borderColor:`border-yellow-500/30`}},o={easy:{label:`Easy`,color:`text-green-500`,bgColor:`bg-green-500/10`,stars:1},medium:{label:`Medium`,color:`text-yellow-500`,bgColor:`bg-yellow-500/10`,stars:2},hard:{label:`Hard`,color:`text-orange-500`,bgColor:`bg-orange-500/10`,stars:3},legendary:{label:`Legendary`,color:`text-purple-500`,bgColor:`bg-purple-500/10`,stars:4,gradient:`from-purple-500 via-pink-500 to-orange-500`}},s={xp:r.Zap,badge:r.Award,item:r.Package,currency:r.Coins};function c({active:e,onComplete:t}){let[a,o]=n.useState(!1);if(n.useEffect(()=>{if(e){o(!0);let e=setTimeout(()=>{o(!1),t?.()},2e3);return()=>clearTimeout(e)}},[e,t]),!a)return null;let s=[`#fbbf24`,`#f59e0b`,`#22c55e`,`#3b82f6`,`#a855f7`,`#ec4899`];return(0,i.jsxs)(`div`,{className:`pointer-events-none absolute inset-0 overflow-hidden rounded-lg`,children:[[...Array(40)].map((e,t)=>{let n=20+Math.random()*60,r=n+(Math.random()-.5)*100,a=4+Math.random()*8,o=.8+Math.random()*.6;return(0,i.jsx)(`div`,{className:`absolute animate-quest-confetti`,style:{left:`${n}%`,width:a,height:a,backgroundColor:s[Math.floor(Math.random()*s.length)],borderRadius:Math.random()>.5?`50%`:`2px`,"--end-x":`${r}%`,animationDuration:`${o}s`,animationDelay:`${Math.random()*.3}s`}},t)}),[...Array(12)].map((e,t)=>(0,i.jsx)(r.Sparkles,{className:`absolute animate-quest-sparkle text-yellow-400`,style:{left:`${10+Math.random()*80}%`,top:`${10+Math.random()*80}%`,animationDelay:`${Math.random()*1}s`,width:12+Math.random()*12,height:12+Math.random()*12}},`sparkle-${t}`)),(0,i.jsx)(`div`,{className:`absolute inset-0 animate-quest-glow bg-gradient-to-t from-yellow-400/20 via-transparent to-transparent`}),(0,i.jsx)(`style`,{children:`
|
|
2
2
|
@keyframes quest-confetti {
|
|
3
3
|
0% {
|
|
4
4
|
top: 100%;
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
.animate-quest-glow {
|
|
30
30
|
animation: quest-glow 2s ease-out;
|
|
31
31
|
}
|
|
32
|
-
`})]})}function l({type:e,size:n=`default`,className:r}){let o=a[e],s=o.icon;return(0,i.jsx)(`div`,{className:t.cn(`flex items-center justify-center rounded-lg p-2`,o.bgColor,r),children:(0,i.jsx)(s,{className:t.cn({sm:`h-4 w-4`,default:`h-5 w-5`,lg:`h-6 w-6`}[n],o.color)})})}function u({difficulty:e,size:n=`default`,className:a}){let s=o[e],c={sm:`text-xs px-1.5 py-0.5`,default:`text-xs px-2 py-1`},l=n===`sm`?`h-2.5 w-2.5`:`h-3 w-3`;return(0,i.jsxs)(`div`,{className:t.cn(`flex items-center gap-1 rounded-full font-medium`,s.bgColor,s.color,c[n],e===`legendary`&&`bg-gradient-to-r from-purple-500/10 via-pink-500/10 to-orange-500/10`,a),children:[[...Array(s.stars)].map((e,n)=>(0,i.jsx)(r.Star,{className:t.cn(l,`fill-current`)},n)),(0,i.jsx)(`span`,{className:`ml-0.5`,children:s.label})]})}function d({expiresAt:e,className:a}){let[o,s]=n.useState(``),[c,l]=n.useState(!1);return n.useEffect(()=>{let t=()=>{let t=new Date,n=e.getTime()-t.getTime();if(n<=0){s(`Expired`),l(!0);return}let r=Math.floor(n/(1e3*60*60)),i=Math.floor(n%(1e3*60*60)/(1e3*60));r>=24
|
|
32
|
+
`})]})}function l({type:e,size:n=`default`,className:r}){let o=a[e],s=o.icon;return(0,i.jsx)(`div`,{className:t.cn(`flex items-center justify-center rounded-lg p-2`,o.bgColor,r),children:(0,i.jsx)(s,{className:t.cn({sm:`h-4 w-4`,default:`h-5 w-5`,lg:`h-6 w-6`}[n],o.color)})})}function u({difficulty:e,size:n=`default`,className:a}){let s=o[e],c={sm:`text-xs px-1.5 py-0.5`,default:`text-xs px-2 py-1`},l=n===`sm`?`h-2.5 w-2.5`:`h-3 w-3`;return(0,i.jsxs)(`div`,{className:t.cn(`flex items-center gap-1 rounded-full font-medium`,s.bgColor,s.color,c[n],e===`legendary`&&`bg-gradient-to-r from-purple-500/10 via-pink-500/10 to-orange-500/10`,a),children:[[...Array(s.stars)].map((e,n)=>(0,i.jsx)(r.Star,{className:t.cn(l,`fill-current`)},n)),(0,i.jsx)(`span`,{className:`ml-0.5`,children:s.label})]})}function d({expiresAt:e,className:a}){let[o,s]=n.useState(``),[c,l]=n.useState(!1);return n.useEffect(()=>{let t=()=>{let t=new Date,n=e.getTime()-t.getTime();if(n<=0){s(`Expired`),l(!0);return}let r=Math.floor(n/(1e3*60*60)),i=Math.floor(n%(1e3*60*60)/(1e3*60));if(r>=24){let e=Math.floor(r/24);s(`${e}d ${r%24}h`),l(!1)}else r>0?(s(`${r}h ${i}m`),l(r<2)):(s(`${i}m`),l(!0))};t();let n=setInterval(t,6e4);return()=>clearInterval(n)},[e]),(0,i.jsxs)(`div`,{className:t.cn(`flex items-center gap-1 text-xs`,c?`text-red-500`:`text-muted-foreground`,a),children:[(0,i.jsx)(r.Clock,{className:t.cn(`h-3.5 w-3.5`,c&&`animate-pulse`)}),(0,i.jsx)(`span`,{children:o})]})}function f({objective:e,onClick:n,disabled:a,compact:o}){let s=e.current!==void 0&&e.target!==void 0,c=s?Math.min(100,e.current/e.target*100):0;return(0,i.jsxs)(`button`,{type:`button`,onClick:n,disabled:a||e.completed,className:t.cn(`group flex w-full items-start gap-2 rounded-lg p-2 text-left transition-all`,`hover:bg-muted/50`,e.completed&&`opacity-60`,a&&`cursor-not-allowed`,o&&`p-1.5`),children:[(0,i.jsx)(`div`,{className:t.cn(`flex h-5 w-5 shrink-0 items-center justify-center rounded-md border-2 transition-all`,e.completed?`border-green-500 bg-green-500 text-white`:`border-muted-foreground/30 group-hover:border-primary/50`),children:e.completed&&(0,i.jsx)(r.Check,{className:`h-3 w-3`})}),(0,i.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,i.jsx)(`p`,{className:t.cn(`text-sm`,e.completed&&`line-through`,o&&`text-xs`),children:e.text}),s&&!e.completed&&(0,i.jsxs)(`div`,{className:`mt-1 flex items-center gap-2`,children:[(0,i.jsx)(`div`,{className:`h-1.5 flex-1 overflow-hidden rounded-full bg-muted`,children:(0,i.jsx)(`div`,{className:`h-full rounded-full bg-primary transition-all duration-300`,style:{width:`${c}%`}})}),(0,i.jsxs)(`span`,{className:`text-xs text-muted-foreground tabular-nums`,children:[e.current,`/`,e.target]})]})]})]})}function p({reward:e,compact:n}){let r=s[e.type];return(0,i.jsxs)(`div`,{className:t.cn(`flex items-center gap-1.5 rounded-full px-2 py-1`,{xp:`text-yellow-500 bg-yellow-500/10`,badge:`text-purple-500 bg-purple-500/10`,item:`text-blue-500 bg-blue-500/10`,currency:`text-amber-500 bg-amber-500/10`}[e.type],n&&`px-1.5 py-0.5`),children:[e.icon||(0,i.jsx)(r,{className:t.cn(`h-3.5 w-3.5`,n&&`h-3 w-3`)}),(0,i.jsxs)(`span`,{className:t.cn(`text-xs font-medium`,n&&`text-[10px]`),children:[typeof e.value==`number`?`+${e.value}`:e.value,e.type===`xp`&&` XP`]})]})}function m({progress:e,size:n=`default`,showLabel:r=!0,className:a}){let o=n===`sm`?`h-1.5`:`h-2`;return(0,i.jsxs)(`div`,{className:t.cn(`w-full`,a),children:[(0,i.jsx)(`div`,{className:t.cn(`overflow-hidden rounded-full bg-muted`,o),children:(0,i.jsx)(`div`,{className:t.cn(`h-full rounded-full transition-all duration-500 ease-out`,e>=100?`bg-gradient-to-r from-green-400 to-emerald-500`:`bg-gradient-to-r from-blue-500 to-purple-500`),style:{width:`${Math.min(100,e)}%`}})}),r&&(0,i.jsxs)(`div`,{className:`mt-1 flex justify-between text-xs text-muted-foreground`,children:[(0,i.jsx)(`span`,{children:`Progress`}),(0,i.jsxs)(`span`,{className:`font-medium tabular-nums`,children:[Math.round(e),`%`]})]})]})}function h({status:e,onClick:a,disabled:o}){let[s,c]=n.useState(!1);return e===`claimed`?(0,i.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-lg bg-muted px-4 py-2 text-sm text-muted-foreground`,children:[(0,i.jsx)(r.Check,{className:`h-4 w-4`}),(0,i.jsx)(`span`,{children:`Claimed`})]}):e===`expired`?(0,i.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-lg bg-red-500/10 px-4 py-2 text-sm text-red-500`,children:[(0,i.jsx)(r.Clock,{className:`h-4 w-4`}),(0,i.jsx)(`span`,{children:`Expired`})]}):e===`completed`?(0,i.jsxs)(`button`,{type:`button`,onClick:()=>{e!==`completed`||o||(c(!0),a?.())},disabled:o||s,className:t.cn(`group relative flex items-center gap-2 overflow-hidden rounded-lg px-4 py-2 text-sm font-medium text-white transition-all`,`bg-gradient-to-r from-yellow-400 via-orange-500 to-red-500`,`hover:shadow-lg hover:shadow-orange-500/25`,`active:scale-95`,`disabled:opacity-50 disabled:cursor-not-allowed`,s&&`animate-pulse`),children:[(0,i.jsx)(`div`,{className:`absolute inset-0 -translate-x-full animate-claim-shine bg-gradient-to-r from-transparent via-white/20 to-transparent group-hover:translate-x-full`}),(0,i.jsx)(r.Gift,{className:`h-4 w-4`}),(0,i.jsx)(`span`,{children:`Claim Rewards`}),(0,i.jsx)(`style`,{children:`
|
|
33
33
|
@keyframes claim-shine {
|
|
34
34
|
0% { transform: translateX(-100%); }
|
|
35
35
|
100% { transform: translateX(100%); }
|
|
@@ -160,7 +160,10 @@ function E({ expiresAt: n, className: r }) {
|
|
|
160
160
|
return;
|
|
161
161
|
}
|
|
162
162
|
let r = Math.floor(t / (1e3 * 60 * 60)), i = Math.floor(t % (1e3 * 60 * 60) / (1e3 * 60));
|
|
163
|
-
|
|
163
|
+
if (r >= 24) {
|
|
164
|
+
let e = Math.floor(r / 24);
|
|
165
|
+
a(`${e}d ${r % 24}h`), c(!1);
|
|
166
|
+
} else r > 0 ? (a(`${r}h ${i}m`), c(r < 2)) : (a(`${i}m`), c(!0));
|
|
164
167
|
};
|
|
165
168
|
e();
|
|
166
169
|
let t = setInterval(e, 6e4);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use client";"use client";const e=require(
|
|
1
|
+
"use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js");let n=require("react");n=e.__toESM(n);let r=require("lucide-react"),i=require("react/jsx-runtime");var a={normal:`bg-success`,warning:`bg-warning`,danger:`bg-destructive`,overflow:`bg-destructive`},o={sm:{bar:`h-2`,marker:`h-3`,markerDot:`h-1.5 w-1.5`,text:`text-xs`,label:`text-xs`,tooltip:`text-xs p-2`,icon:`h-3 w-3`,gap:`gap-1`},md:{bar:`h-3`,marker:`h-4`,markerDot:`h-2 w-2`,text:`text-sm`,label:`text-sm`,tooltip:`text-sm p-3`,icon:`h-4 w-4`,gap:`gap-2`},lg:{bar:`h-4`,marker:`h-5`,markerDot:`h-2.5 w-2.5`,text:`text-base`,label:`text-base`,tooltip:`text-base p-4`,icon:`h-5 w-5`,gap:`gap-3`}};function s({current:e,softLimit:n,hardLimit:r,unit:a,formatValue:s,size:c,isOverflow:l,usagePercentage:u}){let d=o[c];return(0,i.jsxs)(`div`,{className:t.cn(`absolute left-1/2 -translate-x-1/2 bottom-full mb-2 z-50`,`bg-popover text-popover-foreground border rounded-lg shadow-lg`,`opacity-0 group-hover:opacity-100 transition-opacity duration-200`,`pointer-events-none whitespace-nowrap`,d.tooltip),children:[(0,i.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,i.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,i.jsx)(`span`,{className:`text-muted-foreground`,children:`Current:`}),(0,i.jsxs)(`span`,{className:`font-medium tabular-nums`,children:[s(e),` `,a]})]}),n!==void 0&&(0,i.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,i.jsx)(`span`,{className:`text-muted-foreground`,children:`Soft Limit:`}),(0,i.jsxs)(`span`,{className:`font-medium tabular-nums text-yellow-600`,children:[s(n),` `,a]})]}),(0,i.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,i.jsx)(`span`,{className:`text-muted-foreground`,children:`Hard Limit:`}),(0,i.jsxs)(`span`,{className:`font-medium tabular-nums text-red-600`,children:[s(r),` `,a]})]}),(0,i.jsx)(`div`,{className:`border-t pt-1.5 mt-1.5`,children:(0,i.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,i.jsx)(`span`,{className:`text-muted-foreground`,children:`Usage:`}),(0,i.jsxs)(`span`,{className:t.cn(`font-medium tabular-nums`,l&&`text-red-600`),children:[u.toFixed(1),`%`]})]})})]}),(0,i.jsx)(`div`,{className:`absolute left-1/2 -translate-x-1/2 top-full -mt-px`,children:(0,i.jsx)(`div`,{className:`border-8 border-transparent border-t-popover`})})]})}function c({position:e,type:n,size:r,label:a,showLabel:s}){let c=o[r],l=n===`soft`;return(0,i.jsxs)(`div`,{className:`absolute top-0 -translate-x-1/2 flex flex-col items-center z-10`,style:{left:`${Math.min(e,100)}%`},children:[(0,i.jsx)(`div`,{className:t.cn(`w-0.5`,c.marker,l?`bg-yellow-500`:`bg-red-500`)}),(0,i.jsx)(`div`,{className:t.cn(`rounded-full -mt-0.5`,c.markerDot,l?`bg-yellow-500`:`bg-red-500`)}),s&&a&&(0,i.jsx)(`span`,{className:t.cn(`absolute top-full mt-1 text-muted-foreground whitespace-nowrap`,c.text),children:a})]})}function l({overflowAmount:e,unit:n,formatValue:a,size:s}){let c=o[s];return(0,i.jsxs)(`div`,{className:t.cn(`flex items-center text-red-600`,c.gap,c.text),children:[(0,i.jsx)(r.AlertTriangle,{className:c.icon}),(0,i.jsxs)(`span`,{className:`font-medium`,children:[`+`,a(e),` `,n,` over limit`]})]})}function u({current:e,softLimit:u,hardLimit:d,label:f,unit:p=``,showLabels:m=!0,showMarkers:h=!0,size:g=`md`,variant:_=`simple`,animated:v=!0,colors:y,formatValue:b=e=>e.toLocaleString(),className:x}){let[S,C]=n.useState(0),w={...a,...y},T=o[g],E=e/d*100,D=u?u/d*100:void 0,O=e>d,k=O?e-d:0,A=n.useCallback(()=>O?w.overflow:u&&e>=u?e>=u+(d-u)*.5?w.danger:w.warning:w.normal,[e,u,d,O,w])();return n.useEffect(()=>{if(!v){C(Math.min(E,100));return}let e=Math.min(E,100),t=S,n=e-t,r=Date.now(),i=()=>{let e=Date.now()-r,a=Math.min(e/800,1),o=1-(1-a)**3;C(t+n*o),a<1&&requestAnimationFrame(i)};requestAnimationFrame(i)},[E,v]),(0,i.jsxs)(`div`,{className:t.cn(`w-full`,x),children:[(f||m&&_===`detailed`)&&(0,i.jsxs)(`div`,{className:t.cn(`flex items-center justify-between mb-2`,T.gap),children:[f&&(0,i.jsx)(`span`,{className:t.cn(`font-medium`,T.label),children:f}),m&&_===`detailed`&&(0,i.jsxs)(`div`,{className:t.cn(`flex items-center text-muted-foreground`,T.gap,T.text),children:[(0,i.jsxs)(`span`,{className:`tabular-nums`,children:[b(e),` / `,b(d),` `,p]}),u&&(0,i.jsxs)(`span`,{className:`text-yellow-600`,children:[`(soft: `,b(u),` `,p,`)`]})]})]}),(0,i.jsxs)(`div`,{className:`relative group`,children:[(0,i.jsx)(s,{current:e,softLimit:u,hardLimit:d,unit:p,formatValue:b,size:g,isOverflow:O,usagePercentage:E}),(0,i.jsxs)(`div`,{className:t.cn(`relative w-full overflow-visible rounded-full bg-muted`,T.bar),children:[_===`detailed`&&u&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(`div`,{className:`absolute inset-y-0 left-0 rounded-l-full bg-green-100 dark:bg-green-900/20`,style:{width:`${D}%`}}),(0,i.jsx)(`div`,{className:`absolute inset-y-0 bg-yellow-100 dark:bg-yellow-900/20`,style:{left:`${D}%`,width:`${50-(D||0)/2}%`}}),(0,i.jsx)(`div`,{className:`absolute inset-y-0 right-0 rounded-r-full bg-red-100 dark:bg-red-900/20`,style:{width:`${100-(D||0)-(50-(D||0)/2)}%`}})]}),(0,i.jsx)(`div`,{className:t.cn(`relative h-full rounded-full transition-colors duration-300`,A,O&&`animate-pulse`),style:{width:`${S}%`,transition:v?void 0:`width 0.3s ease-out`},children:v&&(0,i.jsx)(`div`,{className:`absolute inset-0 overflow-hidden rounded-full`,children:(0,i.jsx)(`div`,{className:`absolute inset-0 animate-quota-shine`})})}),h&&(0,i.jsxs)(i.Fragment,{children:[u&&D!==void 0&&(0,i.jsx)(c,{position:D,type:`soft`,size:g,label:_===`detailed`?`Soft: ${b(u)}`:void 0,showLabel:_===`detailed`}),(0,i.jsx)(c,{position:100,type:`hard`,size:g,label:_===`detailed`?`Hard: ${b(d)}`:void 0,showLabel:_===`detailed`})]})]})]}),m&&_===`simple`&&(0,i.jsxs)(`div`,{className:t.cn(`flex items-center justify-between mt-2`,T.text),children:[(0,i.jsxs)(`div`,{className:`flex items-center gap-1 text-muted-foreground`,children:[(0,i.jsx)(r.Info,{className:T.icon}),(0,i.jsxs)(`span`,{className:`tabular-nums`,children:[b(e),` `,p]})]}),(0,i.jsxs)(`div`,{className:`flex items-center gap-4 text-muted-foreground`,children:[u&&(0,i.jsxs)(`span`,{className:`text-yellow-600 tabular-nums`,children:[`Soft: `,b(u),` `,p]}),(0,i.jsxs)(`span`,{className:`text-red-600 tabular-nums`,children:[`Hard: `,b(d),` `,p]})]})]}),O&&(0,i.jsx)(`div`,{className:`mt-2`,children:(0,i.jsx)(l,{overflowAmount:k,unit:p,formatValue:b,size:g})}),(0,i.jsx)(`style`,{children:`
|
|
2
2
|
@keyframes quota-shine {
|
|
3
3
|
0% { transform: translateX(-100%); opacity: 0; }
|
|
4
4
|
50% { opacity: 0.3; }
|
|
@@ -8,4 +8,4 @@
|
|
|
8
8
|
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
|
|
9
9
|
animation: quota-shine 2s ease-in-out infinite;
|
|
10
10
|
}
|
|
11
|
-
`})]})}function d({resources:e,compact:n=!1,size:r=`md`,animated:a=!0,formatValue:s,className:c}){let l=o[r];return(0,i.jsx)(`div`,{className:t.cn(`space-y-4`,c),children:e.map(e=>(0,i.jsxs)(`div`,{className:n?`space-y-1`:void 0,children:[(0,i.jsx)(u,{current:e.current,softLimit:e.softLimit,hardLimit:e.hardLimit,label:e.label,unit:e.unit,size:n?`sm`:r,variant:n?`simple`:`detailed`,animated:a,colors:e.colors,formatValue:s,showLabels:!n,showMarkers:!n}),n&&(0,i.jsxs)(`div`,{className:t.cn(`flex items-center justify-between text-muted-foreground`,l.text),children:[(0,i.jsx)(`span`,{children:e.label}),(0,i.jsxs)(`span`,{className:`tabular-nums`,children:[(s||(e=>e.toLocaleString()))(e.current),` /`,` `,(s||(e=>e.toLocaleString()))(e.hardLimit),` `,e.unit]})]})]},e.id))})}function f({initialValue:e=0,softLimit:t,hardLimit:r,onApproachingSoftLimit:i,onApproachingHardLimit:a,onOverflow:o,approachingThreshold:s=80}){let[c,l]=n.useState(e),u=n.useRef(c),d=c/r*100,f=t?t/r*100:void 0,p=c>r,m=p?c-r:0,h=Math.max(0,r-c),g=n.useMemo(()=>p
|
|
11
|
+
`})]})}function d({resources:e,compact:n=!1,size:r=`md`,animated:a=!0,formatValue:s,className:c}){let l=o[r];return(0,i.jsx)(`div`,{className:t.cn(`space-y-4`,c),children:e.map(e=>(0,i.jsxs)(`div`,{className:n?`space-y-1`:void 0,children:[(0,i.jsx)(u,{current:e.current,softLimit:e.softLimit,hardLimit:e.hardLimit,label:e.label,unit:e.unit,size:n?`sm`:r,variant:n?`simple`:`detailed`,animated:a,colors:e.colors,formatValue:s,showLabels:!n,showMarkers:!n}),n&&(0,i.jsxs)(`div`,{className:t.cn(`flex items-center justify-between text-muted-foreground`,l.text),children:[(0,i.jsx)(`span`,{children:e.label}),(0,i.jsxs)(`span`,{className:`tabular-nums`,children:[(s||(e=>e.toLocaleString()))(e.current),` /`,` `,(s||(e=>e.toLocaleString()))(e.hardLimit),` `,e.unit]})]})]},e.id))})}function f({initialValue:e=0,softLimit:t,hardLimit:r,onApproachingSoftLimit:i,onApproachingHardLimit:a,onOverflow:o,approachingThreshold:s=80}){let[c,l]=n.useState(e),u=n.useRef(c),d=c/r*100,f=t?t/r*100:void 0,p=c>r,m=p?c-r:0,h=Math.max(0,r-c),g=n.useMemo(()=>{if(p)return`overflow`;if(t&&c>=t){let e=t+(r-t)*.5;return c>=e?`danger`:`warning`}return`normal`},[c,t,r,p]);return n.useEffect(()=>{let e=u.current;u.current=c,p&&e<=r?o?.(c,m):t&&c>=s/100*t&&e<s/100*t?i?.(c):c>=s/100*r&&e<s/100*r&&a?.(c)},[c,t,r,p,m,s,i,a,o]),{current:c,usagePercentage:d,softLimitPercentage:f,isOverflow:p,overflowAmount:m,remaining:h,zone:g,add:n.useCallback(e=>{l(t=>t+e)},[]),subtract:n.useCallback(e=>{l(t=>Math.max(0,t-e))},[]),set:n.useCallback(e=>{l(e)},[]),reset:n.useCallback(()=>{l(0)},[])}}exports.WakaMultiQuotaBar=d,exports.WakaQuotaBar=u,exports.default=u,exports.useQuota=f;
|
|
@@ -159,8 +159,8 @@ function f({ current: n, softLimit: f, hardLimit: p, label: m, unit: h = "", sho
|
|
|
159
159
|
return;
|
|
160
160
|
}
|
|
161
161
|
let e = Math.min(O, 100), t = w, n = e - t, r = Date.now(), i = () => {
|
|
162
|
-
let e = Date.now() - r, a = Math.min(e / 800, 1);
|
|
163
|
-
T(t + n *
|
|
162
|
+
let e = Date.now() - r, a = Math.min(e / 800, 1), o = 1 - (1 - a) ** 3;
|
|
163
|
+
T(t + n * o), a < 1 && requestAnimationFrame(i);
|
|
164
164
|
};
|
|
165
165
|
requestAnimationFrame(i);
|
|
166
166
|
}, [O, b]), /* @__PURE__ */ o("div", {
|
|
@@ -335,7 +335,14 @@ function p({ resources: t, compact: n = !1, size: r = "md", animated: i = !0, fo
|
|
|
335
335
|
});
|
|
336
336
|
}
|
|
337
337
|
function m({ initialValue: e = 0, softLimit: n, hardLimit: r, onApproachingSoftLimit: i, onApproachingHardLimit: a, onOverflow: o, approachingThreshold: s = 80 }) {
|
|
338
|
-
let [c, l] = t.useState(e), u = t.useRef(c), d = c / r * 100, f = n ? n / r * 100 : void 0, p = c > r, m = p ? c - r : 0, h = Math.max(0, r - c), g = t.useMemo(() =>
|
|
338
|
+
let [c, l] = t.useState(e), u = t.useRef(c), d = c / r * 100, f = n ? n / r * 100 : void 0, p = c > r, m = p ? c - r : 0, h = Math.max(0, r - c), g = t.useMemo(() => {
|
|
339
|
+
if (p) return "overflow";
|
|
340
|
+
if (n && c >= n) {
|
|
341
|
+
let e = n + (r - n) * .5;
|
|
342
|
+
return c >= e ? "danger" : "warning";
|
|
343
|
+
}
|
|
344
|
+
return "normal";
|
|
345
|
+
}, [
|
|
339
346
|
c,
|
|
340
347
|
n,
|
|
341
348
|
r,
|
|
@@ -377,4 +384,4 @@ function m({ initialValue: e = 0, softLimit: n, hardLimit: r, onApproachingSoftL
|
|
|
377
384
|
};
|
|
378
385
|
}
|
|
379
386
|
//#endregion
|
|
380
|
-
export { p as WakaMultiQuotaBar, f as default, m as useQuota };
|
|
387
|
+
export { p as WakaMultiQuotaBar, f as WakaQuotaBar, f as default, m as useQuota };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";"use client";const e=require(
|
|
1
|
+
"use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js");let n=require("react");n=e.__toESM(n);let r=require("react/jsx-runtime");function i(e){let[t,r]=n.useState(null),[i,a]=n.useState(null);return{activeDataset:t,setActiveDataset:r,hoveredPoint:i,setHoveredPoint:a}}function a({axes:e,datasets:i,size:a=300,levels:o=5,maxValue:s=100,showGrid:c=!0,showLabels:l=!0,showPoints:u=!0,showTooltip:d=!0,animated:f=!0,animationDuration:p=1e3,className:m,legendPosition:h=`bottom`,gridColor:g=`currentColor`,axisColor:_=`currentColor`,labelColor:v=`currentColor`}){let[y,b]=n.useState(!f),[x,S]=n.useState(null),[C,w]=n.useState(null),T=n.useRef(null);n.useEffect(()=>{if(f){let e=setTimeout(()=>{b(!0)},50);return()=>clearTimeout(e)}},[f]);let E=e.length,D=2*Math.PI/E,O=a/2,k=a/2,A=a*.35,j=(e,t,n=s)=>{let r=e*D-Math.PI/2,i=t/n*A;return{x:O+i*Math.cos(r),y:k+i*Math.sin(r)}},M=(e,t=1)=>e.map((e,n)=>{let r=e*t,i=j(n,r);return`${n===0?`M`:`L`} ${i.x} ${i.y}`}).join(` `)+` Z`,N=e=>{let t=e/o*A;return Array.from({length:E}).map((e,n)=>{let r=n*D-Math.PI/2,i=O+t*Math.cos(r),a=k+t*Math.sin(r);return`${n===0?`M`:`L`} ${i} ${a}`}).join(` `)+` Z`},P=[`hsl(var(--chart-1))`,`hsl(var(--chart-2))`,`hsl(var(--chart-3))`,`hsl(var(--chart-4))`,`hsl(var(--chart-5))`,`hsl(var(--primary))`],F=(e,t)=>t.color||P[e%P.length],I=(e,t,n,r,i)=>{let a=j(n,r);S({datasetId:t,axisIndex:n,x:a.x,y:a.y,value:r,label:i})},L=()=>h===`none`?null:(0,r.jsx)(`div`,{className:t.cn(`flex gap-4 flex-wrap`,(h===`left`||h===`right`)&&`flex-col`),children:i.map((e,n)=>(0,r.jsxs)(`button`,{type:`button`,className:t.cn(`flex items-center gap-2 text-sm transition-opacity duration-200`,`hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-primary rounded px-1`,C&&C!==e.id&&`opacity-50`),onMouseEnter:()=>w(e.id),onMouseLeave:()=>w(null),children:[(0,r.jsx)(`span`,{className:`w-3 h-3 rounded-full`,style:{backgroundColor:F(n,e)}}),(0,r.jsx)(`span`,{className:`text-muted-foreground`,children:e.label})]},e.id))});return(0,r.jsxs)(`div`,{className:t.cn(`inline-flex flex-col items-center gap-4`,h===`left`&&`flex-row-reverse`,h===`right`&&`flex-row`,m),children:[h===`top`&&L(),h===`left`&&L(),(0,r.jsxs)(`div`,{className:`relative`,style:{width:a,height:a},children:[(0,r.jsxs)(`svg`,{ref:T,width:a,height:a,viewBox:`0 0 ${a} ${a}`,className:`overflow-visible`,"aria-hidden":`true`,focusable:`false`,children:[c&&Array.from({length:o}).map((e,t)=>(0,r.jsx)(`path`,{d:N(t+1),fill:`none`,stroke:g,strokeWidth:`1`,className:`opacity-20`},`grid-${t}`)),e.map((e,t)=>{let n=t*D-Math.PI/2,i=O+A*Math.cos(n),a=k+A*Math.sin(n);return(0,r.jsx)(`line`,{x1:O,y1:k,x2:i,y2:a,stroke:_,strokeWidth:`1`,className:`opacity-30`},`axis-${t}`)}),i.map((n,i)=>{let a=F(i,n);return(0,r.jsxs)(`g`,{className:t.cn(`transition-opacity duration-200`,!(!C||C===n.id)&&`opacity-30`),children:[(0,r.jsx)(`path`,{d:M(n.data,+!!y),fill:a,fillOpacity:n.fillOpacity??.2,stroke:a,strokeWidth:n.strokeWidth??2,strokeLinejoin:`round`,className:t.cn(f&&`transition-all ease-out`),style:{transitionDuration:`${p}ms`}}),u&&n.data.map((i,o)=>{let s=j(o,y?i:0),c=x?.datasetId===n.id&&x?.axisIndex===o;return(0,r.jsx)(`circle`,{cx:s.x,cy:s.y,r:c?6:4,fill:a,stroke:`white`,strokeWidth:`2`,className:t.cn(`cursor-pointer transition-all duration-200`,f&&`transition-all ease-out`),style:{transitionDuration:f?`${p}ms`:`200ms`},onMouseEnter:t=>I(t,n.id,o,i,e[o]),onMouseLeave:()=>S(null)},`point-${o}`)})]},n.id)}),l&&e.map((e,t)=>{let n=t*D-Math.PI/2,i=O+(A+25)*Math.cos(n),a=k+(A+25)*Math.sin(n),o=`middle`,s=`0.35em`,c=(n+Math.PI*2)%(Math.PI*2);return c>Math.PI/6&&c<5*Math.PI/6?o=`start`:c>7*Math.PI/6&&c<11*Math.PI/6&&(o=`end`),c>Math.PI/3&&c<2*Math.PI/3?s=`0.85em`:c>4*Math.PI/3&&c<5*Math.PI/3&&(s=`-0.35em`),(0,r.jsx)(`text`,{x:i,y:a,textAnchor:o,dy:s,fill:v,className:`text-xs font-medium opacity-70`,children:e},`label-${t}`)})]}),d&&x&&(0,r.jsxs)(`div`,{className:t.cn(`absolute z-10 px-2 py-1 text-xs font-medium rounded-md shadow-lg`,`bg-foreground text-background`,`animate-in fade-in-0 zoom-in-95 duration-100`,`pointer-events-none`),style:{left:x.x,top:x.y-35,transform:`translateX(-50%)`},children:[(0,r.jsx)(`div`,{className:`font-semibold`,children:x.label}),(0,r.jsx)(`div`,{children:x.value.toFixed(1)}),(0,r.jsx)(`div`,{className:`absolute left-1/2 -translate-x-1/2 -bottom-1 w-2 h-2 rotate-45 bg-foreground`})]})]}),h===`bottom`&&L(),h===`right`&&L()]})}function o({data:e,color:t=`hsl(var(--chart-1))`,fillOpacity:n=.2,...i}){let o=e.map(e=>e.label),s=e.map(e=>e.value),c=Math.max(...e.map(e=>e.max??100));return(0,r.jsx)(a,{axes:o,datasets:[{id:`main`,label:`Score`,data:s,color:t,fillOpacity:n}],maxValue:c,legendPosition:`none`,...i})}function s({dataA:e,dataB:t,...n}){return(0,r.jsx)(a,{datasets:[{id:`a`,label:e.label,data:e.data,color:e.color||`hsl(var(--chart-1))`,fillOpacity:.15},{id:`b`,label:t.label,data:t.data,color:t.color||`hsl(var(--chart-2))`,fillOpacity:.15}],...n})}exports.WakaRadarScore=a,exports.default=a,exports.WakaRadarScoreCompare=s,exports.WakaRadarScoreSimple=o,exports.useRadarScore=i;
|
|
@@ -30,8 +30,8 @@ function a({ axes: i, datasets: a, size: o = 300, levels: s = 5, maxValue: c = 1
|
|
|
30
30
|
y: A + i * Math.sin(r)
|
|
31
31
|
};
|
|
32
32
|
}, N = (e, t = 1) => e.map((e, n) => {
|
|
33
|
-
let r = M(n,
|
|
34
|
-
return `${n === 0 ? "M" : "L"} ${
|
|
33
|
+
let r = e * t, i = M(n, r);
|
|
34
|
+
return `${n === 0 ? "M" : "L"} ${i.x} ${i.y}`;
|
|
35
35
|
}).join(" ") + " Z", P = (e) => {
|
|
36
36
|
let t = e / s * j;
|
|
37
37
|
return Array.from({ length: D }).map((e, n) => {
|
|
@@ -99,12 +99,12 @@ function a({ axes: i, datasets: a, size: o = 300, levels: s = 5, maxValue: c = 1
|
|
|
99
99
|
className: "opacity-20"
|
|
100
100
|
}, `grid-${t}`)),
|
|
101
101
|
i.map((e, t) => {
|
|
102
|
-
let r = t * O - Math.PI / 2;
|
|
102
|
+
let r = t * O - Math.PI / 2, i = k + j * Math.cos(r), a = A + j * Math.sin(r);
|
|
103
103
|
return /* @__PURE__ */ n("line", {
|
|
104
104
|
x1: k,
|
|
105
105
|
y1: A,
|
|
106
|
-
x2:
|
|
107
|
-
y2:
|
|
106
|
+
x2: i,
|
|
107
|
+
y2: a,
|
|
108
108
|
stroke: v,
|
|
109
109
|
strokeWidth: "1",
|
|
110
110
|
className: "opacity-30"
|
|
@@ -210,4 +210,4 @@ function s({ dataA: e, dataB: t, ...r }) {
|
|
|
210
210
|
});
|
|
211
211
|
}
|
|
212
212
|
//#endregion
|
|
213
|
-
export {
|
|
213
|
+
export { a as WakaRadarScore, a as default, s as WakaRadarScoreCompare, o as WakaRadarScoreSimple, i as useRadarScore };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use client";"use client";const e=require(
|
|
1
|
+
"use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js");let n=require("react");n=e.__toESM(n);let r=require("react/jsx-runtime");var i=[`bronze`,`silver`,`gold`,`platinum`,`diamond`,`master`,`grandmaster`],a={bronze:{label:`Bronze`,colors:{primary:`from-amber-700 to-amber-900`,secondary:`from-amber-600 to-amber-800`,accent:`bg-amber-500`,glow:`shadow-amber-500/50`,text:`text-amber-100`,border:`border-amber-600`},icon:`B`},silver:{label:`Silver`,colors:{primary:`from-slate-300 to-slate-500`,secondary:`from-slate-200 to-slate-400`,accent:`bg-slate-300`,glow:`shadow-slate-400/50`,text:`text-slate-900`,border:`border-slate-400`},icon:`S`},gold:{label:`Gold`,colors:{primary:`from-yellow-400 to-yellow-600`,secondary:`from-yellow-300 to-yellow-500`,accent:`bg-yellow-400`,glow:`shadow-yellow-400/60`,text:`text-yellow-950`,border:`border-yellow-500`},icon:`G`},platinum:{label:`Platinum`,colors:{primary:`from-cyan-300 to-cyan-500`,secondary:`from-cyan-200 to-cyan-400`,accent:`bg-cyan-300`,glow:`shadow-cyan-400/60`,text:`text-cyan-950`,border:`border-cyan-400`},icon:`P`},diamond:{label:`Diamond`,colors:{primary:`from-blue-300 to-purple-400`,secondary:`from-blue-200 to-purple-300`,accent:`bg-blue-300`,glow:`shadow-blue-400/70`,text:`text-blue-950`,border:`border-blue-400`},icon:`D`},master:{label:`Master`,colors:{primary:`from-purple-500 to-pink-500`,secondary:`from-purple-400 to-pink-400`,accent:`bg-purple-400`,glow:`shadow-purple-500/70`,text:`text-white`,border:`border-purple-500`},icon:`M`},grandmaster:{label:`Grandmaster`,colors:{primary:`from-red-500 via-orange-500 to-yellow-500`,secondary:`from-red-400 via-orange-400 to-yellow-400`,accent:`bg-gradient-to-r from-red-400 to-yellow-400`,glow:`shadow-orange-500/80`,text:`text-white`,border:`border-orange-500`},icon:`GM`}},o={sm:{container:`w-12 h-12`,badge:`w-10 h-10`,icon:`text-xs font-bold`,text:`text-[8px]`,division:`text-[6px]`,points:`text-[8px]`,shine:`w-3`},md:{container:`w-16 h-16`,badge:`w-14 h-14`,icon:`text-sm font-bold`,text:`text-[10px]`,division:`text-[8px]`,points:`text-xs`,shine:`w-4`},lg:{container:`w-24 h-24`,badge:`w-20 h-20`,icon:`text-xl font-bold`,text:`text-xs`,division:`text-[10px]`,points:`text-sm`,shine:`w-6`},xl:{container:`w-32 h-32`,badge:`w-28 h-28`,icon:`text-3xl font-bold`,text:`text-sm`,division:`text-xs`,points:`text-base`,shine:`w-8`}},s=`
|
|
2
2
|
@keyframes waka-rank-shine {
|
|
3
3
|
0% { left: -100%; }
|
|
4
4
|
50%, 100% { left: 200%; }
|
|
@@ -46,4 +46,4 @@
|
|
|
46
46
|
transform: scale(1);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
`,c=`waka-rank-badge-styles`;function l(){return n.useEffect(()=>{if(typeof document<`u`&&!document.getElementById(c)){let e=document.createElement(`style`);e.id=c,e.textContent=s,document.head.appendChild(e)}},[]),null}function u(e){return{1:`I`,2:`II`,3:`III`,4:`IV`,5:`V`}[e]}function d(e,t){let n=i.indexOf(e);return i.indexOf(t)>n}function f({size:e,animated:n,isHighTier:i}){let a=o[e];return n?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`div`,{className:t.cn(`absolute inset-0 overflow-hidden rounded-full pointer-events-none`),children:(0,r.jsx)(`div`,{className:t.cn(`absolute h-full bg-gradient-to-r from-transparent via-white/40 to-transparent`,a.shine),style:{animation:n?`waka-rank-shine 3s ease-in-out infinite`:`none`}})}),i&&(0,r.jsx)(`div`,{className:`absolute inset-0 overflow-hidden rounded-full pointer-events-none`,children:(0,r.jsx)(`div`,{className:t.cn(`absolute h-full bg-gradient-to-r from-transparent via-white/20 to-transparent`,a.shine),style:{animation:n?`waka-rank-shine 2s ease-in-out infinite 1s`:`none`}})})]}):null}function p({rank:e,animated:n,isPromoting:i}){let o=a[e],s=[`diamond`,`master`,`grandmaster`].includes(e);return(0,r.jsx)(`div`,{className:t.cn(`absolute inset-0 rounded-full`,o.colors.glow,s?`shadow-lg`:`shadow-md`,n&&`animate-pulse`,i&&`animate-[waka-rank-glow-pulse_0.5s_ease-in-out_3]`),style:{filter:s?`blur(8px)`:`blur(4px)`,opacity:n?.6:.4}})}function m({rank:e,animated:n}){let i=[`diamond`,`master`,`grandmaster`].includes(e);return!n||!i?null:(0,r.jsx)(`div`,{className:`absolute inset-0 rounded-full pointer-events-none overflow-hidden`,children:[...[,,,,,,]].map((n,i)=>(0,r.jsx)(`div`,{className:t.cn(`absolute w-1 h-1 rounded-full`,e===`diamond`&&`bg-blue-300`,e===`master`&&`bg-purple-300`,e===`grandmaster`&&`bg-yellow-300`),style:{top:`50%`,left:`50%`,animation:`waka-rank-particle ${2+i*.3}s ease-in-out infinite ${i*.5}s`,transform:`rotate(${i*60}deg)`}},i))})}function h({isPromoting:e}){return e?(0,r.jsx)(`div`,{className:t.cn(`absolute inset-0 rounded-full pointer-events-none`,`bg-gradient-to-t from-white/0 via-white/80 to-white/0`,`animate-[waka-rank-promotion-flash_1s_ease-out]`)}):null}function g({rank:e,size:n}){let i=a[e],s=o[n];return e===`grandmaster`?(0,r.jsx)(`div`,{className:t.cn(`relative`,s.icon,i.colors.text),children:(0,r.jsx)(`span`,{className:`relative z-10`,style:{textShadow:`0 0 10px rgba(255, 200, 0, 0.8)`},children:i.icon})}):(0,r.jsx)(`span`,{className:t.cn(s.icon,i.colors.text),children:i.icon})}function _({rank:e,division:i,points:s,pointsToNext:c,size:_=`md`,showPoints:v=!1,showDivision:y=!0,animated:b=!0,previousRank:x,className:S}){let[C,w]=n.useState(!1),T=a[e],E=o[_],D=[`diamond`,`master`,`grandmaster`].includes(e);n.useEffect(()=>{if(x&&d(x,e)){w(!0);let e=setTimeout(()=>w(!1),1500);return()=>clearTimeout(e)}},[x,e]);let O=s!==void 0&&c!==void 0&&c>0?Math.min(s/c*100,100):0;return(0,r.jsxs)(`div`,{className:t.cn(`relative inline-flex flex-col items-center gap-1`,S),children:[(0,r.jsxs)(`div`,{className:t.cn(`relative flex items-center justify-center`,E.container),children:[(0,r.jsx)(p,{rank:e,animated:b,isPromoting:C}),(0,r.jsxs)(`div`,{className:t.cn(`relative flex items-center justify-center rounded-full`,`bg-gradient-to-br`,T.colors.primary,`border-2`,T.colors.border,E.badge,`transition-all duration-300`,`hover:scale-105 hover:shadow-lg`,b&&`hover:animate-none`,C&&`animate-[waka-rank-badge-pop_0.5s_ease-out]`),children:[(0,r.jsx)(`div`,{className:t.cn(`absolute inset-1 rounded-full`,`bg-gradient-to-br`,T.colors.secondary,`opacity-50`)}),(0,r.jsx)(f,{size:_,animated:b,isHighTier:D}),(0,r.jsx)(m,{rank:e,animated:b}),(0,r.jsx)(`div`,{className:`relative z-10 flex flex-col items-center`,children:(0,r.jsx)(g,{rank:e,size:_})}),(0,r.jsx)(h,{isPromoting:C})]}),v&&c!==void 0&&c>0&&(0,r.jsxs)(`svg`,{className:`absolute inset-0 -rotate-90`,viewBox:`0 0 100 100`,"aria-hidden":`true`,focusable:`false`,children:[(0,r.jsx)(`circle`,{cx:`50`,cy:`50`,r:`46`,fill:`none`,stroke:`currentColor`,strokeWidth:`3`,className:`text-gray-200/30`}),(0,r.jsx)(`circle`,{cx:`50`,cy:`50`,r:`46`,fill:`none`,stroke:`currentColor`,strokeWidth:`3`,strokeLinecap:`round`,strokeDasharray:`${O*2.89} 289`,className:t.cn(T.colors.text,`transition-all duration-500`)})]})]}),(0,r.jsxs)(`div`,{className:`flex flex-col items-center`,children:[(0,r.jsxs)(`span`,{className:t.cn(`font-semibold uppercase tracking-wider`,E.text),children:[T.label,y&&i&&(0,r.jsx)(`span`,{className:t.cn(`ml-1`,E.division),children:u(i)})]}),v&&s!==void 0&&(0,r.jsxs)(`span`,{className:t.cn(`text-muted-foreground`,E.points),children:[s.toLocaleString(),c!==void 0&&(0,r.jsxs)(`span`,{className:`opacity-60`,children:[` `,`/ `,c.toLocaleString()]})]}),C&&(0,r.jsx)(`span`,{className:t.cn(`text-green-500 font-medium animate-bounce`,E.points),children:`Promoted!`})]}),(0,r.jsx)(l,{})]})}function v({currentRank:e,size:n=`sm`,showAll:a=!1,range:o=2,className:s}){let c=i.indexOf(e),l=a?i:i.filter((e,t)=>Math.abs(t-c)<=o);return(0,r.jsx)(`div`,{className:t.cn(`flex items-center gap-2`,s),children:l.map(i=>(0,r.jsx)(`div`,{className:t.cn(`transition-all duration-300`,i!==e&&`opacity-40 scale-75`),children:(0,r.jsx)(_,{rank:i,size:n,animated:i===e,showDivision:!1})},i))})}function y(e={}){let{initialRank:t=`bronze`,initialDivision:r=5,initialPoints:a=0,pointsPerDivision:o=100,pointsPerRank:s=500}=e,[c,l]=n.useState(t),[u,d]=n.useState(r),[f,p]=n.useState(a),[m,h]=n.useState(void 0);return{rank:c,division:u,points:f,pointsToNext:n.useMemo(()=>u>1?o-f%o:s-f%s,[f,u,o,s]),previousRank:m,addPoints:n.useCallback(e=>{p(t=>{let n=t+e,r=s;if(n>=r&&c!==`grandmaster`){let e=i.indexOf(c);if(e<i.length-1)return h(c),l(i[e+1]),d(5),n-r}return n>=o*(5-u+1)&&u>1&&d(e=>e>1?e-1:e),n})},[c,u,o,s]),setRank:n.useCallback((e,t=5)=>{e!==c&&h(c),l(e),d(t)},[c]),reset:n.useCallback(()=>{l(t),d(r),p(a),h(void 0)},[t,r,a])}}exports.
|
|
49
|
+
`,c=`waka-rank-badge-styles`;function l(){return n.useEffect(()=>{if(typeof document<`u`&&!document.getElementById(c)){let e=document.createElement(`style`);e.id=c,e.textContent=s,document.head.appendChild(e)}},[]),null}function u(e){return{1:`I`,2:`II`,3:`III`,4:`IV`,5:`V`}[e]}function d(e,t){let n=i.indexOf(e);return i.indexOf(t)>n}function f({size:e,animated:n,isHighTier:i}){let a=o[e];return n?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(`div`,{className:t.cn(`absolute inset-0 overflow-hidden rounded-full pointer-events-none`),children:(0,r.jsx)(`div`,{className:t.cn(`absolute h-full bg-gradient-to-r from-transparent via-white/40 to-transparent`,a.shine),style:{animation:n?`waka-rank-shine 3s ease-in-out infinite`:`none`}})}),i&&(0,r.jsx)(`div`,{className:`absolute inset-0 overflow-hidden rounded-full pointer-events-none`,children:(0,r.jsx)(`div`,{className:t.cn(`absolute h-full bg-gradient-to-r from-transparent via-white/20 to-transparent`,a.shine),style:{animation:n?`waka-rank-shine 2s ease-in-out infinite 1s`:`none`}})})]}):null}function p({rank:e,animated:n,isPromoting:i}){let o=a[e],s=[`diamond`,`master`,`grandmaster`].includes(e);return(0,r.jsx)(`div`,{className:t.cn(`absolute inset-0 rounded-full`,o.colors.glow,s?`shadow-lg`:`shadow-md`,n&&`animate-pulse`,i&&`animate-[waka-rank-glow-pulse_0.5s_ease-in-out_3]`),style:{filter:s?`blur(8px)`:`blur(4px)`,opacity:n?.6:.4}})}function m({rank:e,animated:n}){let i=[`diamond`,`master`,`grandmaster`].includes(e);return!n||!i?null:(0,r.jsx)(`div`,{className:`absolute inset-0 rounded-full pointer-events-none overflow-hidden`,children:[...[,,,,,,]].map((n,i)=>(0,r.jsx)(`div`,{className:t.cn(`absolute w-1 h-1 rounded-full`,e===`diamond`&&`bg-blue-300`,e===`master`&&`bg-purple-300`,e===`grandmaster`&&`bg-yellow-300`),style:{top:`50%`,left:`50%`,animation:`waka-rank-particle ${2+i*.3}s ease-in-out infinite ${i*.5}s`,transform:`rotate(${i*60}deg)`}},i))})}function h({isPromoting:e}){return e?(0,r.jsx)(`div`,{className:t.cn(`absolute inset-0 rounded-full pointer-events-none`,`bg-gradient-to-t from-white/0 via-white/80 to-white/0`,`animate-[waka-rank-promotion-flash_1s_ease-out]`)}):null}function g({rank:e,size:n}){let i=a[e],s=o[n];return e===`grandmaster`?(0,r.jsx)(`div`,{className:t.cn(`relative`,s.icon,i.colors.text),children:(0,r.jsx)(`span`,{className:`relative z-10`,style:{textShadow:`0 0 10px rgba(255, 200, 0, 0.8)`},children:i.icon})}):(0,r.jsx)(`span`,{className:t.cn(s.icon,i.colors.text),children:i.icon})}function _({rank:e,division:i,points:s,pointsToNext:c,size:_=`md`,showPoints:v=!1,showDivision:y=!0,animated:b=!0,previousRank:x,className:S}){let[C,w]=n.useState(!1),T=a[e],E=o[_],D=[`diamond`,`master`,`grandmaster`].includes(e);n.useEffect(()=>{if(x&&d(x,e)){w(!0);let e=setTimeout(()=>w(!1),1500);return()=>clearTimeout(e)}},[x,e]);let O=s!==void 0&&c!==void 0&&c>0?Math.min(s/c*100,100):0;return(0,r.jsxs)(`div`,{className:t.cn(`relative inline-flex flex-col items-center gap-1`,S),children:[(0,r.jsxs)(`div`,{className:t.cn(`relative flex items-center justify-center`,E.container),children:[(0,r.jsx)(p,{rank:e,animated:b,isPromoting:C}),(0,r.jsxs)(`div`,{className:t.cn(`relative flex items-center justify-center rounded-full`,`bg-gradient-to-br`,T.colors.primary,`border-2`,T.colors.border,E.badge,`transition-all duration-300`,`hover:scale-105 hover:shadow-lg`,b&&`hover:animate-none`,C&&`animate-[waka-rank-badge-pop_0.5s_ease-out]`),children:[(0,r.jsx)(`div`,{className:t.cn(`absolute inset-1 rounded-full`,`bg-gradient-to-br`,T.colors.secondary,`opacity-50`)}),(0,r.jsx)(f,{size:_,animated:b,isHighTier:D}),(0,r.jsx)(m,{rank:e,animated:b}),(0,r.jsx)(`div`,{className:`relative z-10 flex flex-col items-center`,children:(0,r.jsx)(g,{rank:e,size:_})}),(0,r.jsx)(h,{isPromoting:C})]}),v&&c!==void 0&&c>0&&(0,r.jsxs)(`svg`,{className:`absolute inset-0 -rotate-90`,viewBox:`0 0 100 100`,"aria-hidden":`true`,focusable:`false`,children:[(0,r.jsx)(`circle`,{cx:`50`,cy:`50`,r:`46`,fill:`none`,stroke:`currentColor`,strokeWidth:`3`,className:`text-gray-200/30`}),(0,r.jsx)(`circle`,{cx:`50`,cy:`50`,r:`46`,fill:`none`,stroke:`currentColor`,strokeWidth:`3`,strokeLinecap:`round`,strokeDasharray:`${O*2.89} 289`,className:t.cn(T.colors.text,`transition-all duration-500`)})]})]}),(0,r.jsxs)(`div`,{className:`flex flex-col items-center`,children:[(0,r.jsxs)(`span`,{className:t.cn(`font-semibold uppercase tracking-wider`,E.text),children:[T.label,y&&i&&(0,r.jsx)(`span`,{className:t.cn(`ml-1`,E.division),children:u(i)})]}),v&&s!==void 0&&(0,r.jsxs)(`span`,{className:t.cn(`text-muted-foreground`,E.points),children:[s.toLocaleString(),c!==void 0&&(0,r.jsxs)(`span`,{className:`opacity-60`,children:[` `,`/ `,c.toLocaleString()]})]}),C&&(0,r.jsx)(`span`,{className:t.cn(`text-green-500 font-medium animate-bounce`,E.points),children:`Promoted!`})]}),(0,r.jsx)(l,{})]})}function v({currentRank:e,size:n=`sm`,showAll:a=!1,range:o=2,className:s}){let c=i.indexOf(e),l=a?i:i.filter((e,t)=>Math.abs(t-c)<=o);return(0,r.jsx)(`div`,{className:t.cn(`flex items-center gap-2`,s),children:l.map(i=>(0,r.jsx)(`div`,{className:t.cn(`transition-all duration-300`,i!==e&&`opacity-40 scale-75`),children:(0,r.jsx)(_,{rank:i,size:n,animated:i===e,showDivision:!1})},i))})}function y(e={}){let{initialRank:t=`bronze`,initialDivision:r=5,initialPoints:a=0,pointsPerDivision:o=100,pointsPerRank:s=500}=e,[c,l]=n.useState(t),[u,d]=n.useState(r),[f,p]=n.useState(a),[m,h]=n.useState(void 0);return{rank:c,division:u,points:f,pointsToNext:n.useMemo(()=>u>1?o-f%o:s-f%s,[f,u,o,s]),previousRank:m,addPoints:n.useCallback(e=>{p(t=>{let n=t+e,r=s;if(n>=r&&c!==`grandmaster`){let e=i.indexOf(c);if(e<i.length-1)return h(c),l(i[e+1]),d(5),n-r}return n>=o*(5-u+1)&&u>1&&d(e=>e>1?e-1:e),n})},[c,u,o,s]),setRank:n.useCallback((e,t=5)=>{e!==c&&h(c),l(e),d(t)},[c]),reset:n.useCallback(()=>{l(t),d(r),p(a),h(void 0)},[t,r,a])}}exports.WakaRankBadge=_,exports.default=_,exports.WakaRankBadgeGroup=v,exports.useRank=y;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use client";"use client";const e=require(
|
|
1
|
+
"use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js");let n=require("react");n=e.__toESM(n);let r=require("lucide-react"),i=require("react/jsx-runtime");var a={sm:{icon:`h-4 w-4`,container:`text-xs`,label:`text-xs`},md:{icon:`h-5 w-5`,container:`text-sm`,label:`text-sm`},lg:{icon:`h-6 w-6`,container:`text-base`,label:`text-base`},xl:{icon:`h-8 w-8`,container:`text-lg`,label:`text-lg`}},o={none:`gap-0`,sm:`gap-0.5`,md:`gap-1`,lg:`gap-2`},s=[r.Frown,r.Frown,r.Meh,r.Smile,r.Smile];function c(e,t){switch(e){case`heart`:return r.Heart;case`thumbs`:return r.ThumbsUp;case`emoji`:return s[Math.min(t,s.length-1)];default:return r.Star}}function l({index:e,value:r,hoverValue:o,iconType:s,customIcon:l,customFilledIcon:u,size:d,activeColor:f,inactiveColor:p,hoverColor:m,readOnly:h,disabled:g,allowHalf:_,animated:v,onClick:y,onMouseEnter:b,onMouseLeave:x}){let S=o===null?r:o,C=e+1,w=e+.5,T=S>=C,E=_&&S>=w&&S<C,D=o===null?T||E?f:p:m,O=c(s,e),k=t.cn(a[d].icon,`transition-all duration-150`,v&&(T||E)&&`animate-rating-pop`,!h&&!g&&`cursor-pointer`,g&&`cursor-not-allowed opacity-50`),A=e=>{if(!(h||g))if(_){let t=e.currentTarget.getBoundingClientRect();y(e.clientX-t.left<t.width/2?w:C)}else y(C)},j=e=>{if(!(h||g))if(_){let t=e.currentTarget.getBoundingClientRect();b(e.clientX-t.left<t.width/2?w:C)}else b(C)},M=(e,t=!1)=>l&&u?e?u:l:l?n.cloneElement(l,{className:k,style:{color:e?D:p}}):(0,i.jsx)(O,{className:k,style:{color:D,fill:e?D:`transparent`}});return(0,i.jsx)(`span`,{className:`relative inline-flex`,onClick:A,onMouseMove:j,onMouseLeave:x,role:h?`img`:`button`,tabIndex:h||g?-1:0,"aria-label":`Rate ${C}`,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),!h&&!g&&y(C))},children:E?(0,i.jsxs)(`span`,{className:`relative inline-flex`,children:[(0,i.jsx)(`span`,{className:`absolute inset-0`,children:M(!1)}),(0,i.jsx)(`span`,{className:`overflow-hidden`,style:{width:`50%`},children:M(!0,!0)}),(0,i.jsx)(`span`,{className:`invisible`,children:M(!1)})]}):M(T)})}function u({value:e,onChange:s,max:c=5,allowHalf:u=!1,iconType:d=`star`,customIcon:f,customFilledIcon:p,size:m=`md`,activeColor:h=`#f59e0b`,inactiveColor:g=`#d1d5db`,hoverColor:_=`#fbbf24`,readOnly:v=!1,disabled:y=!1,showClear:b=!1,label:x,showValue:S=!1,count:C,countLabel:w=`reviews`,animated:T=!0,gap:E=`sm`,className:D,id:O,name:k,ariaLabel:A}){let[j,M]=n.useState(null),N=t=>{v||y||(e===t?s?.(null):s?.(t))},P=e=>{!v&&!y&&M(e)},F=()=>{M(null)},I=()=>{!v&&!y&&s?.(null)},L=j===null?e:j,R=L==null?`-`:u?L.toFixed(1):L.toString();return(0,i.jsxs)(`div`,{id:O,className:t.cn(`inline-flex flex-col`,a[m].container,y&&`opacity-50`,D),children:[(x||S||C!==void 0)&&(0,i.jsxs)(`div`,{className:t.cn(`flex items-center gap-2 mb-1`,a[m].label),children:[x&&(0,i.jsx)(`span`,{className:`font-medium text-foreground`,children:x}),S&&(0,i.jsx)(`span`,{className:`text-muted-foreground`,children:R}),C!==void 0&&(0,i.jsxs)(`span`,{className:`text-muted-foreground`,children:[`(`,C.toLocaleString(),` `,w,`)`]})]}),(0,i.jsxs)(`div`,{className:t.cn(`inline-flex items-center`,o[E]),role:`radiogroup`,"aria-label":A||x||`Rating`,onMouseLeave:F,children:[Array.from({length:c},(t,n)=>(0,i.jsx)(l,{index:n,value:e??0,hoverValue:j,max:c,iconType:d,customIcon:f,customFilledIcon:p,size:m,activeColor:h,inactiveColor:g,hoverColor:_,readOnly:v,disabled:y,allowHalf:u,animated:T,onClick:N,onMouseEnter:P,onMouseLeave:F},n)),b&&!v&&!y&&e!=null&&(0,i.jsx)(`button`,{type:`button`,onClick:I,className:t.cn(`ml-1 p-0.5 rounded-full text-muted-foreground hover:text-foreground hover:bg-muted transition-colors`,a[m].icon),"aria-label":`Clear rating`,children:(0,i.jsx)(r.X,{className:a[m].icon})})]}),k&&(0,i.jsx)(`input`,{type:`hidden`,name:k,value:e??``}),(0,i.jsx)(`style`,{children:`
|
|
2
2
|
@keyframes rating-pop {
|
|
3
3
|
0% {
|
|
4
4
|
transform: scale(1);
|
|
@@ -13,4 +13,4 @@
|
|
|
13
13
|
.animate-rating-pop {
|
|
14
14
|
animation: rating-pop 0.3s ease-out;
|
|
15
15
|
}
|
|
16
|
-
`})]})}function d(e={}){let{initialValue:t,max:r=5,allowHalf:i=!1,onRatingChange:a}=e,[o,s]=n.useState(t??null),[c,l]=n.useState(null),u=n.useCallback(e=>{let t=e;t!==null&&(t=Math.max(0,Math.min(r,t)),i||(t=Math.round(t))),s(t),a?.(t)},[r,i,a]);return{value:o,setValue:u,hoverValue:c,setHoverValue:l,clear:n.useCallback(()=>{u(null)},[u]),reset:n.useCallback(()=>{u(t??null)},[t,u]),getRatingProps:n.useCallback(()=>({value:o??void 0,onChange:u}),[o,u])}}function f({value:e,max:t=5,iconType:n=`star`,size:r=`md`,activeColor:a=`#f59e0b`,inactiveColor:o=`#d1d5db`,showValue:s=!0,count:c,countLabel:l=`reviews`,gap:d=`sm`,className:f}){return(0,i.jsx)(u,{value:e,max:t,iconType:n,size:r,activeColor:a,inactiveColor:o,readOnly:!0,showValue:s,count:c,countLabel:l,gap:d,allowHalf:!0,className:f})}exports.WakaRatingDisplay=f,exports.default=u,exports.useRatingInput=d;
|
|
16
|
+
`})]})}function d(e={}){let{initialValue:t,max:r=5,allowHalf:i=!1,onRatingChange:a}=e,[o,s]=n.useState(t??null),[c,l]=n.useState(null),u=n.useCallback(e=>{let t=e;t!==null&&(t=Math.max(0,Math.min(r,t)),i||(t=Math.round(t))),s(t),a?.(t)},[r,i,a]);return{value:o,setValue:u,hoverValue:c,setHoverValue:l,clear:n.useCallback(()=>{u(null)},[u]),reset:n.useCallback(()=>{u(t??null)},[t,u]),getRatingProps:n.useCallback(()=>({value:o??void 0,onChange:u}),[o,u])}}function f({value:e,max:t=5,iconType:n=`star`,size:r=`md`,activeColor:a=`#f59e0b`,inactiveColor:o=`#d1d5db`,showValue:s=!0,count:c,countLabel:l=`reviews`,gap:d=`sm`,className:f}){return(0,i.jsx)(u,{value:e,max:t,iconType:n,size:r,activeColor:a,inactiveColor:o,readOnly:!0,showValue:s,count:c,countLabel:l,gap:d,allowHalf:!0,className:f})}exports.WakaRatingDisplay=f,exports.WakaRatingInput=u,exports.default=u,exports.useRatingInput=d;
|
|
@@ -220,4 +220,4 @@ function v({ value: e, max: t = 5, iconType: n = "star", size: r = "md", activeC
|
|
|
220
220
|
});
|
|
221
221
|
}
|
|
222
222
|
//#endregion
|
|
223
|
-
export { v as WakaRatingDisplay, g as default, _ as useRatingInput };
|
|
223
|
+
export { v as WakaRatingDisplay, g as WakaRatingInput, g as default, _ as useRatingInput };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";"use client";const e=require(`../../_virtual/_rolldown/runtime.cjs.js`),t=require(`../../utils/cn.cjs.js`),n=require(`../popover/index.cjs.js`);let r=require(`react`);r=e.__toESM(r);let i=require(`lucide-react`),a=require(`react/jsx-runtime`);var o={default:``,light:`๐ป`,"medium-light":`๐ผ`,medium:`๐ฝ`,"medium-dark":`๐พ`,dark:`๐ฟ`},s={recent:(0,a.jsx)(i.Clock,{className:`h-4 w-4`}),smileys:(0,a.jsx)(i.Smile,{className:`h-4 w-4`}),people:(0,a.jsx)(i.Heart,{className:`h-4 w-4`}),animals:(0,a.jsx)(i.Dog,{className:`h-4 w-4`}),food:(0,a.jsx)(i.Pizza,{className:`h-4 w-4`}),travel:(0,a.jsx)(i.Plane,{className:`h-4 w-4`}),activities:(0,a.jsx)(i.ThumbsUp,{className:`h-4 w-4`}),objects:(0,a.jsx)(i.Lightbulb,{className:`h-4 w-4`}),symbols:(0,a.jsx)(i.Hash,{className:`h-4 w-4`}),flags:(0,a.jsx)(i.Flag,{className:`h-4 w-4`})},c={recent:`Recent`,smileys:`Smileys & Emotion`,people:`People & Body`,animals:`Animals & Nature`,food:`Food & Drink`,travel:`Travel & Places`,activities:`Activities`,objects:`Objects`,symbols:`Symbols`,flags:`Flags`},l=[`๐`,`โค๏ธ`,`๐`,`๐ฎ`,`๐ข`,`๐`],u=[{id:`grinning`,emoji:`๐`,name:`Grinning Face`,category:`smileys`,keywords:[`happy`,`smile`]},{id:`grin`,emoji:`๐`,name:`Beaming Face`,category:`smileys`,keywords:[`happy`,`smile`]},{id:`joy`,emoji:`๐`,name:`Face with Tears of Joy`,category:`smileys`,keywords:[`laugh`,`crying`]},{id:`rofl`,emoji:`๐คฃ`,name:`Rolling on Floor Laughing`,category:`smileys`,keywords:[`laugh`]},{id:`smile`,emoji:`๐`,name:`Smiling Face`,category:`smileys`,keywords:[`happy`,`blush`]},{id:`sweat_smile`,emoji:`๐
`,name:`Grinning Face with Sweat`,category:`smileys`,keywords:[`nervous`]},{id:`laughing`,emoji:`๐`,name:`Grinning Squinting Face`,category:`smileys`,keywords:[`happy`]},{id:`wink`,emoji:`๐`,name:`Winking Face`,category:`smileys`,keywords:[`flirt`]},{id:`blush`,emoji:`๐`,name:`Smiling Face with Smiling Eyes`,category:`smileys`,keywords:[`happy`]},{id:`yum`,emoji:`๐`,name:`Face Savoring Food`,category:`smileys`,keywords:[`delicious`,`tongue`]},{id:`sunglasses`,emoji:`๐`,name:`Smiling Face with Sunglasses`,category:`smileys`,keywords:[`cool`]},{id:`heart_eyes`,emoji:`๐`,name:`Smiling Face with Heart-Eyes`,category:`smileys`,keywords:[`love`]},{id:`kissing_heart`,emoji:`๐`,name:`Face Blowing a Kiss`,category:`smileys`,keywords:[`love`]},{id:`thinking`,emoji:`๐ค`,name:`Thinking Face`,category:`smileys`,keywords:[`hmm`,`consider`]},{id:`neutral`,emoji:`๐`,name:`Neutral Face`,category:`smileys`,keywords:[`meh`]},{id:`expressionless`,emoji:`๐`,name:`Expressionless Face`,category:`smileys`,keywords:[`blank`]},{id:`unamused`,emoji:`๐`,name:`Unamused Face`,category:`smileys`,keywords:[`annoyed`]},{id:`rolling_eyes`,emoji:`๐`,name:`Face with Rolling Eyes`,category:`smileys`,keywords:[`whatever`]},{id:`grimacing`,emoji:`๐ฌ`,name:`Grimacing Face`,category:`smileys`,keywords:[`awkward`]},{id:`relieved`,emoji:`๐`,name:`Relieved Face`,category:`smileys`,keywords:[`calm`,`peaceful`]},{id:`pensive`,emoji:`๐`,name:`Pensive Face`,category:`smileys`,keywords:[`sad`,`thoughtful`]},{id:`sleepy`,emoji:`๐ช`,name:`Sleepy Face`,category:`smileys`,keywords:[`tired`]},{id:`drooling`,emoji:`๐คค`,name:`Drooling Face`,category:`smileys`,keywords:[`hungry`]},{id:`sleeping`,emoji:`๐ด`,name:`Sleeping Face`,category:`smileys`,keywords:[`zzz`,`tired`]},{id:`mask`,emoji:`๐ท`,name:`Face with Medical Mask`,category:`smileys`,keywords:[`sick`,`covid`]},{id:`thermometer`,emoji:`๐ค`,name:`Face with Thermometer`,category:`smileys`,keywords:[`sick`,`fever`]},{id:`nerd`,emoji:`๐ค`,name:`Nerd Face`,category:`smileys`,keywords:[`geek`,`glasses`]},{id:`confused`,emoji:`๐`,name:`Confused Face`,category:`smileys`,keywords:[`puzzled`]},{id:`worried`,emoji:`๐`,name:`Worried Face`,category:`smileys`,keywords:[`concerned`,`anxious`]},{id:`slightly_frowning`,emoji:`๐`,name:`Slightly Frowning Face`,category:`smileys`,keywords:[`sad`]},{id:`frowning`,emoji:`โน๏ธ`,name:`Frowning Face`,category:`smileys`,keywords:[`sad`]},{id:`open_mouth`,emoji:`๐ฎ`,name:`Face with Open Mouth`,category:`smileys`,keywords:[`surprised`,`wow`]},{id:`hushed`,emoji:`๐ฏ`,name:`Hushed Face`,category:`smileys`,keywords:[`surprised`,`quiet`]},{id:`astonished`,emoji:`๐ฒ`,name:`Astonished Face`,category:`smileys`,keywords:[`shocked`]},{id:`flushed`,emoji:`๐ณ`,name:`Flushed Face`,category:`smileys`,keywords:[`embarrassed`]},{id:`pleading`,emoji:`๐ฅบ`,name:`Pleading Face`,category:`smileys`,keywords:[`puppy`,`cute`]},{id:`cry`,emoji:`๐ข`,name:`Crying Face`,category:`smileys`,keywords:[`sad`,`tear`]},{id:`sob`,emoji:`๐ญ`,name:`Loudly Crying Face`,category:`smileys`,keywords:[`sad`,`tears`]},{id:`angry`,emoji:`๐ `,name:`Angry Face`,category:`smileys`,keywords:[`mad`,`annoyed`]},{id:`rage`,emoji:`๐ก`,name:`Pouting Face`,category:`smileys`,keywords:[`angry`,`mad`]},{id:`triumph`,emoji:`๐ค`,name:`Face with Steam`,category:`smileys`,keywords:[`frustrated`]},{id:`skull`,emoji:`๐`,name:`Skull`,category:`smileys`,keywords:[`dead`,`death`]},{id:`poop`,emoji:`๐ฉ`,name:`Pile of Poo`,category:`smileys`,keywords:[`shit`,`crap`]},{id:`clown`,emoji:`๐คก`,name:`Clown Face`,category:`smileys`,keywords:[`joker`]},{id:`ghost`,emoji:`๐ป`,name:`Ghost`,category:`smileys`,keywords:[`spooky`,`halloween`]},{id:`alien`,emoji:`๐ฝ`,name:`Alien`,category:`smileys`,keywords:[`ufo`,`space`]},{id:`robot`,emoji:`๐ค`,name:`Robot`,category:`smileys`,keywords:[`bot`,`machine`]},{id:`fire`,emoji:`๐ฅ`,name:`Fire`,category:`smileys`,keywords:[`hot`,`flame`,`lit`]},{id:`100`,emoji:`๐ฏ`,name:`Hundred Points`,category:`smileys`,keywords:[`perfect`,`score`]},{id:`star`,emoji:`โญ`,name:`Star`,category:`smileys`,keywords:[`favorite`]},{id:`sparkles`,emoji:`โจ`,name:`Sparkles`,category:`smileys`,keywords:[`magic`,`shine`]},{id:`wave`,emoji:`๐`,name:`Waving Hand`,category:`people`,keywords:[`hi`,`bye`,`hello`],skinToneSupport:!0},{id:`raised_hand`,emoji:`โ`,name:`Raised Hand`,category:`people`,keywords:[`stop`,`high five`],skinToneSupport:!0},{id:`ok_hand`,emoji:`๐`,name:`OK Hand`,category:`people`,keywords:[`perfect`],skinToneSupport:!0},{id:`pinching`,emoji:`๐ค`,name:`Pinching Hand`,category:`people`,keywords:[`small`],skinToneSupport:!0},{id:`victory`,emoji:`โ๏ธ`,name:`Victory Hand`,category:`people`,keywords:[`peace`],skinToneSupport:!0},{id:`crossed_fingers`,emoji:`๐ค`,name:`Crossed Fingers`,category:`people`,keywords:[`luck`],skinToneSupport:!0},{id:`love_you`,emoji:`๐ค`,name:`Love-You Gesture`,category:`people`,keywords:[`ily`],skinToneSupport:!0},{id:`rock_on`,emoji:`๐ค`,name:`Sign of the Horns`,category:`people`,keywords:[`rock`,`metal`],skinToneSupport:!0},{id:`call_me`,emoji:`๐ค`,name:`Call Me Hand`,category:`people`,keywords:[`phone`],skinToneSupport:!0},{id:`point_left`,emoji:`๐`,name:`Backhand Index Pointing Left`,category:`people`,keywords:[],skinToneSupport:!0},{id:`point_right`,emoji:`๐`,name:`Backhand Index Pointing Right`,category:`people`,keywords:[],skinToneSupport:!0},{id:`point_up`,emoji:`๐`,name:`Backhand Index Pointing Up`,category:`people`,keywords:[],skinToneSupport:!0},{id:`point_down`,emoji:`๐`,name:`Backhand Index Pointing Down`,category:`people`,keywords:[],skinToneSupport:!0},{id:`thumbs_up`,emoji:`๐`,name:`Thumbs Up`,category:`people`,keywords:[`like`,`approve`,`yes`],skinToneSupport:!0},{id:`thumbs_down`,emoji:`๐`,name:`Thumbs Down`,category:`people`,keywords:[`dislike`,`no`],skinToneSupport:!0},{id:`fist`,emoji:`โ`,name:`Raised Fist`,category:`people`,keywords:[`power`],skinToneSupport:!0},{id:`punch`,emoji:`๐`,name:`Oncoming Fist`,category:`people`,keywords:[`punch`],skinToneSupport:!0},{id:`clap`,emoji:`๐`,name:`Clapping Hands`,category:`people`,keywords:[`applause`,`bravo`],skinToneSupport:!0},{id:`raised_hands`,emoji:`๐`,name:`Raising Hands`,category:`people`,keywords:[`celebration`],skinToneSupport:!0},{id:`open_hands`,emoji:`๐`,name:`Open Hands`,category:`people`,keywords:[`hug`],skinToneSupport:!0},{id:`palms_up`,emoji:`๐คฒ`,name:`Palms Up Together`,category:`people`,keywords:[`prayer`],skinToneSupport:!0},{id:`handshake`,emoji:`๐ค`,name:`Handshake`,category:`people`,keywords:[`deal`,`agreement`]},{id:`pray`,emoji:`๐`,name:`Folded Hands`,category:`people`,keywords:[`please`,`thank you`,`prayer`],skinToneSupport:!0},{id:`muscle`,emoji:`๐ช`,name:`Flexed Biceps`,category:`people`,keywords:[`strong`,`workout`],skinToneSupport:!0},{id:`heart`,emoji:`โค๏ธ`,name:`Red Heart`,category:`people`,keywords:[`love`]},{id:`orange_heart`,emoji:`๐งก`,name:`Orange Heart`,category:`people`,keywords:[`love`]},{id:`yellow_heart`,emoji:`๐`,name:`Yellow Heart`,category:`people`,keywords:[`love`]},{id:`green_heart`,emoji:`๐`,name:`Green Heart`,category:`people`,keywords:[`love`]},{id:`blue_heart`,emoji:`๐`,name:`Blue Heart`,category:`people`,keywords:[`love`]},{id:`purple_heart`,emoji:`๐`,name:`Purple Heart`,category:`people`,keywords:[`love`]},{id:`black_heart`,emoji:`๐ค`,name:`Black Heart`,category:`people`,keywords:[`love`]},{id:`broken_heart`,emoji:`๐`,name:`Broken Heart`,category:`people`,keywords:[`sad`]},{id:`sparkling_heart`,emoji:`๐`,name:`Sparkling Heart`,category:`people`,keywords:[`love`]},{id:`dog`,emoji:`๐ถ`,name:`Dog Face`,category:`animals`,keywords:[`puppy`,`pet`]},{id:`cat`,emoji:`๐ฑ`,name:`Cat Face`,category:`animals`,keywords:[`kitten`,`pet`]},{id:`mouse`,emoji:`๐ญ`,name:`Mouse Face`,category:`animals`,keywords:[]},{id:`hamster`,emoji:`๐น`,name:`Hamster`,category:`animals`,keywords:[`pet`]},{id:`rabbit`,emoji:`๐ฐ`,name:`Rabbit Face`,category:`animals`,keywords:[`bunny`]},{id:`fox`,emoji:`๐ฆ`,name:`Fox`,category:`animals`,keywords:[]},{id:`bear`,emoji:`๐ป`,name:`Bear`,category:`animals`,keywords:[]},{id:`panda`,emoji:`๐ผ`,name:`Panda`,category:`animals`,keywords:[]},{id:`koala`,emoji:`๐จ`,name:`Koala`,category:`animals`,keywords:[]},{id:`tiger`,emoji:`๐ฏ`,name:`Tiger Face`,category:`animals`,keywords:[]},{id:`lion`,emoji:`๐ฆ`,name:`Lion`,category:`animals`,keywords:[]},{id:`cow`,emoji:`๐ฎ`,name:`Cow Face`,category:`animals`,keywords:[]},{id:`pig`,emoji:`๐ท`,name:`Pig Face`,category:`animals`,keywords:[]},{id:`frog`,emoji:`๐ธ`,name:`Frog`,category:`animals`,keywords:[]},{id:`monkey`,emoji:`๐ต`,name:`Monkey Face`,category:`animals`,keywords:[]},{id:`chicken`,emoji:`๐`,name:`Chicken`,category:`animals`,keywords:[]},{id:`penguin`,emoji:`๐ง`,name:`Penguin`,category:`animals`,keywords:[]},{id:`bird`,emoji:`๐ฆ`,name:`Bird`,category:`animals`,keywords:[]},{id:`eagle`,emoji:`๐ฆ
`,name:`Eagle`,category:`animals`,keywords:[]},{id:`duck`,emoji:`๐ฆ`,name:`Duck`,category:`animals`,keywords:[]},{id:`owl`,emoji:`๐ฆ`,name:`Owl`,category:`animals`,keywords:[]},{id:`bat`,emoji:`๐ฆ`,name:`Bat`,category:`animals`,keywords:[]},{id:`wolf`,emoji:`๐บ`,name:`Wolf`,category:`animals`,keywords:[]},{id:`unicorn`,emoji:`๐ฆ`,name:`Unicorn`,category:`animals`,keywords:[`magic`]},{id:`bee`,emoji:`๐`,name:`Honeybee`,category:`animals`,keywords:[]},{id:`butterfly`,emoji:`๐ฆ`,name:`Butterfly`,category:`animals`,keywords:[]},{id:`snail`,emoji:`๐`,name:`Snail`,category:`animals`,keywords:[`slow`]},{id:`turtle`,emoji:`๐ข`,name:`Turtle`,category:`animals`,keywords:[`slow`]},{id:`snake`,emoji:`๐`,name:`Snake`,category:`animals`,keywords:[]},{id:`dolphin`,emoji:`๐ฌ`,name:`Dolphin`,category:`animals`,keywords:[]},{id:`whale`,emoji:`๐ณ`,name:`Spouting Whale`,category:`animals`,keywords:[]},{id:`fish`,emoji:`๐`,name:`Fish`,category:`animals`,keywords:[]},{id:`octopus`,emoji:`๐`,name:`Octopus`,category:`animals`,keywords:[]},{id:`crab`,emoji:`๐ฆ`,name:`Crab`,category:`animals`,keywords:[]},{id:`sunflower`,emoji:`๐ป`,name:`Sunflower`,category:`animals`,keywords:[`flower`]},{id:`rose`,emoji:`๐น`,name:`Rose`,category:`animals`,keywords:[`flower`]},{id:`cherry_blossom`,emoji:`๐ธ`,name:`Cherry Blossom`,category:`animals`,keywords:[`flower`]},{id:`tulip`,emoji:`๐ท`,name:`Tulip`,category:`animals`,keywords:[`flower`]},{id:`tree`,emoji:`๐ณ`,name:`Deciduous Tree`,category:`animals`,keywords:[]},{id:`palm`,emoji:`๐ด`,name:`Palm Tree`,category:`animals`,keywords:[`beach`]},{id:`cactus`,emoji:`๐ต`,name:`Cactus`,category:`animals`,keywords:[`desert`]},{id:`apple`,emoji:`๐`,name:`Red Apple`,category:`food`,keywords:[`fruit`]},{id:`banana`,emoji:`๐`,name:`Banana`,category:`food`,keywords:[`fruit`]},{id:`orange`,emoji:`๐`,name:`Tangerine`,category:`food`,keywords:[`fruit`]},{id:`lemon`,emoji:`๐`,name:`Lemon`,category:`food`,keywords:[`fruit`]},{id:`grapes`,emoji:`๐`,name:`Grapes`,category:`food`,keywords:[`fruit`]},{id:`watermelon`,emoji:`๐`,name:`Watermelon`,category:`food`,keywords:[`fruit`]},{id:`strawberry`,emoji:`๐`,name:`Strawberry`,category:`food`,keywords:[`fruit`]},{id:`peach`,emoji:`๐`,name:`Peach`,category:`food`,keywords:[`fruit`]},{id:`cherry`,emoji:`๐`,name:`Cherries`,category:`food`,keywords:[`fruit`]},{id:`avocado`,emoji:`๐ฅ`,name:`Avocado`,category:`food`,keywords:[`fruit`]},{id:`tomato`,emoji:`๐
`,name:`Tomato`,category:`food`,keywords:[`vegetable`]},{id:`carrot`,emoji:`๐ฅ`,name:`Carrot`,category:`food`,keywords:[`vegetable`]},{id:`corn`,emoji:`๐ฝ`,name:`Ear of Corn`,category:`food`,keywords:[`vegetable`]},{id:`hot_pepper`,emoji:`๐ถ๏ธ`,name:`Hot Pepper`,category:`food`,keywords:[`spicy`]},{id:`bread`,emoji:`๐`,name:`Bread`,category:`food`,keywords:[]},{id:`cheese`,emoji:`๐ง`,name:`Cheese Wedge`,category:`food`,keywords:[]},{id:`egg`,emoji:`๐ฅ`,name:`Egg`,category:`food`,keywords:[]},{id:`bacon`,emoji:`๐ฅ`,name:`Bacon`,category:`food`,keywords:[]},{id:`hamburger`,emoji:`๐`,name:`Hamburger`,category:`food`,keywords:[`burger`]},{id:`fries`,emoji:`๐`,name:`French Fries`,category:`food`,keywords:[]},{id:`pizza`,emoji:`๐`,name:`Pizza`,category:`food`,keywords:[]},{id:`hotdog`,emoji:`๐ญ`,name:`Hot Dog`,category:`food`,keywords:[]},{id:`taco`,emoji:`๐ฎ`,name:`Taco`,category:`food`,keywords:[]},{id:`burrito`,emoji:`๐ฏ`,name:`Burrito`,category:`food`,keywords:[]},{id:`sushi`,emoji:`๐ฃ`,name:`Sushi`,category:`food`,keywords:[]},{id:`ramen`,emoji:`๐`,name:`Steaming Bowl`,category:`food`,keywords:[`noodles`]},{id:`spaghetti`,emoji:`๐`,name:`Spaghetti`,category:`food`,keywords:[`pasta`]},{id:`ice_cream`,emoji:`๐จ`,name:`Ice Cream`,category:`food`,keywords:[`dessert`]},{id:`donut`,emoji:`๐ฉ`,name:`Doughnut`,category:`food`,keywords:[`dessert`]},{id:`cookie`,emoji:`๐ช`,name:`Cookie`,category:`food`,keywords:[`dessert`]},{id:`cake`,emoji:`๐`,name:`Birthday Cake`,category:`food`,keywords:[`dessert`,`birthday`]},{id:`chocolate`,emoji:`๐ซ`,name:`Chocolate Bar`,category:`food`,keywords:[`dessert`]},{id:`candy`,emoji:`๐ฌ`,name:`Candy`,category:`food`,keywords:[`sweet`]},{id:`coffee`,emoji:`โ`,name:`Hot Beverage`,category:`food`,keywords:[`tea`,`cafe`]},{id:`beer`,emoji:`๐บ`,name:`Beer Mug`,category:`food`,keywords:[`drink`,`alcohol`]},{id:`wine`,emoji:`๐ท`,name:`Wine Glass`,category:`food`,keywords:[`drink`,`alcohol`]},{id:`cocktail`,emoji:`๐ธ`,name:`Cocktail Glass`,category:`food`,keywords:[`drink`,`alcohol`]},{id:`champagne`,emoji:`๐พ`,name:`Bottle with Popping Cork`,category:`food`,keywords:[`celebration`]},{id:`car`,emoji:`๐`,name:`Automobile`,category:`travel`,keywords:[`vehicle`]},{id:`taxi`,emoji:`๐`,name:`Taxi`,category:`travel`,keywords:[`vehicle`]},{id:`bus`,emoji:`๐`,name:`Bus`,category:`travel`,keywords:[`vehicle`]},{id:`train`,emoji:`๐`,name:`Train`,category:`travel`,keywords:[`vehicle`]},{id:`airplane`,emoji:`โ๏ธ`,name:`Airplane`,category:`travel`,keywords:[`flight`,`travel`]},{id:`rocket`,emoji:`๐`,name:`Rocket`,category:`travel`,keywords:[`space`,`launch`]},{id:`ship`,emoji:`๐ข`,name:`Ship`,category:`travel`,keywords:[`boat`]},{id:`bike`,emoji:`๐ฒ`,name:`Bicycle`,category:`travel`,keywords:[`cycle`]},{id:`house`,emoji:`๐ `,name:`House`,category:`travel`,keywords:[`home`]},{id:`office`,emoji:`๐ข`,name:`Office Building`,category:`travel`,keywords:[`work`]},{id:`hospital`,emoji:`๐ฅ`,name:`Hospital`,category:`travel`,keywords:[`health`]},{id:`school`,emoji:`๐ซ`,name:`School`,category:`travel`,keywords:[`education`]},{id:`church`,emoji:`โช`,name:`Church`,category:`travel`,keywords:[`religion`]},{id:`mountain`,emoji:`โฐ๏ธ`,name:`Mountain`,category:`travel`,keywords:[`nature`]},{id:`beach`,emoji:`๐๏ธ`,name:`Beach with Umbrella`,category:`travel`,keywords:[`vacation`]},{id:`camping`,emoji:`๐๏ธ`,name:`Camping`,category:`travel`,keywords:[`outdoor`]},{id:`sun`,emoji:`โ๏ธ`,name:`Sun`,category:`travel`,keywords:[`weather`,`sunny`]},{id:`moon`,emoji:`๐`,name:`Crescent Moon`,category:`travel`,keywords:[`night`]},{id:`cloud`,emoji:`โ๏ธ`,name:`Cloud`,category:`travel`,keywords:[`weather`]},{id:`rain`,emoji:`๐ง๏ธ`,name:`Cloud with Rain`,category:`travel`,keywords:[`weather`]},{id:`snow`,emoji:`โ๏ธ`,name:`Snowflake`,category:`travel`,keywords:[`weather`,`cold`]},{id:`lightning`,emoji:`โก`,name:`High Voltage`,category:`travel`,keywords:[`electricity`,`thunder`]},{id:`rainbow`,emoji:`๐`,name:`Rainbow`,category:`travel`,keywords:[`weather`,`pride`]},{id:`soccer`,emoji:`โฝ`,name:`Soccer Ball`,category:`activities`,keywords:[`football`,`sport`]},{id:`basketball`,emoji:`๐`,name:`Basketball`,category:`activities`,keywords:[`sport`]},{id:`football`,emoji:`๐`,name:`American Football`,category:`activities`,keywords:[`sport`]},{id:`baseball`,emoji:`โพ`,name:`Baseball`,category:`activities`,keywords:[`sport`]},{id:`tennis`,emoji:`๐พ`,name:`Tennis`,category:`activities`,keywords:[`sport`]},{id:`golf`,emoji:`โณ`,name:`Flag in Hole`,category:`activities`,keywords:[`sport`]},{id:`trophy`,emoji:`๐`,name:`Trophy`,category:`activities`,keywords:[`winner`,`award`]},{id:`medal`,emoji:`๐
`,name:`Sports Medal`,category:`activities`,keywords:[`winner`,`award`]},{id:`video_game`,emoji:`๐ฎ`,name:`Video Game`,category:`activities`,keywords:[`gaming`,`controller`]},{id:`dice`,emoji:`๐ฒ`,name:`Game Die`,category:`activities`,keywords:[`gambling`]},{id:`chess`,emoji:`โ๏ธ`,name:`Chess Pawn`,category:`activities`,keywords:[`game`]},{id:`bowling`,emoji:`๐ณ`,name:`Bowling`,category:`activities`,keywords:[`sport`]},{id:`guitar`,emoji:`๐ธ`,name:`Guitar`,category:`activities`,keywords:[`music`]},{id:`microphone`,emoji:`๐ค`,name:`Microphone`,category:`activities`,keywords:[`music`,`karaoke`]},{id:`headphones`,emoji:`๐ง`,name:`Headphones`,category:`activities`,keywords:[`music`]},{id:`art`,emoji:`๐จ`,name:`Artist Palette`,category:`activities`,keywords:[`painting`]},{id:`ticket`,emoji:`๐ซ`,name:`Ticket`,category:`activities`,keywords:[`event`]},{id:`party`,emoji:`๐`,name:`Party Popper`,category:`activities`,keywords:[`celebration`,`tada`]},{id:`balloon`,emoji:`๐`,name:`Balloon`,category:`activities`,keywords:[`party`]},{id:`gift`,emoji:`๐`,name:`Wrapped Gift`,category:`activities`,keywords:[`present`]},{id:`christmas_tree`,emoji:`๐`,name:`Christmas Tree`,category:`activities`,keywords:[`holiday`]},{id:`phone`,emoji:`๐ฑ`,name:`Mobile Phone`,category:`objects`,keywords:[`smartphone`]},{id:`computer`,emoji:`๐ป`,name:`Laptop`,category:`objects`,keywords:[`pc`]},{id:`keyboard`,emoji:`โจ๏ธ`,name:`Keyboard`,category:`objects`,keywords:[]},{id:`camera`,emoji:`๐ท`,name:`Camera`,category:`objects`,keywords:[`photo`]},{id:`tv`,emoji:`๐บ`,name:`Television`,category:`objects`,keywords:[]},{id:`radio`,emoji:`๐ป`,name:`Radio`,category:`objects`,keywords:[]},{id:`clock`,emoji:`๐`,name:`One O'Clock`,category:`objects`,keywords:[`time`]},{id:`hourglass`,emoji:`โณ`,name:`Hourglass`,category:`objects`,keywords:[`time`]},{id:`alarm`,emoji:`โฐ`,name:`Alarm Clock`,category:`objects`,keywords:[`time`]},{id:`bulb`,emoji:`๐ก`,name:`Light Bulb`,category:`objects`,keywords:[`idea`]},{id:`money`,emoji:`๐ฐ`,name:`Money Bag`,category:`objects`,keywords:[`rich`,`cash`]},{id:`dollar`,emoji:`๐ต`,name:`Dollar Banknote`,category:`objects`,keywords:[`money`]},{id:`credit_card`,emoji:`๐ณ`,name:`Credit Card`,category:`objects`,keywords:[`payment`]},{id:`gem`,emoji:`๐`,name:`Gem Stone`,category:`objects`,keywords:[`diamond`,`jewel`]},{id:`tools`,emoji:`๐ง`,name:`Wrench`,category:`objects`,keywords:[`fix`]},{id:`hammer`,emoji:`๐จ`,name:`Hammer`,category:`objects`,keywords:[`tool`]},{id:`lock`,emoji:`๐`,name:`Locked`,category:`objects`,keywords:[`secure`]},{id:`key`,emoji:`๐`,name:`Key`,category:`objects`,keywords:[`unlock`]},{id:`magnifying`,emoji:`๐`,name:`Magnifying Glass`,category:`objects`,keywords:[`search`]},{id:`envelope`,emoji:`โ๏ธ`,name:`Envelope`,category:`objects`,keywords:[`mail`,`email`]},{id:`book`,emoji:`๐`,name:`Open Book`,category:`objects`,keywords:[`read`]},{id:`notebook`,emoji:`๐`,name:`Notebook`,category:`objects`,keywords:[]},{id:`pencil`,emoji:`โ๏ธ`,name:`Pencil`,category:`objects`,keywords:[`write`]},{id:`scissors`,emoji:`โ๏ธ`,name:`Scissors`,category:`objects`,keywords:[`cut`]},{id:`paperclip`,emoji:`๐`,name:`Paperclip`,category:`objects`,keywords:[`attachment`]},{id:`pushpin`,emoji:`๐`,name:`Pushpin`,category:`objects`,keywords:[`pin`]},{id:`check`,emoji:`โ
`,name:`Check Mark Button`,category:`symbols`,keywords:[`done`,`yes`]},{id:`cross`,emoji:`โ`,name:`Cross Mark`,category:`symbols`,keywords:[`no`,`wrong`]},{id:`question`,emoji:`โ`,name:`Question Mark`,category:`symbols`,keywords:[]},{id:`exclamation`,emoji:`โ`,name:`Exclamation Mark`,category:`symbols`,keywords:[`important`]},{id:`warning`,emoji:`โ ๏ธ`,name:`Warning`,category:`symbols`,keywords:[`caution`]},{id:`no_entry`,emoji:`โ`,name:`No Entry`,category:`symbols`,keywords:[`stop`]},{id:`prohibited`,emoji:`๐ซ`,name:`Prohibited`,category:`symbols`,keywords:[`forbidden`]},{id:`plus`,emoji:`โ`,name:`Plus`,category:`symbols`,keywords:[`add`]},{id:`minus`,emoji:`โ`,name:`Minus`,category:`symbols`,keywords:[`subtract`]},{id:`multiply`,emoji:`โ๏ธ`,name:`Multiply`,category:`symbols`,keywords:[]},{id:`divide`,emoji:`โ`,name:`Divide`,category:`symbols`,keywords:[]},{id:`infinity`,emoji:`โพ๏ธ`,name:`Infinity`,category:`symbols`,keywords:[`forever`]},{id:`recycle`,emoji:`โป๏ธ`,name:`Recycling Symbol`,category:`symbols`,keywords:[`environment`]},{id:`zzz`,emoji:`๐ค`,name:`Zzz`,category:`symbols`,keywords:[`sleep`,`tired`]},{id:`speech`,emoji:`๐ฌ`,name:`Speech Balloon`,category:`symbols`,keywords:[`chat`,`comment`]},{id:`thought`,emoji:`๐ญ`,name:`Thought Balloon`,category:`symbols`,keywords:[`thinking`]},{id:`music_note`,emoji:`๐ต`,name:`Musical Note`,category:`symbols`,keywords:[`song`]},{id:`hash_symbol`,emoji:`#๏ธโฃ`,name:`Hash Key`,category:`symbols`,keywords:[`number`,`hashtag`]},{id:`asterisk`,emoji:`*๏ธโฃ`,name:`Asterisk Key`,category:`symbols`,keywords:[]},{id:`arrow_right`,emoji:`โก๏ธ`,name:`Right Arrow`,category:`symbols`,keywords:[]},{id:`arrow_left`,emoji:`โฌ
๏ธ`,name:`Left Arrow`,category:`symbols`,keywords:[]},{id:`arrow_up`,emoji:`โฌ๏ธ`,name:`Up Arrow`,category:`symbols`,keywords:[]},{id:`arrow_down`,emoji:`โฌ๏ธ`,name:`Down Arrow`,category:`symbols`,keywords:[]},{id:`flag_white`,emoji:`๐ณ๏ธ`,name:`White Flag`,category:`flags`,keywords:[`surrender`]},{id:`flag_black`,emoji:`๐ด`,name:`Black Flag`,category:`flags`,keywords:[]},{id:`flag_checkered`,emoji:`๐`,name:`Checkered Flag`,category:`flags`,keywords:[`racing`,`finish`]},{id:`flag_us`,emoji:`๐บ๐ธ`,name:`Flag: United States`,category:`flags`,keywords:[`usa`,`america`]},{id:`flag_gb`,emoji:`๐ฌ๐ง`,name:`Flag: United Kingdom`,category:`flags`,keywords:[`uk`,`britain`]},{id:`flag_fr`,emoji:`๐ซ๐ท`,name:`Flag: France`,category:`flags`,keywords:[`french`]},{id:`flag_de`,emoji:`๐ฉ๐ช`,name:`Flag: Germany`,category:`flags`,keywords:[`german`]},{id:`flag_es`,emoji:`๐ช๐ธ`,name:`Flag: Spain`,category:`flags`,keywords:[`spanish`]},{id:`flag_it`,emoji:`๐ฎ๐น`,name:`Flag: Italy`,category:`flags`,keywords:[`italian`]},{id:`flag_jp`,emoji:`๐ฏ๐ต`,name:`Flag: Japan`,category:`flags`,keywords:[`japanese`]},{id:`flag_cn`,emoji:`๐จ๐ณ`,name:`Flag: China`,category:`flags`,keywords:[`chinese`]},{id:`flag_kr`,emoji:`๐ฐ๐ท`,name:`Flag: South Korea`,category:`flags`,keywords:[`korean`]},{id:`flag_br`,emoji:`๐ง๐ท`,name:`Flag: Brazil`,category:`flags`,keywords:[`brazilian`]},{id:`flag_ca`,emoji:`๐จ๐ฆ`,name:`Flag: Canada`,category:`flags`,keywords:[`canadian`]},{id:`flag_au`,emoji:`๐ฆ๐บ`,name:`Flag: Australia`,category:`flags`,keywords:[`australian`]}],d=[`recent`,`smileys`,`people`,`animals`,`food`,`travel`,`activities`,`objects`,`symbols`,`flags`];function f(e={}){let{maxRecent:t=20,defaultSkinTone:n=`default`,storageKey:i=`waka-recent-emojis`}=e,[a,o]=r.useState(!1),[s,c]=r.useState(null),[l,u]=r.useState(n),[d,f]=r.useState([]);r.useEffect(()=>{if(typeof window<`u`)try{let e=localStorage.getItem(i);e&&f(JSON.parse(e))}catch{}},[i]);let p=r.useCallback(e=>{f(n=>{let r=[e,...n.filter(t=>t!==e)].slice(0,t);if(typeof window<`u`)try{localStorage.setItem(i,JSON.stringify(r))}catch{}return r})},[t,i]);return{open:a,setOpen:o,selectedEmoji:s,recentEmojis:d,skinTone:l,setSkinTone:u,addToRecent:p,clearRecent:r.useCallback(()=>{if(f([]),typeof window<`u`)try{localStorage.removeItem(i)}catch{}},[i]),selectEmoji:r.useCallback(e=>{c(e),p(e)},[p])}}function p(e,t){if(t===`default`)return e;let n=o[t];if(Object.values(o).some(t=>t&&e.includes(t))){let t=e;return Object.values(o).forEach(e=>{e&&(t=t.replace(e,``))}),t+n}return e+n}function m(e,t){let n=t.toLowerCase();return e.filter(e=>{let r=e.name.toLowerCase().includes(n),i=e.keywords?.some(e=>e.toLowerCase().includes(n)),a=e.emoji===t;return r||i||a})}function h({reactions:e,onSelect:t,skinTone:n}){return(0,a.jsx)(`div`,{className:`flex items-center gap-1 p-2 border-b`,children:e.map((e,r)=>{let i=u.find(t=>t.emoji===e)?.skinToneSupport?p(e,n):e;return(0,a.jsx)(`button`,{onClick:()=>t(i),className:`flex items-center justify-center w-9 h-9 rounded-lg text-xl hover:bg-accent transition-all duration-150 hover:scale-110 active:scale-95`,children:i},r)})})}function g({activeCategory:e,onCategoryChange:n,showRecent:r,hasRecent:i}){return(0,a.jsx)(`div`,{className:`flex items-center gap-0.5 p-1 border-b overflow-x-auto`,children:(r&&i?d:d.filter(e=>e!==`recent`)).map(r=>(0,a.jsx)(`button`,{onClick:()=>n(r),className:t.cn(`flex items-center justify-center w-8 h-8 rounded-md transition-colors`,e===r?`bg-accent text-accent-foreground`:`hover:bg-accent/50 text-muted-foreground`),title:c[r],children:s[r]},r))})}function _({skinTone:e,onSkinToneChange:n}){return(0,a.jsxs)(`div`,{className:`flex items-center gap-1 p-2 border-t`,children:[(0,a.jsx)(`span`,{className:`text-xs text-muted-foreground mr-2`,children:`Skin tone:`}),[`default`,`light`,`medium-light`,`medium`,`medium-dark`,`dark`].map(r=>(0,a.jsx)(`button`,{onClick:()=>n(r),className:t.cn(`flex items-center justify-center w-7 h-7 rounded text-base transition-all hover:scale-110`,e===r&&`ring-2 ring-primary ring-offset-1`),children:p(`๐`,r)},r))]})}function v({emoji:e,skinTone:t}){if(!e)return(0,a.jsxs)(`div`,{className:`flex items-center gap-3 p-2 border-t h-14`,children:[(0,a.jsx)(`div`,{className:`w-10 h-10 flex items-center justify-center text-3xl text-muted-foreground/30`,children:(0,a.jsx)(i.Smile,{})}),(0,a.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Hover over an emoji to preview`})]});let n=`url`in e,r=n?null:e.skinToneSupport?p(e.emoji,t):e.emoji;return(0,a.jsxs)(`div`,{className:`flex items-center gap-3 p-2 border-t h-14 animate-in fade-in-50 duration-150`,children:[(0,a.jsx)(`div`,{className:`w-10 h-10 flex items-center justify-center text-3xl`,children:n?(0,a.jsx)(`img`,{src:e.url,alt:e.name,className:`w-8 h-8 object-contain`}):r}),(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`div`,{className:`text-sm font-medium`,children:e.name}),(0,a.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[`:`,e.id||e.name.toLowerCase().replace(/\s+/g,`_`),`:`]})]})]})}function y({emojis:e,customEmojis:n,recentEmojis:o,activeCategory:s,skinTone:c,columns:l,onSelect:d,onHover:f,selectedIndex:m,showRecent:h,searchMode:g=!1}){let _=r.useRef(null),v=r.useMemo(()=>g?e:s===`recent`&&h?o.map(e=>u.find(t=>t.emoji===e||p(t.emoji,c)===e)).filter(Boolean):e.filter(e=>e.category===s),[e,s,o,c,h,g]);return r.useEffect(()=>{(_.current?.querySelector(`[data-index="${m}"]`))?.scrollIntoView({block:`nearest`})},[m]),(0,a.jsxs)(`div`,{ref:_,className:`p-2 h-52 overflow-y-auto`,children:[s===`recent`&&n&&n.length>0&&(0,a.jsxs)(`div`,{className:`mb-2`,children:[(0,a.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground mb-1 px-1`,children:`Custom`}),(0,a.jsx)(`div`,{className:`grid gap-1`,style:{gridTemplateColumns:`repeat(${l}, 1fr)`},children:n.map((e,n)=>(0,a.jsx)(`button`,{"data-index":n,onClick:()=>d(e.url,e),onMouseEnter:()=>f(e),onMouseLeave:()=>f(null),className:t.cn(`flex items-center justify-center w-9 h-9 rounded-lg transition-all duration-150 hover:bg-accent hover:scale-110 active:scale-95`,m===n&&`bg-accent ring-2 ring-primary`),children:(0,a.jsx)(`img`,{src:e.url,alt:e.name,className:`w-6 h-6 object-contain`})},e.id))})]}),(0,a.jsx)(`div`,{className:`grid gap-1`,style:{gridTemplateColumns:`repeat(${l}, 1fr)`},children:v.map((e,r)=>{let i=e.skinToneSupport?p(e.emoji,c):e.emoji,o=n&&s===`recent`?r+n.length:r;return(0,a.jsx)(`button`,{"data-index":o,onClick:()=>d(i,e),onMouseEnter:()=>f(e),onMouseLeave:()=>f(null),className:t.cn(`flex items-center justify-center w-9 h-9 rounded-lg text-xl transition-all duration-150 hover:bg-accent hover:scale-110 active:scale-95`,m===o&&`bg-accent ring-2 ring-primary`),children:i},e.id)})}),v.length===0&&(0,a.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full text-muted-foreground`,children:[(0,a.jsx)(i.Smile,{className:`h-8 w-8 mb-2 opacity-50`}),(0,a.jsx)(`span`,{className:`text-sm`,children:`No emojis found`})]})]})}function b({onSelect:e,quickReactions:o=l,customEmojis:s,showSearch:c=!0,showRecent:f=!0,showSkinTones:b=!0,showCategories:x=!0,showPreview:S=!0,mode:C=`popover`,skinTone:w,onSkinToneChange:T,columns:E=8,maxRecent:D=20,open:O,onOpenChange:ee,trigger:te,className:ne,disabled:k=!1}){let[re,A]=r.useState(!1),[j,M]=r.useState(`default`),[N,P]=r.useState(``),[F,I]=r.useState(`smileys`),[L,R]=r.useState(null),[z,B]=r.useState(0),[V,H]=r.useState([]),U=r.useRef(null),W=r.useRef(null),G=O!==void 0,K=G?O:re,q=G?ee||(()=>{}):A,J=w!==void 0,Y=J?w:j,ie=J?T||(()=>{}):M;r.useEffect(()=>{if(typeof window<`u`&&f)try{let e=localStorage.getItem(`waka-recent-emojis`);e&&H(JSON.parse(e))}catch{}},[f]);let X=r.useMemo(()=>N?m(u,N):u,[N]),Z=r.useMemo(()=>N?X:F===`recent`&&f?V.map(e=>u.find(t=>t.emoji===e)).filter(Boolean):u.filter(e=>e.category===F),[X,N,F,V,f]),Q=r.useCallback((t,n)=>{e?.(t,n),f&&!(`url`in n)&&H(e=>{let n=[t,...e.filter(e=>e!==t)].slice(0,D);try{localStorage.setItem(`waka-recent-emojis`,JSON.stringify(n))}catch{}return n}),q(!1),P(``)},[e,f,D,q]);r.useEffect(()=>{if(!K)return;let e=e=>{switch(e.key){case`ArrowRight`:e.preventDefault(),B(e=>Math.min(e+1,Z.length-1));break;case`ArrowLeft`:e.preventDefault(),B(e=>Math.max(e-1,0));break;case`ArrowDown`:e.preventDefault(),B(e=>Math.min(e+E,Z.length-1));break;case`ArrowUp`:e.preventDefault(),B(e=>Math.max(e-E,0));break;case`Enter`:e.preventDefault();let t=Z[z];t&&Q(t.skinToneSupport?p(t.emoji,Y):t.emoji,t);break;case`Escape`:e.preventDefault(),q(!1);break;case`Tab`:if(!e.shiftKey){e.preventDefault();let t=f&&V.length>0?d:d.filter(e=>e!==`recent`);I(t[(t.indexOf(F)+1)%t.length]),B(0)}break}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[K,z,Z,E,Y,Q,q,F,f,V.length]),r.useEffect(()=>{K&&c&&setTimeout(()=>U.current?.focus(),0),K||(P(``),B(0))},[K,c]),r.useEffect(()=>{B(0)},[F,N]);let $=(0,a.jsxs)(`div`,{ref:W,className:t.cn(`w-80 bg-popover rounded-lg border shadow-lg overflow-hidden`,C===`inline`&&`shadow-none`,ne),children:[o.length>0&&(0,a.jsx)(h,{reactions:o,onSelect:e=>{let t=u.find(t=>t.emoji===e||p(t.emoji,Y)===e);t&&Q(e,t)},skinTone:Y}),c&&(0,a.jsx)(`div`,{className:`p-2 border-b`,children:(0,a.jsxs)(`div`,{className:`relative`,children:[(0,a.jsx)(i.Search,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`}),(0,a.jsx)(`input`,{ref:U,type:`text`,value:N,onChange:e=>P(e.target.value),placeholder:`Search emojis...`,className:`w-full h-9 pl-9 pr-8 rounded-md border bg-background text-sm outline-none focus:ring-2 focus:ring-primary`}),N&&(0,a.jsx)(`button`,{onClick:()=>P(``),className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,children:(0,a.jsx)(i.X,{className:`h-4 w-4`})})]})}),x&&!N&&(0,a.jsx)(g,{activeCategory:F,onCategoryChange:I,showRecent:f,hasRecent:V.length>0}),(0,a.jsx)(y,{emojis:N?X:u,customEmojis:s,recentEmojis:V,activeCategory:F,searchMode:!!N,skinTone:Y,columns:E,onSelect:Q,onHover:R,selectedIndex:z,showRecent:f&&!N}),b&&(0,a.jsx)(_,{skinTone:Y,onSkinToneChange:ie}),S&&(0,a.jsx)(v,{emoji:L,skinTone:Y})]});return C===`inline`?$:(0,a.jsxs)(n.Popover,{open:K,onOpenChange:q,children:[(0,a.jsx)(n.PopoverTrigger,{asChild:!0,disabled:k,children:te||(0,a.jsx)(`button`,{className:t.cn(`inline-flex items-center justify-center w-9 h-9 rounded-md border bg-background hover:bg-accent transition-colors`,k&&`opacity-50 cursor-not-allowed`),children:(0,a.jsx)(i.Smile,{className:`h-5 w-5`})})}),(0,a.jsx)(n.PopoverContent,{className:`w-auto p-0`,align:`start`,sideOffset:8,children:$})]})}b.displayName=`WakaReactionPicker`,exports.default=b,exports.useReactionPicker=f;
|
|
1
|
+
"use client";"use client";const e=require("../../_virtual/_rolldown/runtime.cjs.js"),t=require("../../utils/cn.cjs.js"),n=require("../popover/index.cjs.js");let r=require("react");r=e.__toESM(r);let i=require("lucide-react"),a=require("react/jsx-runtime");var o={default:``,light:`๐ป`,"medium-light":`๐ผ`,medium:`๐ฝ`,"medium-dark":`๐พ`,dark:`๐ฟ`},s={recent:(0,a.jsx)(i.Clock,{className:`h-4 w-4`}),smileys:(0,a.jsx)(i.Smile,{className:`h-4 w-4`}),people:(0,a.jsx)(i.Heart,{className:`h-4 w-4`}),animals:(0,a.jsx)(i.Dog,{className:`h-4 w-4`}),food:(0,a.jsx)(i.Pizza,{className:`h-4 w-4`}),travel:(0,a.jsx)(i.Plane,{className:`h-4 w-4`}),activities:(0,a.jsx)(i.ThumbsUp,{className:`h-4 w-4`}),objects:(0,a.jsx)(i.Lightbulb,{className:`h-4 w-4`}),symbols:(0,a.jsx)(i.Hash,{className:`h-4 w-4`}),flags:(0,a.jsx)(i.Flag,{className:`h-4 w-4`})},c={recent:`Recent`,smileys:`Smileys & Emotion`,people:`People & Body`,animals:`Animals & Nature`,food:`Food & Drink`,travel:`Travel & Places`,activities:`Activities`,objects:`Objects`,symbols:`Symbols`,flags:`Flags`},l=[`๐`,`โค๏ธ`,`๐`,`๐ฎ`,`๐ข`,`๐`],u=[{id:`grinning`,emoji:`๐`,name:`Grinning Face`,category:`smileys`,keywords:[`happy`,`smile`]},{id:`grin`,emoji:`๐`,name:`Beaming Face`,category:`smileys`,keywords:[`happy`,`smile`]},{id:`joy`,emoji:`๐`,name:`Face with Tears of Joy`,category:`smileys`,keywords:[`laugh`,`crying`]},{id:`rofl`,emoji:`๐คฃ`,name:`Rolling on Floor Laughing`,category:`smileys`,keywords:[`laugh`]},{id:`smile`,emoji:`๐`,name:`Smiling Face`,category:`smileys`,keywords:[`happy`,`blush`]},{id:`sweat_smile`,emoji:`๐
`,name:`Grinning Face with Sweat`,category:`smileys`,keywords:[`nervous`]},{id:`laughing`,emoji:`๐`,name:`Grinning Squinting Face`,category:`smileys`,keywords:[`happy`]},{id:`wink`,emoji:`๐`,name:`Winking Face`,category:`smileys`,keywords:[`flirt`]},{id:`blush`,emoji:`๐`,name:`Smiling Face with Smiling Eyes`,category:`smileys`,keywords:[`happy`]},{id:`yum`,emoji:`๐`,name:`Face Savoring Food`,category:`smileys`,keywords:[`delicious`,`tongue`]},{id:`sunglasses`,emoji:`๐`,name:`Smiling Face with Sunglasses`,category:`smileys`,keywords:[`cool`]},{id:`heart_eyes`,emoji:`๐`,name:`Smiling Face with Heart-Eyes`,category:`smileys`,keywords:[`love`]},{id:`kissing_heart`,emoji:`๐`,name:`Face Blowing a Kiss`,category:`smileys`,keywords:[`love`]},{id:`thinking`,emoji:`๐ค`,name:`Thinking Face`,category:`smileys`,keywords:[`hmm`,`consider`]},{id:`neutral`,emoji:`๐`,name:`Neutral Face`,category:`smileys`,keywords:[`meh`]},{id:`expressionless`,emoji:`๐`,name:`Expressionless Face`,category:`smileys`,keywords:[`blank`]},{id:`unamused`,emoji:`๐`,name:`Unamused Face`,category:`smileys`,keywords:[`annoyed`]},{id:`rolling_eyes`,emoji:`๐`,name:`Face with Rolling Eyes`,category:`smileys`,keywords:[`whatever`]},{id:`grimacing`,emoji:`๐ฌ`,name:`Grimacing Face`,category:`smileys`,keywords:[`awkward`]},{id:`relieved`,emoji:`๐`,name:`Relieved Face`,category:`smileys`,keywords:[`calm`,`peaceful`]},{id:`pensive`,emoji:`๐`,name:`Pensive Face`,category:`smileys`,keywords:[`sad`,`thoughtful`]},{id:`sleepy`,emoji:`๐ช`,name:`Sleepy Face`,category:`smileys`,keywords:[`tired`]},{id:`drooling`,emoji:`๐คค`,name:`Drooling Face`,category:`smileys`,keywords:[`hungry`]},{id:`sleeping`,emoji:`๐ด`,name:`Sleeping Face`,category:`smileys`,keywords:[`zzz`,`tired`]},{id:`mask`,emoji:`๐ท`,name:`Face with Medical Mask`,category:`smileys`,keywords:[`sick`,`covid`]},{id:`thermometer`,emoji:`๐ค`,name:`Face with Thermometer`,category:`smileys`,keywords:[`sick`,`fever`]},{id:`nerd`,emoji:`๐ค`,name:`Nerd Face`,category:`smileys`,keywords:[`geek`,`glasses`]},{id:`confused`,emoji:`๐`,name:`Confused Face`,category:`smileys`,keywords:[`puzzled`]},{id:`worried`,emoji:`๐`,name:`Worried Face`,category:`smileys`,keywords:[`concerned`,`anxious`]},{id:`slightly_frowning`,emoji:`๐`,name:`Slightly Frowning Face`,category:`smileys`,keywords:[`sad`]},{id:`frowning`,emoji:`โน๏ธ`,name:`Frowning Face`,category:`smileys`,keywords:[`sad`]},{id:`open_mouth`,emoji:`๐ฎ`,name:`Face with Open Mouth`,category:`smileys`,keywords:[`surprised`,`wow`]},{id:`hushed`,emoji:`๐ฏ`,name:`Hushed Face`,category:`smileys`,keywords:[`surprised`,`quiet`]},{id:`astonished`,emoji:`๐ฒ`,name:`Astonished Face`,category:`smileys`,keywords:[`shocked`]},{id:`flushed`,emoji:`๐ณ`,name:`Flushed Face`,category:`smileys`,keywords:[`embarrassed`]},{id:`pleading`,emoji:`๐ฅบ`,name:`Pleading Face`,category:`smileys`,keywords:[`puppy`,`cute`]},{id:`cry`,emoji:`๐ข`,name:`Crying Face`,category:`smileys`,keywords:[`sad`,`tear`]},{id:`sob`,emoji:`๐ญ`,name:`Loudly Crying Face`,category:`smileys`,keywords:[`sad`,`tears`]},{id:`angry`,emoji:`๐ `,name:`Angry Face`,category:`smileys`,keywords:[`mad`,`annoyed`]},{id:`rage`,emoji:`๐ก`,name:`Pouting Face`,category:`smileys`,keywords:[`angry`,`mad`]},{id:`triumph`,emoji:`๐ค`,name:`Face with Steam`,category:`smileys`,keywords:[`frustrated`]},{id:`skull`,emoji:`๐`,name:`Skull`,category:`smileys`,keywords:[`dead`,`death`]},{id:`poop`,emoji:`๐ฉ`,name:`Pile of Poo`,category:`smileys`,keywords:[`shit`,`crap`]},{id:`clown`,emoji:`๐คก`,name:`Clown Face`,category:`smileys`,keywords:[`joker`]},{id:`ghost`,emoji:`๐ป`,name:`Ghost`,category:`smileys`,keywords:[`spooky`,`halloween`]},{id:`alien`,emoji:`๐ฝ`,name:`Alien`,category:`smileys`,keywords:[`ufo`,`space`]},{id:`robot`,emoji:`๐ค`,name:`Robot`,category:`smileys`,keywords:[`bot`,`machine`]},{id:`fire`,emoji:`๐ฅ`,name:`Fire`,category:`smileys`,keywords:[`hot`,`flame`,`lit`]},{id:`100`,emoji:`๐ฏ`,name:`Hundred Points`,category:`smileys`,keywords:[`perfect`,`score`]},{id:`star`,emoji:`โญ`,name:`Star`,category:`smileys`,keywords:[`favorite`]},{id:`sparkles`,emoji:`โจ`,name:`Sparkles`,category:`smileys`,keywords:[`magic`,`shine`]},{id:`wave`,emoji:`๐`,name:`Waving Hand`,category:`people`,keywords:[`hi`,`bye`,`hello`],skinToneSupport:!0},{id:`raised_hand`,emoji:`โ`,name:`Raised Hand`,category:`people`,keywords:[`stop`,`high five`],skinToneSupport:!0},{id:`ok_hand`,emoji:`๐`,name:`OK Hand`,category:`people`,keywords:[`perfect`],skinToneSupport:!0},{id:`pinching`,emoji:`๐ค`,name:`Pinching Hand`,category:`people`,keywords:[`small`],skinToneSupport:!0},{id:`victory`,emoji:`โ๏ธ`,name:`Victory Hand`,category:`people`,keywords:[`peace`],skinToneSupport:!0},{id:`crossed_fingers`,emoji:`๐ค`,name:`Crossed Fingers`,category:`people`,keywords:[`luck`],skinToneSupport:!0},{id:`love_you`,emoji:`๐ค`,name:`Love-You Gesture`,category:`people`,keywords:[`ily`],skinToneSupport:!0},{id:`rock_on`,emoji:`๐ค`,name:`Sign of the Horns`,category:`people`,keywords:[`rock`,`metal`],skinToneSupport:!0},{id:`call_me`,emoji:`๐ค`,name:`Call Me Hand`,category:`people`,keywords:[`phone`],skinToneSupport:!0},{id:`point_left`,emoji:`๐`,name:`Backhand Index Pointing Left`,category:`people`,keywords:[],skinToneSupport:!0},{id:`point_right`,emoji:`๐`,name:`Backhand Index Pointing Right`,category:`people`,keywords:[],skinToneSupport:!0},{id:`point_up`,emoji:`๐`,name:`Backhand Index Pointing Up`,category:`people`,keywords:[],skinToneSupport:!0},{id:`point_down`,emoji:`๐`,name:`Backhand Index Pointing Down`,category:`people`,keywords:[],skinToneSupport:!0},{id:`thumbs_up`,emoji:`๐`,name:`Thumbs Up`,category:`people`,keywords:[`like`,`approve`,`yes`],skinToneSupport:!0},{id:`thumbs_down`,emoji:`๐`,name:`Thumbs Down`,category:`people`,keywords:[`dislike`,`no`],skinToneSupport:!0},{id:`fist`,emoji:`โ`,name:`Raised Fist`,category:`people`,keywords:[`power`],skinToneSupport:!0},{id:`punch`,emoji:`๐`,name:`Oncoming Fist`,category:`people`,keywords:[`punch`],skinToneSupport:!0},{id:`clap`,emoji:`๐`,name:`Clapping Hands`,category:`people`,keywords:[`applause`,`bravo`],skinToneSupport:!0},{id:`raised_hands`,emoji:`๐`,name:`Raising Hands`,category:`people`,keywords:[`celebration`],skinToneSupport:!0},{id:`open_hands`,emoji:`๐`,name:`Open Hands`,category:`people`,keywords:[`hug`],skinToneSupport:!0},{id:`palms_up`,emoji:`๐คฒ`,name:`Palms Up Together`,category:`people`,keywords:[`prayer`],skinToneSupport:!0},{id:`handshake`,emoji:`๐ค`,name:`Handshake`,category:`people`,keywords:[`deal`,`agreement`]},{id:`pray`,emoji:`๐`,name:`Folded Hands`,category:`people`,keywords:[`please`,`thank you`,`prayer`],skinToneSupport:!0},{id:`muscle`,emoji:`๐ช`,name:`Flexed Biceps`,category:`people`,keywords:[`strong`,`workout`],skinToneSupport:!0},{id:`heart`,emoji:`โค๏ธ`,name:`Red Heart`,category:`people`,keywords:[`love`]},{id:`orange_heart`,emoji:`๐งก`,name:`Orange Heart`,category:`people`,keywords:[`love`]},{id:`yellow_heart`,emoji:`๐`,name:`Yellow Heart`,category:`people`,keywords:[`love`]},{id:`green_heart`,emoji:`๐`,name:`Green Heart`,category:`people`,keywords:[`love`]},{id:`blue_heart`,emoji:`๐`,name:`Blue Heart`,category:`people`,keywords:[`love`]},{id:`purple_heart`,emoji:`๐`,name:`Purple Heart`,category:`people`,keywords:[`love`]},{id:`black_heart`,emoji:`๐ค`,name:`Black Heart`,category:`people`,keywords:[`love`]},{id:`broken_heart`,emoji:`๐`,name:`Broken Heart`,category:`people`,keywords:[`sad`]},{id:`sparkling_heart`,emoji:`๐`,name:`Sparkling Heart`,category:`people`,keywords:[`love`]},{id:`dog`,emoji:`๐ถ`,name:`Dog Face`,category:`animals`,keywords:[`puppy`,`pet`]},{id:`cat`,emoji:`๐ฑ`,name:`Cat Face`,category:`animals`,keywords:[`kitten`,`pet`]},{id:`mouse`,emoji:`๐ญ`,name:`Mouse Face`,category:`animals`,keywords:[]},{id:`hamster`,emoji:`๐น`,name:`Hamster`,category:`animals`,keywords:[`pet`]},{id:`rabbit`,emoji:`๐ฐ`,name:`Rabbit Face`,category:`animals`,keywords:[`bunny`]},{id:`fox`,emoji:`๐ฆ`,name:`Fox`,category:`animals`,keywords:[]},{id:`bear`,emoji:`๐ป`,name:`Bear`,category:`animals`,keywords:[]},{id:`panda`,emoji:`๐ผ`,name:`Panda`,category:`animals`,keywords:[]},{id:`koala`,emoji:`๐จ`,name:`Koala`,category:`animals`,keywords:[]},{id:`tiger`,emoji:`๐ฏ`,name:`Tiger Face`,category:`animals`,keywords:[]},{id:`lion`,emoji:`๐ฆ`,name:`Lion`,category:`animals`,keywords:[]},{id:`cow`,emoji:`๐ฎ`,name:`Cow Face`,category:`animals`,keywords:[]},{id:`pig`,emoji:`๐ท`,name:`Pig Face`,category:`animals`,keywords:[]},{id:`frog`,emoji:`๐ธ`,name:`Frog`,category:`animals`,keywords:[]},{id:`monkey`,emoji:`๐ต`,name:`Monkey Face`,category:`animals`,keywords:[]},{id:`chicken`,emoji:`๐`,name:`Chicken`,category:`animals`,keywords:[]},{id:`penguin`,emoji:`๐ง`,name:`Penguin`,category:`animals`,keywords:[]},{id:`bird`,emoji:`๐ฆ`,name:`Bird`,category:`animals`,keywords:[]},{id:`eagle`,emoji:`๐ฆ
`,name:`Eagle`,category:`animals`,keywords:[]},{id:`duck`,emoji:`๐ฆ`,name:`Duck`,category:`animals`,keywords:[]},{id:`owl`,emoji:`๐ฆ`,name:`Owl`,category:`animals`,keywords:[]},{id:`bat`,emoji:`๐ฆ`,name:`Bat`,category:`animals`,keywords:[]},{id:`wolf`,emoji:`๐บ`,name:`Wolf`,category:`animals`,keywords:[]},{id:`unicorn`,emoji:`๐ฆ`,name:`Unicorn`,category:`animals`,keywords:[`magic`]},{id:`bee`,emoji:`๐`,name:`Honeybee`,category:`animals`,keywords:[]},{id:`butterfly`,emoji:`๐ฆ`,name:`Butterfly`,category:`animals`,keywords:[]},{id:`snail`,emoji:`๐`,name:`Snail`,category:`animals`,keywords:[`slow`]},{id:`turtle`,emoji:`๐ข`,name:`Turtle`,category:`animals`,keywords:[`slow`]},{id:`snake`,emoji:`๐`,name:`Snake`,category:`animals`,keywords:[]},{id:`dolphin`,emoji:`๐ฌ`,name:`Dolphin`,category:`animals`,keywords:[]},{id:`whale`,emoji:`๐ณ`,name:`Spouting Whale`,category:`animals`,keywords:[]},{id:`fish`,emoji:`๐`,name:`Fish`,category:`animals`,keywords:[]},{id:`octopus`,emoji:`๐`,name:`Octopus`,category:`animals`,keywords:[]},{id:`crab`,emoji:`๐ฆ`,name:`Crab`,category:`animals`,keywords:[]},{id:`sunflower`,emoji:`๐ป`,name:`Sunflower`,category:`animals`,keywords:[`flower`]},{id:`rose`,emoji:`๐น`,name:`Rose`,category:`animals`,keywords:[`flower`]},{id:`cherry_blossom`,emoji:`๐ธ`,name:`Cherry Blossom`,category:`animals`,keywords:[`flower`]},{id:`tulip`,emoji:`๐ท`,name:`Tulip`,category:`animals`,keywords:[`flower`]},{id:`tree`,emoji:`๐ณ`,name:`Deciduous Tree`,category:`animals`,keywords:[]},{id:`palm`,emoji:`๐ด`,name:`Palm Tree`,category:`animals`,keywords:[`beach`]},{id:`cactus`,emoji:`๐ต`,name:`Cactus`,category:`animals`,keywords:[`desert`]},{id:`apple`,emoji:`๐`,name:`Red Apple`,category:`food`,keywords:[`fruit`]},{id:`banana`,emoji:`๐`,name:`Banana`,category:`food`,keywords:[`fruit`]},{id:`orange`,emoji:`๐`,name:`Tangerine`,category:`food`,keywords:[`fruit`]},{id:`lemon`,emoji:`๐`,name:`Lemon`,category:`food`,keywords:[`fruit`]},{id:`grapes`,emoji:`๐`,name:`Grapes`,category:`food`,keywords:[`fruit`]},{id:`watermelon`,emoji:`๐`,name:`Watermelon`,category:`food`,keywords:[`fruit`]},{id:`strawberry`,emoji:`๐`,name:`Strawberry`,category:`food`,keywords:[`fruit`]},{id:`peach`,emoji:`๐`,name:`Peach`,category:`food`,keywords:[`fruit`]},{id:`cherry`,emoji:`๐`,name:`Cherries`,category:`food`,keywords:[`fruit`]},{id:`avocado`,emoji:`๐ฅ`,name:`Avocado`,category:`food`,keywords:[`fruit`]},{id:`tomato`,emoji:`๐
`,name:`Tomato`,category:`food`,keywords:[`vegetable`]},{id:`carrot`,emoji:`๐ฅ`,name:`Carrot`,category:`food`,keywords:[`vegetable`]},{id:`corn`,emoji:`๐ฝ`,name:`Ear of Corn`,category:`food`,keywords:[`vegetable`]},{id:`hot_pepper`,emoji:`๐ถ๏ธ`,name:`Hot Pepper`,category:`food`,keywords:[`spicy`]},{id:`bread`,emoji:`๐`,name:`Bread`,category:`food`,keywords:[]},{id:`cheese`,emoji:`๐ง`,name:`Cheese Wedge`,category:`food`,keywords:[]},{id:`egg`,emoji:`๐ฅ`,name:`Egg`,category:`food`,keywords:[]},{id:`bacon`,emoji:`๐ฅ`,name:`Bacon`,category:`food`,keywords:[]},{id:`hamburger`,emoji:`๐`,name:`Hamburger`,category:`food`,keywords:[`burger`]},{id:`fries`,emoji:`๐`,name:`French Fries`,category:`food`,keywords:[]},{id:`pizza`,emoji:`๐`,name:`Pizza`,category:`food`,keywords:[]},{id:`hotdog`,emoji:`๐ญ`,name:`Hot Dog`,category:`food`,keywords:[]},{id:`taco`,emoji:`๐ฎ`,name:`Taco`,category:`food`,keywords:[]},{id:`burrito`,emoji:`๐ฏ`,name:`Burrito`,category:`food`,keywords:[]},{id:`sushi`,emoji:`๐ฃ`,name:`Sushi`,category:`food`,keywords:[]},{id:`ramen`,emoji:`๐`,name:`Steaming Bowl`,category:`food`,keywords:[`noodles`]},{id:`spaghetti`,emoji:`๐`,name:`Spaghetti`,category:`food`,keywords:[`pasta`]},{id:`ice_cream`,emoji:`๐จ`,name:`Ice Cream`,category:`food`,keywords:[`dessert`]},{id:`donut`,emoji:`๐ฉ`,name:`Doughnut`,category:`food`,keywords:[`dessert`]},{id:`cookie`,emoji:`๐ช`,name:`Cookie`,category:`food`,keywords:[`dessert`]},{id:`cake`,emoji:`๐`,name:`Birthday Cake`,category:`food`,keywords:[`dessert`,`birthday`]},{id:`chocolate`,emoji:`๐ซ`,name:`Chocolate Bar`,category:`food`,keywords:[`dessert`]},{id:`candy`,emoji:`๐ฌ`,name:`Candy`,category:`food`,keywords:[`sweet`]},{id:`coffee`,emoji:`โ`,name:`Hot Beverage`,category:`food`,keywords:[`tea`,`cafe`]},{id:`beer`,emoji:`๐บ`,name:`Beer Mug`,category:`food`,keywords:[`drink`,`alcohol`]},{id:`wine`,emoji:`๐ท`,name:`Wine Glass`,category:`food`,keywords:[`drink`,`alcohol`]},{id:`cocktail`,emoji:`๐ธ`,name:`Cocktail Glass`,category:`food`,keywords:[`drink`,`alcohol`]},{id:`champagne`,emoji:`๐พ`,name:`Bottle with Popping Cork`,category:`food`,keywords:[`celebration`]},{id:`car`,emoji:`๐`,name:`Automobile`,category:`travel`,keywords:[`vehicle`]},{id:`taxi`,emoji:`๐`,name:`Taxi`,category:`travel`,keywords:[`vehicle`]},{id:`bus`,emoji:`๐`,name:`Bus`,category:`travel`,keywords:[`vehicle`]},{id:`train`,emoji:`๐`,name:`Train`,category:`travel`,keywords:[`vehicle`]},{id:`airplane`,emoji:`โ๏ธ`,name:`Airplane`,category:`travel`,keywords:[`flight`,`travel`]},{id:`rocket`,emoji:`๐`,name:`Rocket`,category:`travel`,keywords:[`space`,`launch`]},{id:`ship`,emoji:`๐ข`,name:`Ship`,category:`travel`,keywords:[`boat`]},{id:`bike`,emoji:`๐ฒ`,name:`Bicycle`,category:`travel`,keywords:[`cycle`]},{id:`house`,emoji:`๐ `,name:`House`,category:`travel`,keywords:[`home`]},{id:`office`,emoji:`๐ข`,name:`Office Building`,category:`travel`,keywords:[`work`]},{id:`hospital`,emoji:`๐ฅ`,name:`Hospital`,category:`travel`,keywords:[`health`]},{id:`school`,emoji:`๐ซ`,name:`School`,category:`travel`,keywords:[`education`]},{id:`church`,emoji:`โช`,name:`Church`,category:`travel`,keywords:[`religion`]},{id:`mountain`,emoji:`โฐ๏ธ`,name:`Mountain`,category:`travel`,keywords:[`nature`]},{id:`beach`,emoji:`๐๏ธ`,name:`Beach with Umbrella`,category:`travel`,keywords:[`vacation`]},{id:`camping`,emoji:`๐๏ธ`,name:`Camping`,category:`travel`,keywords:[`outdoor`]},{id:`sun`,emoji:`โ๏ธ`,name:`Sun`,category:`travel`,keywords:[`weather`,`sunny`]},{id:`moon`,emoji:`๐`,name:`Crescent Moon`,category:`travel`,keywords:[`night`]},{id:`cloud`,emoji:`โ๏ธ`,name:`Cloud`,category:`travel`,keywords:[`weather`]},{id:`rain`,emoji:`๐ง๏ธ`,name:`Cloud with Rain`,category:`travel`,keywords:[`weather`]},{id:`snow`,emoji:`โ๏ธ`,name:`Snowflake`,category:`travel`,keywords:[`weather`,`cold`]},{id:`lightning`,emoji:`โก`,name:`High Voltage`,category:`travel`,keywords:[`electricity`,`thunder`]},{id:`rainbow`,emoji:`๐`,name:`Rainbow`,category:`travel`,keywords:[`weather`,`pride`]},{id:`soccer`,emoji:`โฝ`,name:`Soccer Ball`,category:`activities`,keywords:[`football`,`sport`]},{id:`basketball`,emoji:`๐`,name:`Basketball`,category:`activities`,keywords:[`sport`]},{id:`football`,emoji:`๐`,name:`American Football`,category:`activities`,keywords:[`sport`]},{id:`baseball`,emoji:`โพ`,name:`Baseball`,category:`activities`,keywords:[`sport`]},{id:`tennis`,emoji:`๐พ`,name:`Tennis`,category:`activities`,keywords:[`sport`]},{id:`golf`,emoji:`โณ`,name:`Flag in Hole`,category:`activities`,keywords:[`sport`]},{id:`trophy`,emoji:`๐`,name:`Trophy`,category:`activities`,keywords:[`winner`,`award`]},{id:`medal`,emoji:`๐
`,name:`Sports Medal`,category:`activities`,keywords:[`winner`,`award`]},{id:`video_game`,emoji:`๐ฎ`,name:`Video Game`,category:`activities`,keywords:[`gaming`,`controller`]},{id:`dice`,emoji:`๐ฒ`,name:`Game Die`,category:`activities`,keywords:[`gambling`]},{id:`chess`,emoji:`โ๏ธ`,name:`Chess Pawn`,category:`activities`,keywords:[`game`]},{id:`bowling`,emoji:`๐ณ`,name:`Bowling`,category:`activities`,keywords:[`sport`]},{id:`guitar`,emoji:`๐ธ`,name:`Guitar`,category:`activities`,keywords:[`music`]},{id:`microphone`,emoji:`๐ค`,name:`Microphone`,category:`activities`,keywords:[`music`,`karaoke`]},{id:`headphones`,emoji:`๐ง`,name:`Headphones`,category:`activities`,keywords:[`music`]},{id:`art`,emoji:`๐จ`,name:`Artist Palette`,category:`activities`,keywords:[`painting`]},{id:`ticket`,emoji:`๐ซ`,name:`Ticket`,category:`activities`,keywords:[`event`]},{id:`party`,emoji:`๐`,name:`Party Popper`,category:`activities`,keywords:[`celebration`,`tada`]},{id:`balloon`,emoji:`๐`,name:`Balloon`,category:`activities`,keywords:[`party`]},{id:`gift`,emoji:`๐`,name:`Wrapped Gift`,category:`activities`,keywords:[`present`]},{id:`christmas_tree`,emoji:`๐`,name:`Christmas Tree`,category:`activities`,keywords:[`holiday`]},{id:`phone`,emoji:`๐ฑ`,name:`Mobile Phone`,category:`objects`,keywords:[`smartphone`]},{id:`computer`,emoji:`๐ป`,name:`Laptop`,category:`objects`,keywords:[`pc`]},{id:`keyboard`,emoji:`โจ๏ธ`,name:`Keyboard`,category:`objects`,keywords:[]},{id:`camera`,emoji:`๐ท`,name:`Camera`,category:`objects`,keywords:[`photo`]},{id:`tv`,emoji:`๐บ`,name:`Television`,category:`objects`,keywords:[]},{id:`radio`,emoji:`๐ป`,name:`Radio`,category:`objects`,keywords:[]},{id:`clock`,emoji:`๐`,name:`One O'Clock`,category:`objects`,keywords:[`time`]},{id:`hourglass`,emoji:`โณ`,name:`Hourglass`,category:`objects`,keywords:[`time`]},{id:`alarm`,emoji:`โฐ`,name:`Alarm Clock`,category:`objects`,keywords:[`time`]},{id:`bulb`,emoji:`๐ก`,name:`Light Bulb`,category:`objects`,keywords:[`idea`]},{id:`money`,emoji:`๐ฐ`,name:`Money Bag`,category:`objects`,keywords:[`rich`,`cash`]},{id:`dollar`,emoji:`๐ต`,name:`Dollar Banknote`,category:`objects`,keywords:[`money`]},{id:`credit_card`,emoji:`๐ณ`,name:`Credit Card`,category:`objects`,keywords:[`payment`]},{id:`gem`,emoji:`๐`,name:`Gem Stone`,category:`objects`,keywords:[`diamond`,`jewel`]},{id:`tools`,emoji:`๐ง`,name:`Wrench`,category:`objects`,keywords:[`fix`]},{id:`hammer`,emoji:`๐จ`,name:`Hammer`,category:`objects`,keywords:[`tool`]},{id:`lock`,emoji:`๐`,name:`Locked`,category:`objects`,keywords:[`secure`]},{id:`key`,emoji:`๐`,name:`Key`,category:`objects`,keywords:[`unlock`]},{id:`magnifying`,emoji:`๐`,name:`Magnifying Glass`,category:`objects`,keywords:[`search`]},{id:`envelope`,emoji:`โ๏ธ`,name:`Envelope`,category:`objects`,keywords:[`mail`,`email`]},{id:`book`,emoji:`๐`,name:`Open Book`,category:`objects`,keywords:[`read`]},{id:`notebook`,emoji:`๐`,name:`Notebook`,category:`objects`,keywords:[]},{id:`pencil`,emoji:`โ๏ธ`,name:`Pencil`,category:`objects`,keywords:[`write`]},{id:`scissors`,emoji:`โ๏ธ`,name:`Scissors`,category:`objects`,keywords:[`cut`]},{id:`paperclip`,emoji:`๐`,name:`Paperclip`,category:`objects`,keywords:[`attachment`]},{id:`pushpin`,emoji:`๐`,name:`Pushpin`,category:`objects`,keywords:[`pin`]},{id:`check`,emoji:`โ
`,name:`Check Mark Button`,category:`symbols`,keywords:[`done`,`yes`]},{id:`cross`,emoji:`โ`,name:`Cross Mark`,category:`symbols`,keywords:[`no`,`wrong`]},{id:`question`,emoji:`โ`,name:`Question Mark`,category:`symbols`,keywords:[]},{id:`exclamation`,emoji:`โ`,name:`Exclamation Mark`,category:`symbols`,keywords:[`important`]},{id:`warning`,emoji:`โ ๏ธ`,name:`Warning`,category:`symbols`,keywords:[`caution`]},{id:`no_entry`,emoji:`โ`,name:`No Entry`,category:`symbols`,keywords:[`stop`]},{id:`prohibited`,emoji:`๐ซ`,name:`Prohibited`,category:`symbols`,keywords:[`forbidden`]},{id:`plus`,emoji:`โ`,name:`Plus`,category:`symbols`,keywords:[`add`]},{id:`minus`,emoji:`โ`,name:`Minus`,category:`symbols`,keywords:[`subtract`]},{id:`multiply`,emoji:`โ๏ธ`,name:`Multiply`,category:`symbols`,keywords:[]},{id:`divide`,emoji:`โ`,name:`Divide`,category:`symbols`,keywords:[]},{id:`infinity`,emoji:`โพ๏ธ`,name:`Infinity`,category:`symbols`,keywords:[`forever`]},{id:`recycle`,emoji:`โป๏ธ`,name:`Recycling Symbol`,category:`symbols`,keywords:[`environment`]},{id:`zzz`,emoji:`๐ค`,name:`Zzz`,category:`symbols`,keywords:[`sleep`,`tired`]},{id:`speech`,emoji:`๐ฌ`,name:`Speech Balloon`,category:`symbols`,keywords:[`chat`,`comment`]},{id:`thought`,emoji:`๐ญ`,name:`Thought Balloon`,category:`symbols`,keywords:[`thinking`]},{id:`music_note`,emoji:`๐ต`,name:`Musical Note`,category:`symbols`,keywords:[`song`]},{id:`hash_symbol`,emoji:`#๏ธโฃ`,name:`Hash Key`,category:`symbols`,keywords:[`number`,`hashtag`]},{id:`asterisk`,emoji:`*๏ธโฃ`,name:`Asterisk Key`,category:`symbols`,keywords:[]},{id:`arrow_right`,emoji:`โก๏ธ`,name:`Right Arrow`,category:`symbols`,keywords:[]},{id:`arrow_left`,emoji:`โฌ
๏ธ`,name:`Left Arrow`,category:`symbols`,keywords:[]},{id:`arrow_up`,emoji:`โฌ๏ธ`,name:`Up Arrow`,category:`symbols`,keywords:[]},{id:`arrow_down`,emoji:`โฌ๏ธ`,name:`Down Arrow`,category:`symbols`,keywords:[]},{id:`flag_white`,emoji:`๐ณ๏ธ`,name:`White Flag`,category:`flags`,keywords:[`surrender`]},{id:`flag_black`,emoji:`๐ด`,name:`Black Flag`,category:`flags`,keywords:[]},{id:`flag_checkered`,emoji:`๐`,name:`Checkered Flag`,category:`flags`,keywords:[`racing`,`finish`]},{id:`flag_us`,emoji:`๐บ๐ธ`,name:`Flag: United States`,category:`flags`,keywords:[`usa`,`america`]},{id:`flag_gb`,emoji:`๐ฌ๐ง`,name:`Flag: United Kingdom`,category:`flags`,keywords:[`uk`,`britain`]},{id:`flag_fr`,emoji:`๐ซ๐ท`,name:`Flag: France`,category:`flags`,keywords:[`french`]},{id:`flag_de`,emoji:`๐ฉ๐ช`,name:`Flag: Germany`,category:`flags`,keywords:[`german`]},{id:`flag_es`,emoji:`๐ช๐ธ`,name:`Flag: Spain`,category:`flags`,keywords:[`spanish`]},{id:`flag_it`,emoji:`๐ฎ๐น`,name:`Flag: Italy`,category:`flags`,keywords:[`italian`]},{id:`flag_jp`,emoji:`๐ฏ๐ต`,name:`Flag: Japan`,category:`flags`,keywords:[`japanese`]},{id:`flag_cn`,emoji:`๐จ๐ณ`,name:`Flag: China`,category:`flags`,keywords:[`chinese`]},{id:`flag_kr`,emoji:`๐ฐ๐ท`,name:`Flag: South Korea`,category:`flags`,keywords:[`korean`]},{id:`flag_br`,emoji:`๐ง๐ท`,name:`Flag: Brazil`,category:`flags`,keywords:[`brazilian`]},{id:`flag_ca`,emoji:`๐จ๐ฆ`,name:`Flag: Canada`,category:`flags`,keywords:[`canadian`]},{id:`flag_au`,emoji:`๐ฆ๐บ`,name:`Flag: Australia`,category:`flags`,keywords:[`australian`]}],d=[`recent`,`smileys`,`people`,`animals`,`food`,`travel`,`activities`,`objects`,`symbols`,`flags`];function f(e={}){let{maxRecent:t=20,defaultSkinTone:n=`default`,storageKey:i=`waka-recent-emojis`}=e,[a,o]=r.useState(!1),[s,c]=r.useState(null),[l,u]=r.useState(n),[d,f]=r.useState([]);r.useEffect(()=>{if(typeof window<`u`)try{let e=localStorage.getItem(i);e&&f(JSON.parse(e))}catch{}},[i]);let p=r.useCallback(e=>{f(n=>{let r=[e,...n.filter(t=>t!==e)].slice(0,t);if(typeof window<`u`)try{localStorage.setItem(i,JSON.stringify(r))}catch{}return r})},[t,i]);return{open:a,setOpen:o,selectedEmoji:s,recentEmojis:d,skinTone:l,setSkinTone:u,addToRecent:p,clearRecent:r.useCallback(()=>{if(f([]),typeof window<`u`)try{localStorage.removeItem(i)}catch{}},[i]),selectEmoji:r.useCallback(e=>{c(e),p(e)},[p])}}function p(e,t){if(t==="default")return e;let n=o[t];if(Object.values(o).some(t=>t&&e.includes(t))){let t=e;return Object.values(o).forEach(e=>{e&&(t=t.replace(e,``))}),t+n}return e+n}function m(e,t){let n=t.toLowerCase();return e.filter(e=>{let r=e.name.toLowerCase().includes(n),i=e.keywords?.some(e=>e.toLowerCase().includes(n)),a=e.emoji===t;return r||i||a})}function h({reactions:e,onSelect:t,skinTone:n}){return(0,a.jsx)(`div`,{className:`flex items-center gap-1 p-2 border-b`,children:e.map((e,r)=>{let i=u.find(t=>t.emoji===e)?.skinToneSupport?p(e,n):e;return(0,a.jsx)(`button`,{onClick:()=>t(i),className:`flex items-center justify-center w-9 h-9 rounded-lg text-xl hover:bg-accent transition-all duration-150 hover:scale-110 active:scale-95`,children:i},r)})})}function g({activeCategory:e,onCategoryChange:n,showRecent:r,hasRecent:i}){return(0,a.jsx)(`div`,{className:`flex items-center gap-0.5 p-1 border-b overflow-x-auto`,children:(r&&i?d:d.filter(e=>e!==`recent`)).map(r=>(0,a.jsx)(`button`,{onClick:()=>n(r),className:t.cn(`flex items-center justify-center w-8 h-8 rounded-md transition-colors`,e===r?`bg-accent text-accent-foreground`:`hover:bg-accent/50 text-muted-foreground`),title:c[r],children:s[r]},r))})}function _({skinTone:e,onSkinToneChange:n}){return(0,a.jsxs)(`div`,{className:`flex items-center gap-1 p-2 border-t`,children:[(0,a.jsx)(`span`,{className:`text-xs text-muted-foreground mr-2`,children:`Skin tone:`}),[`default`,`light`,`medium-light`,`medium`,`medium-dark`,`dark`].map(r=>(0,a.jsx)(`button`,{onClick:()=>n(r),className:t.cn(`flex items-center justify-center w-7 h-7 rounded text-base transition-all hover:scale-110`,e===r&&`ring-2 ring-primary ring-offset-1`),children:p(`๐`,r)},r))]})}function v({emoji:e,skinTone:t}){if(!e)return(0,a.jsxs)(`div`,{className:`flex items-center gap-3 p-2 border-t h-14`,children:[(0,a.jsx)(`div`,{className:`w-10 h-10 flex items-center justify-center text-3xl text-muted-foreground/30`,children:(0,a.jsx)(i.Smile,{})}),(0,a.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:`Hover over an emoji to preview`})]});let n=`url`in e,r=n?null:e.skinToneSupport?p(e.emoji,t):e.emoji;return(0,a.jsxs)(`div`,{className:`flex items-center gap-3 p-2 border-t h-14 animate-in fade-in-50 duration-150`,children:[(0,a.jsx)(`div`,{className:`w-10 h-10 flex items-center justify-center text-3xl`,children:n?(0,a.jsx)(`img`,{src:e.url,alt:e.name,className:`w-8 h-8 object-contain`}):r}),(0,a.jsxs)(`div`,{children:[(0,a.jsx)(`div`,{className:`text-sm font-medium`,children:e.name}),(0,a.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[`:`,e.id||e.name.toLowerCase().replace(/\s+/g,`_`),`:`]})]})]})}function y({emojis:e,customEmojis:n,recentEmojis:o,activeCategory:s,skinTone:c,columns:l,onSelect:d,onHover:f,selectedIndex:m,showRecent:h,searchMode:g=!1}){let _=r.useRef(null),v=r.useMemo(()=>g?e:s===`recent`&&h?o.map(e=>u.find(t=>t.emoji===e||p(t.emoji,c)===e)).filter(Boolean):e.filter(e=>e.category===s),[e,s,o,c,h,g]);return r.useEffect(()=>{(_.current?.querySelector(`[data-index="${m}"]`))?.scrollIntoView({block:`nearest`})},[m]),(0,a.jsxs)(`div`,{ref:_,className:`p-2 h-52 overflow-y-auto`,children:[s===`recent`&&n&&n.length>0&&(0,a.jsxs)(`div`,{className:`mb-2`,children:[(0,a.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground mb-1 px-1`,children:`Custom`}),(0,a.jsx)(`div`,{className:`grid gap-1`,style:{gridTemplateColumns:`repeat(${l}, 1fr)`},children:n.map((e,n)=>(0,a.jsx)(`button`,{"data-index":n,onClick:()=>d(e.url,e),onMouseEnter:()=>f(e),onMouseLeave:()=>f(null),className:t.cn(`flex items-center justify-center w-9 h-9 rounded-lg transition-all duration-150 hover:bg-accent hover:scale-110 active:scale-95`,m===n&&`bg-accent ring-2 ring-primary`),children:(0,a.jsx)(`img`,{src:e.url,alt:e.name,className:`w-6 h-6 object-contain`})},e.id))})]}),(0,a.jsx)(`div`,{className:`grid gap-1`,style:{gridTemplateColumns:`repeat(${l}, 1fr)`},children:v.map((e,r)=>{let i=e.skinToneSupport?p(e.emoji,c):e.emoji,o=n&&s===`recent`?r+n.length:r;return(0,a.jsx)(`button`,{"data-index":o,onClick:()=>d(i,e),onMouseEnter:()=>f(e),onMouseLeave:()=>f(null),className:t.cn(`flex items-center justify-center w-9 h-9 rounded-lg text-xl transition-all duration-150 hover:bg-accent hover:scale-110 active:scale-95`,m===o&&`bg-accent ring-2 ring-primary`),children:i},e.id)})}),v.length===0&&(0,a.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full text-muted-foreground`,children:[(0,a.jsx)(i.Smile,{className:`h-8 w-8 mb-2 opacity-50`}),(0,a.jsx)(`span`,{className:`text-sm`,children:`No emojis found`})]})]})}function b({onSelect:e,quickReactions:o=l,customEmojis:s,showSearch:c=!0,showRecent:f=!0,showSkinTones:b=!0,showCategories:x=!0,showPreview:S=!0,mode:C=`popover`,skinTone:w,onSkinToneChange:T,columns:E=8,maxRecent:D=20,open:O,onOpenChange:ee,trigger:te,className:ne,disabled:k=!1}){let[re,A]=r.useState(!1),[j,M]=r.useState(`default`),[N,P]=r.useState(``),[F,I]=r.useState(`smileys`),[L,R]=r.useState(null),[z,B]=r.useState(0),[V,H]=r.useState([]),U=r.useRef(null),W=r.useRef(null),G=O!==void 0,K=G?O:re,q=G?ee||(()=>{}):A,J=w!==void 0,Y=J?w:j,ie=J?T||(()=>{}):M;r.useEffect(()=>{if(typeof window<`u`&&f)try{let e=localStorage.getItem(`waka-recent-emojis`);e&&H(JSON.parse(e))}catch{}},[f]);let X=r.useMemo(()=>N?m(u,N):u,[N]),Z=r.useMemo(()=>N?X:F===`recent`&&f?V.map(e=>u.find(t=>t.emoji===e)).filter(Boolean):u.filter(e=>e.category===F),[X,N,F,V,f]),Q=r.useCallback((t,n)=>{e?.(t,n),f&&!(`url`in n)&&H(e=>{let n=[t,...e.filter(e=>e!==t)].slice(0,D);try{localStorage.setItem(`waka-recent-emojis`,JSON.stringify(n))}catch{}return n}),q(!1),P(``)},[e,f,D,q]);r.useEffect(()=>{if(!K)return;let e=e=>{switch(e.key){case`ArrowRight`:e.preventDefault(),B(e=>Math.min(e+1,Z.length-1));break;case`ArrowLeft`:e.preventDefault(),B(e=>Math.max(e-1,0));break;case`ArrowDown`:e.preventDefault(),B(e=>Math.min(e+E,Z.length-1));break;case`ArrowUp`:e.preventDefault(),B(e=>Math.max(e-E,0));break;case`Enter`:e.preventDefault();let t=Z[z];if(t){let e=t.skinToneSupport?p(t.emoji,Y):t.emoji;Q(e,t)}break;case`Escape`:e.preventDefault(),q(!1);break;case`Tab`:if(!e.shiftKey){e.preventDefault();let t=f&&V.length>0?d:d.filter(e=>e!==`recent`),n=(t.indexOf(F)+1)%t.length;I(t[n]),B(0)}break}};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[K,z,Z,E,Y,Q,q,F,f,V.length]),r.useEffect(()=>{K&&c&&setTimeout(()=>U.current?.focus(),0),K||(P(``),B(0))},[K,c]),r.useEffect(()=>{B(0)},[F,N]);let $=(0,a.jsxs)(`div`,{ref:W,className:t.cn(`w-80 bg-popover rounded-lg border shadow-lg overflow-hidden`,C===`inline`&&`shadow-none`,ne),children:[o.length>0&&(0,a.jsx)(h,{reactions:o,onSelect:e=>{let t=u.find(t=>t.emoji===e||p(t.emoji,Y)===e);t&&Q(e,t)},skinTone:Y}),c&&(0,a.jsx)(`div`,{className:`p-2 border-b`,children:(0,a.jsxs)(`div`,{className:`relative`,children:[(0,a.jsx)(i.Search,{className:`absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`}),(0,a.jsx)(`input`,{ref:U,type:`text`,value:N,onChange:e=>P(e.target.value),placeholder:`Search emojis...`,className:`w-full h-9 pl-9 pr-8 rounded-md border bg-background text-sm outline-none focus:ring-2 focus:ring-primary`}),N&&(0,a.jsx)(`button`,{onClick:()=>P(``),className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground`,children:(0,a.jsx)(i.X,{className:`h-4 w-4`})})]})}),x&&!N&&(0,a.jsx)(g,{activeCategory:F,onCategoryChange:I,showRecent:f,hasRecent:V.length>0}),(0,a.jsx)(y,{emojis:N?X:u,customEmojis:s,recentEmojis:V,activeCategory:F,searchMode:!!N,skinTone:Y,columns:E,onSelect:Q,onHover:R,selectedIndex:z,showRecent:f&&!N}),b&&(0,a.jsx)(_,{skinTone:Y,onSkinToneChange:ie}),S&&(0,a.jsx)(v,{emoji:L,skinTone:Y})]});return C===`inline`?$:(0,a.jsxs)(n.Popover,{open:K,onOpenChange:q,children:[(0,a.jsx)(n.PopoverTrigger,{asChild:!0,disabled:k,children:te||(0,a.jsx)(`button`,{className:t.cn(`inline-flex items-center justify-center w-9 h-9 rounded-md border bg-background hover:bg-accent transition-colors`,k&&`opacity-50 cursor-not-allowed`),children:(0,a.jsx)(i.Smile,{className:`h-5 w-5`})})}),(0,a.jsx)(n.PopoverContent,{className:`w-auto p-0`,align:`start`,sideOffset:8,children:$})]})}b.displayName=`WakaReactionPicker`,exports.WakaReactionPicker=b,exports.default=b,exports.useReactionPicker=f;
|
|
@@ -2231,7 +2231,10 @@ function D({ onSelect: a, quickReactions: o = S, customEmojis: s, showSearch: c
|
|
|
2231
2231
|
case "Enter":
|
|
2232
2232
|
e.preventDefault();
|
|
2233
2233
|
let t = Z[B];
|
|
2234
|
-
|
|
2234
|
+
if (t) {
|
|
2235
|
+
let e = t.skinToneSupport ? E(t.emoji, Y) : t.emoji;
|
|
2236
|
+
Q(e, t);
|
|
2237
|
+
}
|
|
2235
2238
|
break;
|
|
2236
2239
|
case "Escape":
|
|
2237
2240
|
e.preventDefault(), q(!1);
|
|
@@ -2239,8 +2242,8 @@ function D({ onSelect: a, quickReactions: o = S, customEmojis: s, showSearch: c
|
|
|
2239
2242
|
case "Tab":
|
|
2240
2243
|
if (!e.shiftKey) {
|
|
2241
2244
|
e.preventDefault();
|
|
2242
|
-
let t = l && H.length > 0 ? w : w.filter((e) => e !== "recent");
|
|
2243
|
-
R(t[
|
|
2245
|
+
let t = l && H.length > 0 ? w : w.filter((e) => e !== "recent"), n = (t.indexOf(L) + 1) % t.length;
|
|
2246
|
+
R(t[n]), V(0);
|
|
2244
2247
|
}
|
|
2245
2248
|
break;
|
|
2246
2249
|
}
|
|
@@ -2345,4 +2348,4 @@ function D({ onSelect: a, quickReactions: o = S, customEmojis: s, showSearch: c
|
|
|
2345
2348
|
}
|
|
2346
2349
|
D.displayName = "WakaReactionPicker";
|
|
2347
2350
|
//#endregion
|
|
2348
|
-
export { D as default, T as useReactionPicker };
|
|
2351
|
+
export { D as WakaReactionPicker, D as default, T as useReactionPicker };
|