@wakastellar/ui 2.3.5 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/dist/blocks/antivirus-dashboard/index.d.ts +44 -0
  2. package/dist/blocks/clamav-service-status/index.d.ts +35 -0
  3. package/dist/blocks/file-scan-uploader/index.d.ts +29 -0
  4. package/dist/blocks/index.d.ts +18 -9
  5. package/dist/blocks/quarantine-manager/index.d.ts +27 -0
  6. package/dist/blocks/scan-history-log/index.d.ts +28 -0
  7. package/dist/blocks/scan-policy-editor/index.d.ts +27 -0
  8. package/dist/blocks/scan-report-generator/index.d.ts +47 -0
  9. package/dist/blocks/signature-database-manager/index.d.ts +39 -0
  10. package/dist/blocks/threat-alert-banner/index.d.ts +26 -0
  11. package/dist/components/index.d.ts +4 -4
  12. package/dist/components/waka-signature-pad/index.d.ts +1 -1
  13. package/dist/exceljs.min-BcLLX0PC.js +29 -0
  14. package/dist/exceljs.min-KOayaaQ4.mjs +23013 -0
  15. package/dist/export.cjs.js +1 -1
  16. package/dist/export.d.ts +2 -2
  17. package/dist/export.es.js +1 -1
  18. package/dist/index.cjs.js +136 -136
  19. package/dist/index.es.js +29978 -27215
  20. package/dist/stories/Button.d.ts +14 -0
  21. package/dist/stories/Button.stories.d.ts +8 -0
  22. package/dist/stories/Header.d.ts +11 -0
  23. package/dist/stories/Header.stories.d.ts +6 -0
  24. package/dist/stories/Page.d.ts +2 -0
  25. package/dist/stories/Page.stories.d.ts +6 -0
  26. package/dist/useDataTableImport-COVnvslz.js +9 -0
  27. package/dist/useDataTableImport-DAlxBY8w.mjs +237 -0
  28. package/dist/utils/index.d.ts +1 -0
  29. package/dist/utils/logger.d.ts +9 -0
  30. package/package.json +14 -6
  31. package/src/blocks/activity-timeline/ActivityTimeline.stories.tsx +460 -0
  32. package/src/blocks/antivirus-dashboard/AntivirusDashboard.stories.tsx +291 -0
  33. package/src/blocks/antivirus-dashboard/index.tsx +525 -0
  34. package/src/blocks/apm-overview/APMOverview.stories.tsx +435 -0
  35. package/src/blocks/auth-2fa/Auth2FA.stories.tsx +308 -0
  36. package/src/blocks/calendar-view/CalendarView.stories.tsx +398 -0
  37. package/src/blocks/chat/Chat.stories.tsx +466 -0
  38. package/src/blocks/chat-interface/ChatInterface.stories.tsx +412 -0
  39. package/src/blocks/checkout-flow/CheckoutFlow.stories.tsx +408 -0
  40. package/src/blocks/cicd-builder/CICDBuilder.stories.tsx +499 -0
  41. package/src/blocks/clamav-service-status/ClamAVServiceStatus.stories.tsx +195 -0
  42. package/src/blocks/clamav-service-status/index.tsx +370 -0
  43. package/src/blocks/cloud-cost-dashboard/CloudCostDashboard.stories.tsx +356 -0
  44. package/src/blocks/container-orchestrator/ContainerOrchestrator.stories.tsx +461 -0
  45. package/src/blocks/dashboard/Dashboard.stories.tsx +559 -0
  46. package/src/blocks/dashboard-kpi/DashboardKPI.stories.tsx +422 -0
  47. package/src/blocks/database-admin/DatabaseAdmin.stories.tsx +393 -0
  48. package/src/blocks/deployment-dashboard/DeploymentDashboard.stories.tsx +457 -0
  49. package/src/blocks/empty-states/EmptyStates.stories.tsx +467 -0
  50. package/src/blocks/error-pages/ErrorPages.stories.tsx +401 -0
  51. package/src/blocks/faq/FAQ.stories.tsx +416 -0
  52. package/src/blocks/file-manager/FileManager.stories.tsx +413 -0
  53. package/src/blocks/file-scan-uploader/FileScanUploader.stories.tsx +257 -0
  54. package/src/blocks/file-scan-uploader/index.tsx +311 -0
  55. package/src/blocks/footer/Footer.stories.tsx +328 -0
  56. package/src/blocks/gitops-sync-status/GitOpsSyncStatus.stories.tsx +529 -0
  57. package/src/blocks/header/WakaHeader.stories.tsx +455 -0
  58. package/src/blocks/headtab/Headtab.stories.tsx +369 -0
  59. package/src/blocks/i18n-editor/I18nEditor.stories.tsx +451 -0
  60. package/src/blocks/incident-manager/IncidentManager.stories.tsx +464 -0
  61. package/src/blocks/index.ts +163 -11
  62. package/src/blocks/infrastructure-map/InfrastructureMap.stories.tsx +533 -0
  63. package/src/blocks/kanban-board/KanbanBoard.stories.tsx +494 -0
  64. package/src/blocks/landing/WakaLanding.stories.tsx +449 -0
  65. package/src/blocks/language-selector/LanguageSelector.stories.tsx +345 -0
  66. package/src/blocks/layout/Layout.stories.tsx +373 -0
  67. package/src/blocks/login/Login.stories.tsx +443 -0
  68. package/src/blocks/on-call-schedule/OnCallSchedule.stories.tsx +381 -0
  69. package/src/blocks/player-profile/PlayerProfile.stories.tsx +316 -0
  70. package/src/blocks/pricing/WakaPricing.stories.tsx +530 -0
  71. package/src/blocks/profile/Profile.stories.tsx +371 -0
  72. package/src/blocks/quarantine-manager/QuarantineManager.stories.tsx +209 -0
  73. package/src/blocks/quarantine-manager/index.tsx +435 -0
  74. package/src/blocks/release-notes/ReleaseNotes.stories.tsx +431 -0
  75. package/src/blocks/scan-history-log/ScanHistoryLog.stories.tsx +231 -0
  76. package/src/blocks/scan-history-log/index.tsx +406 -0
  77. package/src/blocks/scan-policy-editor/ScanPolicyEditor.stories.tsx +106 -0
  78. package/src/blocks/scan-policy-editor/index.tsx +418 -0
  79. package/src/blocks/scan-report-generator/ScanReportGenerator.stories.tsx +232 -0
  80. package/src/blocks/scan-report-generator/index.tsx +612 -0
  81. package/src/blocks/settings/Settings.stories.tsx +520 -0
  82. package/src/blocks/sidebar/WakaSidebar.stories.tsx +513 -0
  83. package/src/blocks/sidebar/index.tsx +2 -1
  84. package/src/blocks/signature-database-manager/SignatureDatabaseManager.stories.tsx +279 -0
  85. package/src/blocks/signature-database-manager/index.tsx +470 -0
  86. package/src/blocks/theme-creator-block/ThemeCreatorBlock.stories.tsx +370 -0
  87. package/src/blocks/theme-creator-block/index.tsx +16 -2
  88. package/src/blocks/threat-alert-banner/ThreatAlertBanner.stories.tsx +152 -0
  89. package/src/blocks/threat-alert-banner/index.tsx +320 -0
  90. package/src/blocks/user-management/UserManagement.stories.tsx +411 -0
  91. package/src/blocks/wizard/Wizard.stories.tsx +683 -0
  92. package/src/components/DataTable/DataTable.stories.tsx +203 -0
  93. package/src/components/DataTable/hooks/useDataTableExport.ts +38 -31
  94. package/src/components/DataTable/hooks/useDataTableImport.ts +31 -20
  95. package/src/components/accordion/Accordion.stories.tsx +93 -0
  96. package/src/components/alert/Alert.stories.tsx +95 -0
  97. package/src/components/alert-dialog/AlertDialog.stories.tsx +126 -0
  98. package/src/components/aspect-ratio/AspectRatio.stories.tsx +118 -0
  99. package/src/components/avatar/Avatar.stories.tsx +104 -0
  100. package/src/components/button/Button.stories.tsx +12 -1
  101. package/src/components/calendar/Calendar.stories.tsx +102 -0
  102. package/src/components/card/Card.stories.tsx +125 -0
  103. package/src/components/checkbox/Checkbox.stories.tsx +100 -0
  104. package/src/components/code/Code.stories.tsx +402 -0
  105. package/src/components/collapsible/Collapsible.stories.tsx +123 -0
  106. package/src/components/command/Command.stories.tsx +207 -0
  107. package/src/components/context-menu/ContextMenu.stories.tsx +220 -0
  108. package/src/components/dialog/Dialog.stories.tsx +157 -0
  109. package/src/components/dropdown-menu/DropdownMenu.stories.tsx +225 -0
  110. package/src/components/error-boundary/ErrorBoundary.stories.tsx +125 -0
  111. package/src/components/form/Form.stories.tsx +413 -0
  112. package/src/components/hover-card/HoverCard.stories.tsx +148 -0
  113. package/src/components/index.ts +45 -4
  114. package/src/components/input-otp/InputOTP.stories.tsx +255 -0
  115. package/src/components/label/Label.stories.tsx +68 -0
  116. package/src/components/language-selector/LanguageSelector.stories.tsx +112 -0
  117. package/src/components/menubar/Menubar.stories.tsx +278 -0
  118. package/src/components/navigation-menu/NavigationMenu.stories.tsx +202 -0
  119. package/src/components/popover/Popover.stories.tsx +199 -0
  120. package/src/components/progress/Progress.stories.tsx +104 -0
  121. package/src/components/radio-group/RadioGroup.stories.tsx +138 -0
  122. package/src/components/scroll-area/ScrollArea.stories.tsx +153 -0
  123. package/src/components/select/Select.stories.tsx +146 -0
  124. package/src/components/separator/Separator.stories.tsx +117 -0
  125. package/src/components/sheet/Sheet.stories.tsx +195 -0
  126. package/src/components/skeleton/Skeleton.stories.tsx +114 -0
  127. package/src/components/slider/Slider.stories.tsx +157 -0
  128. package/src/components/switch/Switch.stories.tsx +114 -0
  129. package/src/components/table/Table.stories.tsx +153 -0
  130. package/src/components/tabs/Tabs.stories.tsx +155 -0
  131. package/src/components/textarea/Textarea.stories.tsx +116 -0
  132. package/src/components/theme-selector/ThemeSelector.stories.tsx +77 -0
  133. package/src/components/toast/Toast.stories.tsx +160 -0
  134. package/src/components/toaster/Toaster.stories.tsx +67 -0
  135. package/src/components/toggle/Toggle.stories.tsx +125 -0
  136. package/src/components/tooltip/Tooltip.stories.tsx +133 -0
  137. package/src/components/typography/Typography.stories.tsx +207 -0
  138. package/src/components/waka-3d-pie-chart/Waka3DPieChart.stories.tsx +308 -0
  139. package/src/components/waka-achievement-unlock/WakaAchievementUnlock.stories.tsx +353 -0
  140. package/src/components/waka-activity-feed/WakaActivityFeed.stories.tsx +116 -0
  141. package/src/components/waka-ad-banner/WakaAdBanner.stories.tsx +102 -0
  142. package/src/components/waka-ad-fallback/WakaAdFallback.stories.tsx +117 -0
  143. package/src/components/waka-ad-inline/WakaAdInline.stories.tsx +105 -0
  144. package/src/components/waka-ad-interstitial/WakaAdInterstitial.stories.tsx +92 -0
  145. package/src/components/waka-ad-placeholder/WakaAdPlaceholder.stories.tsx +89 -0
  146. package/src/components/waka-ad-provider/WakaAdProvider.stories.tsx +110 -0
  147. package/src/components/waka-ad-sidebar/WakaAdSidebar.stories.tsx +89 -0
  148. package/src/components/waka-ad-sidebar/index.tsx +3 -2
  149. package/src/components/waka-ad-sticky-footer/WakaAdStickyFooter.stories.tsx +88 -0
  150. package/src/components/waka-address-autocomplete/WakaAddressAutocomplete.stories.tsx +46 -0
  151. package/src/components/waka-admincrumb/WakaAdmincrumb.stories.tsx +166 -0
  152. package/src/components/waka-alert-panel/WakaAlertPanel.stories.tsx +45 -0
  153. package/src/components/waka-alert-stack/WakaAlertStack.stories.tsx +62 -0
  154. package/src/components/waka-allocation-matrix/WakaAllocationMatrix.stories.tsx +68 -0
  155. package/src/components/waka-approval-chain/WakaApprovalChain.stories.tsx +63 -0
  156. package/src/components/waka-artifact-list/WakaArtifactList.stories.tsx +258 -0
  157. package/src/components/waka-audit-log/WakaAuditLog.stories.tsx +73 -0
  158. package/src/components/waka-autocomplete/WakaAutocomplete.stories.tsx +184 -0
  159. package/src/components/waka-badge-showcase/WakaBadgeShowcase.stories.tsx +269 -0
  160. package/src/components/waka-barcode/WakaBarcode.stories.tsx +227 -0
  161. package/src/components/waka-biometric-prompt/WakaBiometricPrompt.stories.tsx +48 -0
  162. package/src/components/waka-bottom-sheet/WakaBottomSheet.stories.tsx +408 -0
  163. package/src/components/waka-breadcrumb/WakaBreadcrumb.stories.tsx +120 -0
  164. package/src/components/waka-breadcrumb-path/WakaBreadcrumbPath.stories.tsx +40 -0
  165. package/src/components/waka-budget-burn/WakaBudgetBurn.stories.tsx +86 -0
  166. package/src/components/waka-build-matrix/WakaBuildMatrix.stories.tsx +328 -0
  167. package/src/components/waka-capacity-planner/WakaCapacityPlanner.stories.tsx +273 -0
  168. package/src/components/waka-carousel/WakaCarousel.stories.tsx +296 -0
  169. package/src/components/waka-cart-summary/WakaCartSummary.stories.tsx +176 -0
  170. package/src/components/waka-cart-summary/index.tsx +19 -10
  171. package/src/components/waka-challenge-timer/WakaChallengeTimer.stories.tsx +98 -0
  172. package/src/components/waka-charts/WakaCharts.stories.tsx +519 -0
  173. package/src/components/waka-chat-bubble/WakaChatBubble.stories.tsx +118 -0
  174. package/src/components/waka-checklist/WakaChecklist.stories.tsx +71 -0
  175. package/src/components/waka-checkout-stepper/WakaCheckoutStepper.stories.tsx +102 -0
  176. package/src/components/waka-cohort-table/WakaCohortTable.stories.tsx +56 -0
  177. package/src/components/waka-color-picker/WakaColorPicker.stories.tsx +144 -0
  178. package/src/components/waka-combo-counter/WakaComboCounter.stories.tsx +128 -0
  179. package/src/components/waka-combobox/WakaCombobox.stories.tsx +250 -0
  180. package/src/components/waka-command-bar/WakaCommandBar.stories.tsx +45 -0
  181. package/src/components/waka-compare-period/WakaComparePeriod.stories.tsx +76 -0
  182. package/src/components/waka-config-comparator/WakaConfigComparator.stories.tsx +143 -0
  183. package/src/components/waka-connection-matrix/WakaConnectionMatrix.stories.tsx +52 -0
  184. package/src/components/waka-container-list/WakaContainerList.stories.tsx +315 -0
  185. package/src/components/waka-content-recommendation/WakaContentRecommendation.stories.tsx +41 -0
  186. package/src/components/waka-contribution-graph/WakaContributionGraph.stories.tsx +354 -0
  187. package/src/components/waka-cost-breakdown/WakaCostBreakdown.stories.tsx +348 -0
  188. package/src/components/waka-coupon-input/WakaCouponInput.stories.tsx +126 -0
  189. package/src/components/waka-credit-card-input/WakaCreditCardInput.stories.tsx +120 -0
  190. package/src/components/waka-daily-reward/WakaDailyReward.stories.tsx +365 -0
  191. package/src/components/waka-database-card/WakaDatabaseCard.stories.tsx +306 -0
  192. package/src/components/waka-date-range-picker/WakaDateRangePicker.stories.tsx +339 -0
  193. package/src/components/waka-datetime-picker/WakaDateTimePicker.stories.tsx +317 -0
  194. package/src/components/waka-datetime-picker.form-integration/WakaDateTimePickerForm.stories.tsx +79 -0
  195. package/src/components/waka-dependency-tree/WakaDependencyTree.stories.tsx +72 -0
  196. package/src/components/waka-deployment-lane/WakaDeploymentLane.stories.tsx +292 -0
  197. package/src/components/waka-device-trust/WakaDeviceTrust.stories.tsx +109 -0
  198. package/src/components/waka-dock/WakaDock.stories.tsx +332 -0
  199. package/src/components/waka-drawer/WakaDrawer.stories.tsx +437 -0
  200. package/src/components/waka-empty-state/WakaEmptyState.stories.tsx +87 -0
  201. package/src/components/waka-env-var-editor/WakaEnvVarEditor.stories.tsx +263 -0
  202. package/src/components/waka-error-shake/WakaErrorShake.stories.tsx +410 -0
  203. package/src/components/waka-feature-announcement/WakaFeatureAnnouncement.stories.tsx +47 -0
  204. package/src/components/waka-feature-flag-row/WakaFeatureFlagRow.stories.tsx +188 -0
  205. package/src/components/waka-file-upload/WakaFileUpload.stories.tsx +183 -0
  206. package/src/components/waka-floating-nav/WakaFloatingNav.stories.tsx +53 -0
  207. package/src/components/waka-flow-diagram/WakaFlowDiagram.stories.tsx +365 -0
  208. package/src/components/waka-funnel-chart/WakaFunnelChart.stories.tsx +281 -0
  209. package/src/components/waka-glow-card/WakaGlowCard.stories.tsx +274 -0
  210. package/src/components/waka-goal-progress/WakaGoalProgress.stories.tsx +137 -0
  211. package/src/components/waka-haptic-button/WakaHapticButton.stories.tsx +349 -0
  212. package/src/components/waka-health-pulse/WakaHealthPulse.stories.tsx +293 -0
  213. package/src/components/waka-heatmap/WakaHeatmap.stories.tsx +376 -0
  214. package/src/components/waka-hotspot/WakaHotspot.stories.tsx +56 -0
  215. package/src/components/waka-image/WakaImage.stories.tsx +255 -0
  216. package/src/components/waka-incident-timeline/WakaIncidentTimeline.stories.tsx +300 -0
  217. package/src/components/waka-invoice-preview/WakaInvoicePreview.stories.tsx +169 -0
  218. package/src/components/waka-kanban/WakaKanban.stories.tsx +399 -0
  219. package/src/components/waka-kpi-dashboard/WakaKpiDashboard.stories.tsx +46 -0
  220. package/src/components/waka-kubernetes-overview/WakaKubernetesOverview.stories.tsx +281 -0
  221. package/src/components/waka-leaderboard/WakaLeaderboard.stories.tsx +300 -0
  222. package/src/components/waka-level-progress/WakaLevelProgress.stories.tsx +332 -0
  223. package/src/components/waka-liquid-button/WakaLiquidButton.stories.tsx +45 -0
  224. package/src/components/waka-loading-orbit/WakaLoadingOrbit.stories.tsx +413 -0
  225. package/src/components/waka-log-viewer/WakaLogViewer.stories.tsx +312 -0
  226. package/src/components/waka-loot-box/WakaLootBox.stories.tsx +374 -0
  227. package/src/components/waka-magic-link/WakaMagicLink.stories.tsx +61 -0
  228. package/src/components/waka-magnetic-button/WakaMagneticButton.stories.tsx +40 -0
  229. package/src/components/waka-mention-input/WakaMentionInput.stories.tsx +140 -0
  230. package/src/components/waka-metric-sparkline/WakaMetricSparkline.stories.tsx +312 -0
  231. package/src/components/waka-migration-list/WakaMigrationList.stories.tsx +289 -0
  232. package/src/components/waka-milestone-road/WakaMilestoneRoad.stories.tsx +143 -0
  233. package/src/components/waka-modal/WakaModal.stories.tsx +434 -0
  234. package/src/components/waka-morph-button/WakaMorphButton.stories.tsx +405 -0
  235. package/src/components/waka-network-topology/WakaNetworkTopology.stories.tsx +364 -0
  236. package/src/components/waka-notifications/WakaNotifications.stories.tsx +290 -0
  237. package/src/components/waka-number-input/WakaNumberInput.stories.tsx +282 -0
  238. package/src/components/waka-orbital-menu/WakaOrbitalMenu.stories.tsx +54 -0
  239. package/src/components/waka-order-tracker/WakaOrderTracker.stories.tsx +163 -0
  240. package/src/components/waka-outstream-video/WakaOutstreamVideo.stories.tsx +94 -0
  241. package/src/components/waka-pagination/WakaPagination.stories.tsx +158 -0
  242. package/src/components/waka-password-strength/WakaPasswordStrength.stories.tsx +182 -0
  243. package/src/components/waka-payment-method-picker/WakaPaymentMethodPicker.stories.tsx +141 -0
  244. package/src/components/waka-permission-matrix/WakaPermissionMatrix.stories.tsx +124 -0
  245. package/src/components/waka-phone-input/WakaPhoneInput.stories.tsx +56 -0
  246. package/src/components/waka-pipeline-view/WakaPipelineView.stories.tsx +386 -0
  247. package/src/components/waka-player-card/WakaPlayerCard.stories.tsx +333 -0
  248. package/src/components/waka-pod-card/WakaPodCard.stories.tsx +435 -0
  249. package/src/components/waka-points-popup/WakaPointsPopup.stories.tsx +96 -0
  250. package/src/components/waka-power-up/WakaPowerUp.stories.tsx +121 -0
  251. package/src/components/waka-presence-indicator/WakaPresenceIndicator.stories.tsx +49 -0
  252. package/src/components/waka-pricing-table/WakaPricingTable.stories.tsx +159 -0
  253. package/src/components/waka-product-card/WakaProductCard.stories.tsx +202 -0
  254. package/src/components/waka-progress-onboarding/WakaProgressOnboarding.stories.tsx +57 -0
  255. package/src/components/waka-pull-to-refresh/WakaPullToRefresh.stories.tsx +51 -0
  256. package/src/components/waka-qrcode/WakaQRCode.stories.tsx +232 -0
  257. package/src/components/waka-query-explain/WakaQueryExplain.stories.tsx +407 -0
  258. package/src/components/waka-quest-card/WakaQuestCard.stories.tsx +394 -0
  259. package/src/components/waka-quota-bar/WakaQuotaBar.stories.tsx +435 -0
  260. package/src/components/waka-radar-score/WakaRadarScore.stories.tsx +372 -0
  261. package/src/components/waka-rank-badge/WakaRankBadge.stories.tsx +108 -0
  262. package/src/components/waka-rating-input/WakaRatingInput.stories.tsx +51 -0
  263. package/src/components/waka-reaction-picker/WakaReactionPicker.stories.tsx +52 -0
  264. package/src/components/waka-region-map/WakaRegionMap.stories.tsx +181 -0
  265. package/src/components/waka-resource-gauge/WakaResourceGauge.stories.tsx +366 -0
  266. package/src/components/waka-resource-pool/WakaResourcePool.stories.tsx +70 -0
  267. package/src/components/waka-rich-text-editor/WakaRichTextEditor.stories.tsx +149 -0
  268. package/src/components/waka-rollback-slider/WakaRollbackSlider.stories.tsx +41 -0
  269. package/src/components/waka-sankey-diagram/WakaSankeyDiagram.stories.tsx +389 -0
  270. package/src/components/waka-schedule-picker/WakaSchedulePicker.stories.tsx +64 -0
  271. package/src/components/waka-scratch-card/WakaScratchCard.stories.tsx +388 -0
  272. package/src/components/waka-season-pass/WakaSeasonPass.stories.tsx +107 -0
  273. package/src/components/waka-secret-card/WakaSecretCard.stories.tsx +314 -0
  274. package/src/components/waka-security-scan-result/WakaSecurityScanResult.stories.tsx +146 -0
  275. package/src/components/waka-security-score/WakaSecurityScore.stories.tsx +63 -0
  276. package/src/components/waka-segmented-control/WakaSegmentedControl.stories.tsx +309 -0
  277. package/src/components/waka-server-rack/WakaServerRack.stories.tsx +382 -0
  278. package/src/components/waka-service-graph/WakaServiceGraph.stories.tsx +262 -0
  279. package/src/components/waka-session-manager/WakaSessionManager.stories.tsx +68 -0
  280. package/src/components/waka-signature-pad/WakaSignaturePad.stories.tsx +159 -0
  281. package/src/components/waka-signature-pad/index.tsx +5 -3
  282. package/src/components/waka-skeleton-wave/WakaSkeletonWave.stories.tsx +321 -0
  283. package/src/components/waka-skill-tree/WakaSkillTree.stories.tsx +308 -0
  284. package/src/components/waka-sla-tracker/WakaSlaTracker.stories.tsx +65 -0
  285. package/src/components/waka-slider-range/WakaSliderRange.stories.tsx +66 -0
  286. package/src/components/waka-spin-wheel/WakaSpinWheel.stories.tsx +368 -0
  287. package/src/components/waka-spinner/WakaSpinner.stories.tsx +156 -0
  288. package/src/components/waka-sponsored-badge/WakaSponsoredBadge.stories.tsx +60 -0
  289. package/src/components/waka-sponsored-card/WakaSponsoredCard.stories.tsx +64 -0
  290. package/src/components/waka-sponsored-feed/WakaSponsoredFeed.stories.tsx +58 -0
  291. package/src/components/waka-spotlight/WakaSpotlight.stories.tsx +53 -0
  292. package/src/components/waka-stat/WakaStat.stories.tsx +334 -0
  293. package/src/components/waka-stats-hexagon/WakaStatsHexagon.stories.tsx +161 -0
  294. package/src/components/waka-status-matrix/WakaStatusMatrix.stories.tsx +331 -0
  295. package/src/components/waka-stepper/WakaStepper.stories.tsx +195 -0
  296. package/src/components/waka-streak-counter/WakaStreakCounter.stories.tsx +235 -0
  297. package/src/components/waka-success-explosion/WakaSuccessExplosion.stories.tsx +389 -0
  298. package/src/components/waka-swipe-card/WakaSwipeCard.stories.tsx +51 -0
  299. package/src/components/waka-tabs-morph/WakaTabsMorph.stories.tsx +471 -0
  300. package/src/components/waka-tag-input/WakaTagInput.stories.tsx +224 -0
  301. package/src/components/waka-team-banner/WakaTeamBanner.stories.tsx +50 -0
  302. package/src/components/waka-terminal-output/WakaTerminalOutput.stories.tsx +351 -0
  303. package/src/components/waka-test-report/WakaTestReport.stories.tsx +322 -0
  304. package/src/components/waka-theme-creator/WakaThemeCreator.stories.tsx +58 -0
  305. package/src/components/waka-theme-manager/WakaThemeManager.stories.tsx +298 -0
  306. package/src/components/waka-theme-manager/index.tsx +6 -11
  307. package/src/components/waka-thread-view/WakaThreadView.stories.tsx +143 -0
  308. package/src/components/waka-tilt-card/WakaTiltCard.stories.tsx +300 -0
  309. package/src/components/waka-time-picker/WakaTimePicker.stories.tsx +227 -0
  310. package/src/components/waka-timeline/WakaTimeline.stories.tsx +230 -0
  311. package/src/components/waka-tooltip-tour/WakaTooltipTour.stories.tsx +92 -0
  312. package/src/components/waka-tour-guide/WakaTourGuide.stories.tsx +89 -0
  313. package/src/components/waka-tournament-bracket/WakaTournamentBracket.stories.tsx +375 -0
  314. package/src/components/waka-trace-viewer/WakaTraceViewer.stories.tsx +445 -0
  315. package/src/components/waka-tree/WakaTree.stories.tsx +359 -0
  316. package/src/components/waka-treemap-chart/WakaTreemapChart.stories.tsx +483 -0
  317. package/src/components/waka-treemap-chart/index.tsx +2 -2
  318. package/src/components/waka-two-factor-setup/WakaTwoFactorSetup.stories.tsx +142 -0
  319. package/src/components/waka-typewriter/WakaTypewriter.stories.tsx +366 -0
  320. package/src/components/waka-typing-indicator/WakaTypingIndicator.stories.tsx +134 -0
  321. package/src/components/waka-versus-card/WakaVersusCard.stories.tsx +530 -0
  322. package/src/components/waka-video/WakaVideo.stories.tsx +203 -0
  323. package/src/components/waka-video-ad/WakaVideoAd.stories.tsx +138 -0
  324. package/src/components/waka-video-call/WakaVideoCall.stories.tsx +186 -0
  325. package/src/components/waka-video-overlay/WakaVideoOverlay.stories.tsx +100 -0
  326. package/src/components/waka-virtual-list/WakaVirtualList.stories.tsx +273 -0
  327. package/src/components/waka-voice-message/WakaVoiceMessage.stories.tsx +190 -0
  328. package/src/components/waka-welcome-modal/WakaWelcomeModal.stories.tsx +87 -0
  329. package/src/components/waka-xp-bar/WakaXPBar.stories.tsx +305 -0
  330. package/dist/useDataTableImport-D8R2HQl6.mjs +0 -229
  331. package/dist/useDataTableImport-S_hhA5Wo.js +0 -9
  332. package/src/components/DataTable/README.md +0 -446
@@ -0,0 +1,278 @@
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+ import {
3
+ Menubar,
4
+ MenubarContent,
5
+ MenubarItem,
6
+ MenubarMenu,
7
+ MenubarSeparator,
8
+ MenubarShortcut,
9
+ MenubarTrigger,
10
+ MenubarCheckboxItem,
11
+ MenubarRadioGroup,
12
+ MenubarRadioItem,
13
+ MenubarSub,
14
+ MenubarSubContent,
15
+ MenubarSubTrigger,
16
+ } from './index'
17
+ import * as React from 'react'
18
+
19
+ const meta: Meta<typeof Menubar> = {
20
+ title: 'Components/Menubar',
21
+ component: Menubar,
22
+ parameters: {
23
+ layout: 'centered',
24
+ docs: {
25
+ description: {
26
+ component: 'A visually persistent menu common in desktop applications.',
27
+ },
28
+ },
29
+ },
30
+ tags: ['autodocs'],
31
+ }
32
+
33
+ export default meta
34
+ type Story = StoryObj<typeof Menubar>
35
+
36
+ export const Default: Story = {
37
+ args: {},
38
+ render: (args) => (
39
+ <Menubar {...args}>
40
+ <MenubarMenu>
41
+ <MenubarTrigger>File</MenubarTrigger>
42
+ <MenubarContent>
43
+ <MenubarItem>
44
+ New Tab <MenubarShortcut>⌘T</MenubarShortcut>
45
+ </MenubarItem>
46
+ <MenubarItem>
47
+ New Window <MenubarShortcut>⌘N</MenubarShortcut>
48
+ </MenubarItem>
49
+ <MenubarItem disabled>New Incognito Window</MenubarItem>
50
+ <MenubarSeparator />
51
+ <MenubarItem>
52
+ Share <MenubarShortcut>⌘S</MenubarShortcut>
53
+ </MenubarItem>
54
+ <MenubarSeparator />
55
+ <MenubarItem>
56
+ Print... <MenubarShortcut>⌘P</MenubarShortcut>
57
+ </MenubarItem>
58
+ </MenubarContent>
59
+ </MenubarMenu>
60
+ <MenubarMenu>
61
+ <MenubarTrigger>Edit</MenubarTrigger>
62
+ <MenubarContent>
63
+ <MenubarItem>
64
+ Undo <MenubarShortcut>⌘Z</MenubarShortcut>
65
+ </MenubarItem>
66
+ <MenubarItem>
67
+ Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>
68
+ </MenubarItem>
69
+ <MenubarSeparator />
70
+ <MenubarItem>
71
+ Cut <MenubarShortcut>⌘X</MenubarShortcut>
72
+ </MenubarItem>
73
+ <MenubarItem>
74
+ Copy <MenubarShortcut>⌘C</MenubarShortcut>
75
+ </MenubarItem>
76
+ <MenubarItem>
77
+ Paste <MenubarShortcut>⌘V</MenubarShortcut>
78
+ </MenubarItem>
79
+ </MenubarContent>
80
+ </MenubarMenu>
81
+ <MenubarMenu>
82
+ <MenubarTrigger>View</MenubarTrigger>
83
+ <MenubarContent>
84
+ <MenubarItem>Reload</MenubarItem>
85
+ <MenubarItem disabled>Force Reload</MenubarItem>
86
+ <MenubarSeparator />
87
+ <MenubarItem>Toggle Fullscreen</MenubarItem>
88
+ </MenubarContent>
89
+ </MenubarMenu>
90
+ </Menubar>
91
+ ),
92
+ }
93
+
94
+ export const WithCheckboxes: Story = {
95
+ render: function MenubarWithCheckboxes() {
96
+ const [showBookmarks, setShowBookmarks] = React.useState(true)
97
+ const [showFullUrls, setShowFullUrls] = React.useState(false)
98
+
99
+ return (
100
+ <Menubar>
101
+ <MenubarMenu>
102
+ <MenubarTrigger>View</MenubarTrigger>
103
+ <MenubarContent>
104
+ <MenubarCheckboxItem
105
+ checked={showBookmarks}
106
+ onCheckedChange={setShowBookmarks}
107
+ >
108
+ Show Bookmarks Bar
109
+ </MenubarCheckboxItem>
110
+ <MenubarCheckboxItem
111
+ checked={showFullUrls}
112
+ onCheckedChange={setShowFullUrls}
113
+ >
114
+ Show Full URLs
115
+ </MenubarCheckboxItem>
116
+ <MenubarSeparator />
117
+ <MenubarItem>
118
+ Zoom In <MenubarShortcut>⌘+</MenubarShortcut>
119
+ </MenubarItem>
120
+ <MenubarItem>
121
+ Zoom Out <MenubarShortcut>⌘-</MenubarShortcut>
122
+ </MenubarItem>
123
+ </MenubarContent>
124
+ </MenubarMenu>
125
+ </Menubar>
126
+ )
127
+ },
128
+ }
129
+
130
+ export const WithRadioGroup: Story = {
131
+ render: function MenubarWithRadio() {
132
+ const [theme, setTheme] = React.useState('system')
133
+
134
+ return (
135
+ <Menubar>
136
+ <MenubarMenu>
137
+ <MenubarTrigger>Preferences</MenubarTrigger>
138
+ <MenubarContent>
139
+ <MenubarRadioGroup value={theme} onValueChange={setTheme}>
140
+ <MenubarRadioItem value="light">Light</MenubarRadioItem>
141
+ <MenubarRadioItem value="dark">Dark</MenubarRadioItem>
142
+ <MenubarRadioItem value="system">System</MenubarRadioItem>
143
+ </MenubarRadioGroup>
144
+ </MenubarContent>
145
+ </MenubarMenu>
146
+ </Menubar>
147
+ )
148
+ },
149
+ }
150
+
151
+ export const WithSubmenus: Story = {
152
+ render: () => (
153
+ <Menubar>
154
+ <MenubarMenu>
155
+ <MenubarTrigger>File</MenubarTrigger>
156
+ <MenubarContent>
157
+ <MenubarItem>New File</MenubarItem>
158
+ <MenubarSub>
159
+ <MenubarSubTrigger>Share</MenubarSubTrigger>
160
+ <MenubarSubContent>
161
+ <MenubarItem>Email link</MenubarItem>
162
+ <MenubarItem>Messages</MenubarItem>
163
+ <MenubarItem>Notes</MenubarItem>
164
+ </MenubarSubContent>
165
+ </MenubarSub>
166
+ <MenubarSeparator />
167
+ <MenubarItem>Print</MenubarItem>
168
+ </MenubarContent>
169
+ </MenubarMenu>
170
+ </Menubar>
171
+ ),
172
+ }
173
+
174
+ export const FullExample: Story = {
175
+ render: function FullMenubar() {
176
+ const [bookmarksChecked, setBookmarksChecked] = React.useState(true)
177
+ const [fullUrlsChecked, setFullUrlsChecked] = React.useState(false)
178
+ const [person, setPerson] = React.useState('pedro')
179
+
180
+ return (
181
+ <Menubar>
182
+ <MenubarMenu>
183
+ <MenubarTrigger>File</MenubarTrigger>
184
+ <MenubarContent>
185
+ <MenubarItem>
186
+ New Tab <MenubarShortcut>⌘T</MenubarShortcut>
187
+ </MenubarItem>
188
+ <MenubarItem>
189
+ New Window <MenubarShortcut>⌘N</MenubarShortcut>
190
+ </MenubarItem>
191
+ <MenubarItem disabled>New Incognito Window</MenubarItem>
192
+ <MenubarSeparator />
193
+ <MenubarSub>
194
+ <MenubarSubTrigger>Share</MenubarSubTrigger>
195
+ <MenubarSubContent>
196
+ <MenubarItem>Email link</MenubarItem>
197
+ <MenubarItem>Messages</MenubarItem>
198
+ <MenubarItem>Notes</MenubarItem>
199
+ </MenubarSubContent>
200
+ </MenubarSub>
201
+ <MenubarSeparator />
202
+ <MenubarItem>
203
+ Print... <MenubarShortcut>⌘P</MenubarShortcut>
204
+ </MenubarItem>
205
+ </MenubarContent>
206
+ </MenubarMenu>
207
+ <MenubarMenu>
208
+ <MenubarTrigger>Edit</MenubarTrigger>
209
+ <MenubarContent>
210
+ <MenubarItem>
211
+ Undo <MenubarShortcut>⌘Z</MenubarShortcut>
212
+ </MenubarItem>
213
+ <MenubarItem>
214
+ Redo <MenubarShortcut>⇧⌘Z</MenubarShortcut>
215
+ </MenubarItem>
216
+ <MenubarSeparator />
217
+ <MenubarSub>
218
+ <MenubarSubTrigger>Find</MenubarSubTrigger>
219
+ <MenubarSubContent>
220
+ <MenubarItem>Search the web</MenubarItem>
221
+ <MenubarSeparator />
222
+ <MenubarItem>Find...</MenubarItem>
223
+ <MenubarItem>Find Next</MenubarItem>
224
+ <MenubarItem>Find Previous</MenubarItem>
225
+ </MenubarSubContent>
226
+ </MenubarSub>
227
+ <MenubarSeparator />
228
+ <MenubarItem>Cut</MenubarItem>
229
+ <MenubarItem>Copy</MenubarItem>
230
+ <MenubarItem>Paste</MenubarItem>
231
+ </MenubarContent>
232
+ </MenubarMenu>
233
+ <MenubarMenu>
234
+ <MenubarTrigger>View</MenubarTrigger>
235
+ <MenubarContent>
236
+ <MenubarCheckboxItem
237
+ checked={bookmarksChecked}
238
+ onCheckedChange={setBookmarksChecked}
239
+ >
240
+ Always Show Bookmarks Bar
241
+ </MenubarCheckboxItem>
242
+ <MenubarCheckboxItem
243
+ checked={fullUrlsChecked}
244
+ onCheckedChange={setFullUrlsChecked}
245
+ >
246
+ Always Show Full URLs
247
+ </MenubarCheckboxItem>
248
+ <MenubarSeparator />
249
+ <MenubarItem inset>
250
+ Reload <MenubarShortcut>⌘R</MenubarShortcut>
251
+ </MenubarItem>
252
+ <MenubarItem disabled inset>
253
+ Force Reload <MenubarShortcut>⇧⌘R</MenubarShortcut>
254
+ </MenubarItem>
255
+ <MenubarSeparator />
256
+ <MenubarItem inset>Toggle Fullscreen</MenubarItem>
257
+ <MenubarSeparator />
258
+ <MenubarItem inset>Hide Sidebar</MenubarItem>
259
+ </MenubarContent>
260
+ </MenubarMenu>
261
+ <MenubarMenu>
262
+ <MenubarTrigger>Profiles</MenubarTrigger>
263
+ <MenubarContent>
264
+ <MenubarRadioGroup value={person} onValueChange={setPerson}>
265
+ <MenubarRadioItem value="andy">Andy</MenubarRadioItem>
266
+ <MenubarRadioItem value="benoit">Benoit</MenubarRadioItem>
267
+ <MenubarRadioItem value="pedro">Pedro</MenubarRadioItem>
268
+ </MenubarRadioGroup>
269
+ <MenubarSeparator />
270
+ <MenubarItem inset>Edit...</MenubarItem>
271
+ <MenubarSeparator />
272
+ <MenubarItem inset>Add Profile...</MenubarItem>
273
+ </MenubarContent>
274
+ </MenubarMenu>
275
+ </Menubar>
276
+ )
277
+ },
278
+ }
@@ -0,0 +1,202 @@
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+ import {
3
+ NavigationMenu,
4
+ NavigationMenuContent,
5
+ NavigationMenuItem,
6
+ NavigationMenuLink,
7
+ NavigationMenuList,
8
+ NavigationMenuTrigger,
9
+ navigationMenuTriggerStyle,
10
+ } from './index'
11
+ import { cn } from '../../utils/cn'
12
+ import * as React from 'react'
13
+
14
+ const meta: Meta<typeof NavigationMenu> = {
15
+ title: 'Components/NavigationMenu',
16
+ component: NavigationMenu,
17
+ parameters: {
18
+ layout: 'centered',
19
+ docs: {
20
+ description: {
21
+ component: 'A collection of links for navigating websites.',
22
+ },
23
+ },
24
+ },
25
+ tags: ['autodocs'],
26
+ }
27
+
28
+ export default meta
29
+ type Story = StoryObj<typeof NavigationMenu>
30
+
31
+ const ListItem = React.forwardRef<
32
+ React.ElementRef<'a'>,
33
+ React.ComponentPropsWithoutRef<'a'> & { title: string }
34
+ >(({ className, title, children, ...props }, ref) => {
35
+ return (
36
+ <li>
37
+ <NavigationMenuLink asChild>
38
+ <a
39
+ ref={ref}
40
+ className={cn(
41
+ 'block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground',
42
+ className
43
+ )}
44
+ {...props}
45
+ >
46
+ <div className="text-sm font-medium leading-none">{title}</div>
47
+ <p className="line-clamp-2 text-sm leading-snug text-muted-foreground">
48
+ {children}
49
+ </p>
50
+ </a>
51
+ </NavigationMenuLink>
52
+ </li>
53
+ )
54
+ })
55
+ ListItem.displayName = 'ListItem'
56
+
57
+ export const Default: Story = {
58
+ args: {},
59
+ render: (args) => (
60
+ <NavigationMenu {...args}>
61
+ <NavigationMenuList>
62
+ <NavigationMenuItem>
63
+ <NavigationMenuTrigger>Getting started</NavigationMenuTrigger>
64
+ <NavigationMenuContent>
65
+ <ul className="grid gap-3 p-6 md:w-[400px] lg:w-[500px] lg:grid-cols-[.75fr_1fr]">
66
+ <li className="row-span-3">
67
+ <NavigationMenuLink asChild>
68
+ <a
69
+ className="flex h-full w-full select-none flex-col justify-end rounded-md bg-gradient-to-b from-muted/50 to-muted p-6 no-underline outline-none focus:shadow-md"
70
+ href="#"
71
+ >
72
+ <div className="mb-2 mt-4 text-lg font-medium">
73
+ shadcn/ui
74
+ </div>
75
+ <p className="text-sm leading-tight text-muted-foreground">
76
+ Beautifully designed components built with Radix UI and
77
+ Tailwind CSS.
78
+ </p>
79
+ </a>
80
+ </NavigationMenuLink>
81
+ </li>
82
+ <ListItem href="#" title="Introduction">
83
+ Re-usable components built using Radix UI and Tailwind CSS.
84
+ </ListItem>
85
+ <ListItem href="#" title="Installation">
86
+ How to install dependencies and structure your app.
87
+ </ListItem>
88
+ <ListItem href="#" title="Typography">
89
+ Styles for headings, paragraphs, lists...etc
90
+ </ListItem>
91
+ </ul>
92
+ </NavigationMenuContent>
93
+ </NavigationMenuItem>
94
+ <NavigationMenuItem>
95
+ <NavigationMenuTrigger>Components</NavigationMenuTrigger>
96
+ <NavigationMenuContent>
97
+ <ul className="grid w-[400px] gap-3 p-4 md:w-[500px] md:grid-cols-2 lg:w-[600px]">
98
+ <ListItem href="#" title="Alert Dialog">
99
+ A modal dialog that interrupts the user with important content.
100
+ </ListItem>
101
+ <ListItem href="#" title="Hover Card">
102
+ For sighted users to preview content behind a link.
103
+ </ListItem>
104
+ <ListItem href="#" title="Progress">
105
+ Displays an indicator showing the completion progress.
106
+ </ListItem>
107
+ <ListItem href="#" title="Scroll-area">
108
+ Visually or semantically separates content.
109
+ </ListItem>
110
+ <ListItem href="#" title="Tabs">
111
+ A set of layered sections of content.
112
+ </ListItem>
113
+ <ListItem href="#" title="Tooltip">
114
+ A popup that displays information on hover.
115
+ </ListItem>
116
+ </ul>
117
+ </NavigationMenuContent>
118
+ </NavigationMenuItem>
119
+ <NavigationMenuItem>
120
+ <NavigationMenuLink className={navigationMenuTriggerStyle()} href="#">
121
+ Documentation
122
+ </NavigationMenuLink>
123
+ </NavigationMenuItem>
124
+ </NavigationMenuList>
125
+ </NavigationMenu>
126
+ ),
127
+ }
128
+
129
+ export const Simple: Story = {
130
+ render: () => (
131
+ <NavigationMenu>
132
+ <NavigationMenuList>
133
+ <NavigationMenuItem>
134
+ <NavigationMenuLink className={navigationMenuTriggerStyle()} href="#">
135
+ Home
136
+ </NavigationMenuLink>
137
+ </NavigationMenuItem>
138
+ <NavigationMenuItem>
139
+ <NavigationMenuLink className={navigationMenuTriggerStyle()} href="#">
140
+ About
141
+ </NavigationMenuLink>
142
+ </NavigationMenuItem>
143
+ <NavigationMenuItem>
144
+ <NavigationMenuLink className={navigationMenuTriggerStyle()} href="#">
145
+ Services
146
+ </NavigationMenuLink>
147
+ </NavigationMenuItem>
148
+ <NavigationMenuItem>
149
+ <NavigationMenuLink className={navigationMenuTriggerStyle()} href="#">
150
+ Contact
151
+ </NavigationMenuLink>
152
+ </NavigationMenuItem>
153
+ </NavigationMenuList>
154
+ </NavigationMenu>
155
+ ),
156
+ }
157
+
158
+ export const WithDropdowns: Story = {
159
+ render: () => (
160
+ <NavigationMenu>
161
+ <NavigationMenuList>
162
+ <NavigationMenuItem>
163
+ <NavigationMenuTrigger>Products</NavigationMenuTrigger>
164
+ <NavigationMenuContent>
165
+ <ul className="grid w-[400px] gap-3 p-4">
166
+ <ListItem href="#" title="Analytics">
167
+ Track and measure your application performance.
168
+ </ListItem>
169
+ <ListItem href="#" title="Engagement">
170
+ Build better relationships with your users.
171
+ </ListItem>
172
+ <ListItem href="#" title="Security">
173
+ Protect your data and your users.
174
+ </ListItem>
175
+ </ul>
176
+ </NavigationMenuContent>
177
+ </NavigationMenuItem>
178
+ <NavigationMenuItem>
179
+ <NavigationMenuTrigger>Resources</NavigationMenuTrigger>
180
+ <NavigationMenuContent>
181
+ <ul className="grid w-[400px] gap-3 p-4">
182
+ <ListItem href="#" title="Documentation">
183
+ Learn how to integrate our tools.
184
+ </ListItem>
185
+ <ListItem href="#" title="API Reference">
186
+ Complete API documentation.
187
+ </ListItem>
188
+ <ListItem href="#" title="Guides">
189
+ Step-by-step tutorials.
190
+ </ListItem>
191
+ </ul>
192
+ </NavigationMenuContent>
193
+ </NavigationMenuItem>
194
+ <NavigationMenuItem>
195
+ <NavigationMenuLink className={navigationMenuTriggerStyle()} href="#">
196
+ Pricing
197
+ </NavigationMenuLink>
198
+ </NavigationMenuItem>
199
+ </NavigationMenuList>
200
+ </NavigationMenu>
201
+ ),
202
+ }
@@ -0,0 +1,199 @@
1
+ import type { Meta, StoryObj } from '@storybook/react'
2
+ import { Popover, PopoverContent, PopoverTrigger } from './index'
3
+ import { Button } from '../button'
4
+ import { Input } from '../input'
5
+ import { Label } from '../label'
6
+ import { Settings, Share, Plus } from 'lucide-react'
7
+
8
+ const meta: Meta<typeof Popover> = {
9
+ title: 'Components/Popover',
10
+ component: Popover,
11
+ parameters: {
12
+ layout: 'centered',
13
+ docs: {
14
+ description: {
15
+ component: 'Displays rich content in a portal, triggered by a button.',
16
+ },
17
+ },
18
+ },
19
+ tags: ['autodocs'],
20
+ }
21
+
22
+ export default meta
23
+ type Story = StoryObj<typeof Popover>
24
+
25
+ export const Default: Story = {
26
+ args: {},
27
+ render: (args) => (
28
+ <Popover {...args}>
29
+ <PopoverTrigger asChild>
30
+ <Button variant="outline">Open popover</Button>
31
+ </PopoverTrigger>
32
+ <PopoverContent className="w-80">
33
+ <div className="grid gap-4">
34
+ <div className="space-y-2">
35
+ <h4 className="font-medium leading-none">Dimensions</h4>
36
+ <p className="text-sm text-muted-foreground">
37
+ Set the dimensions for the layer.
38
+ </p>
39
+ </div>
40
+ <div className="grid gap-2">
41
+ <div className="grid grid-cols-3 items-center gap-4">
42
+ <Label htmlFor="width">Width</Label>
43
+ <Input
44
+ id="width"
45
+ defaultValue="100%"
46
+ className="col-span-2 h-8"
47
+ />
48
+ </div>
49
+ <div className="grid grid-cols-3 items-center gap-4">
50
+ <Label htmlFor="height">Height</Label>
51
+ <Input
52
+ id="height"
53
+ defaultValue="25px"
54
+ className="col-span-2 h-8"
55
+ />
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </PopoverContent>
60
+ </Popover>
61
+ ),
62
+ }
63
+
64
+ export const Positions: Story = {
65
+ render: () => (
66
+ <div className="flex gap-8">
67
+ <Popover>
68
+ <PopoverTrigger asChild>
69
+ <Button variant="outline">Top</Button>
70
+ </PopoverTrigger>
71
+ <PopoverContent side="top" className="w-auto">
72
+ <p className="text-sm">Popover on top</p>
73
+ </PopoverContent>
74
+ </Popover>
75
+ <Popover>
76
+ <PopoverTrigger asChild>
77
+ <Button variant="outline">Right</Button>
78
+ </PopoverTrigger>
79
+ <PopoverContent side="right" className="w-auto">
80
+ <p className="text-sm">Popover on right</p>
81
+ </PopoverContent>
82
+ </Popover>
83
+ <Popover>
84
+ <PopoverTrigger asChild>
85
+ <Button variant="outline">Bottom</Button>
86
+ </PopoverTrigger>
87
+ <PopoverContent side="bottom" className="w-auto">
88
+ <p className="text-sm">Popover on bottom</p>
89
+ </PopoverContent>
90
+ </Popover>
91
+ <Popover>
92
+ <PopoverTrigger asChild>
93
+ <Button variant="outline">Left</Button>
94
+ </PopoverTrigger>
95
+ <PopoverContent side="left" className="w-auto">
96
+ <p className="text-sm">Popover on left</p>
97
+ </PopoverContent>
98
+ </Popover>
99
+ </div>
100
+ ),
101
+ }
102
+
103
+ export const WithForm: Story = {
104
+ render: () => (
105
+ <Popover>
106
+ <PopoverTrigger asChild>
107
+ <Button>
108
+ <Plus className="mr-2 h-4 w-4" />
109
+ Add item
110
+ </Button>
111
+ </PopoverTrigger>
112
+ <PopoverContent className="w-80">
113
+ <form className="grid gap-4">
114
+ <div className="space-y-2">
115
+ <h4 className="font-medium leading-none">Add new item</h4>
116
+ <p className="text-sm text-muted-foreground">
117
+ Fill in the details below.
118
+ </p>
119
+ </div>
120
+ <div className="grid gap-2">
121
+ <div className="grid gap-1">
122
+ <Label htmlFor="name">Name</Label>
123
+ <Input id="name" placeholder="Enter name" />
124
+ </div>
125
+ <div className="grid gap-1">
126
+ <Label htmlFor="description">Description</Label>
127
+ <Input id="description" placeholder="Enter description" />
128
+ </div>
129
+ </div>
130
+ <Button type="submit">Save</Button>
131
+ </form>
132
+ </PopoverContent>
133
+ </Popover>
134
+ ),
135
+ }
136
+
137
+ export const SharePopover: Story = {
138
+ render: () => (
139
+ <Popover>
140
+ <PopoverTrigger asChild>
141
+ <Button variant="secondary">
142
+ <Share className="mr-2 h-4 w-4" />
143
+ Share
144
+ </Button>
145
+ </PopoverTrigger>
146
+ <PopoverContent className="w-80">
147
+ <div className="grid gap-4">
148
+ <div className="space-y-2">
149
+ <h4 className="font-medium leading-none">Share link</h4>
150
+ <p className="text-sm text-muted-foreground">
151
+ Anyone with this link can view this content.
152
+ </p>
153
+ </div>
154
+ <div className="flex gap-2">
155
+ <Input
156
+ defaultValue="https://example.com/share/abc123"
157
+ readOnly
158
+ className="h-8"
159
+ />
160
+ <Button size="sm" className="px-3">
161
+ Copy
162
+ </Button>
163
+ </div>
164
+ </div>
165
+ </PopoverContent>
166
+ </Popover>
167
+ ),
168
+ }
169
+
170
+ export const SettingsPopover: Story = {
171
+ render: () => (
172
+ <Popover>
173
+ <PopoverTrigger asChild>
174
+ <Button variant="ghost" size="icon">
175
+ <Settings className="h-4 w-4" />
176
+ </Button>
177
+ </PopoverTrigger>
178
+ <PopoverContent className="w-56">
179
+ <div className="grid gap-4">
180
+ <h4 className="font-medium leading-none">Settings</h4>
181
+ <div className="grid gap-2">
182
+ <button className="text-left text-sm hover:bg-muted p-2 rounded-md">
183
+ Profile settings
184
+ </button>
185
+ <button className="text-left text-sm hover:bg-muted p-2 rounded-md">
186
+ Notifications
187
+ </button>
188
+ <button className="text-left text-sm hover:bg-muted p-2 rounded-md">
189
+ Privacy
190
+ </button>
191
+ <button className="text-left text-sm text-destructive hover:bg-muted p-2 rounded-md">
192
+ Sign out
193
+ </button>
194
+ </div>
195
+ </div>
196
+ </PopoverContent>
197
+ </Popover>
198
+ ),
199
+ }