@tempots/beatui 1.5.0 → 1.6.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 (184) hide show
  1. package/dist/ar-Wr6gMs-M.cjs +1 -0
  2. package/dist/{ar-C-kUt6f9.js → ar-fdUqbCvM.js} +154 -1
  3. package/dist/auth/index.cjs.js +1 -1
  4. package/dist/auth/index.es.js +1 -1
  5. package/dist/auth-divider-DewHpITQ.cjs +1 -0
  6. package/dist/{auth-divider-BIATan1F.js → auth-divider-qnJuYK-x.js} +7 -7
  7. package/dist/beatui.css +1711 -132
  8. package/dist/beatui.tailwind.css +1711 -132
  9. package/dist/better-auth/index.cjs.js +1 -1
  10. package/dist/better-auth/index.es.js +5 -5
  11. package/dist/{modal-BHlp4QeT.js → custom-validation-BetUqAEz.js} +186 -186
  12. package/dist/custom-validation-CLscGHY4.cjs +1 -0
  13. package/dist/{de-CP0kbElb.js → de-C5-k5Eov.js} +156 -3
  14. package/dist/de-DZqdSEta.cjs +1 -0
  15. package/dist/deep-merge-D90SW1Ci.cjs +1 -0
  16. package/dist/deep-merge-ZVigk5Qf.js +1765 -0
  17. package/dist/{duration-input-C5il_E0F.cjs → duration-input-4AQnQpyo.cjs} +1 -1
  18. package/dist/{duration-input-DoCCrqOG.js → duration-input-GMBmT1BE.js} +4 -4
  19. package/dist/{editor-toolbar-group-QVdBUbB8.cjs → editor-toolbar-group-C_ft_T8D.cjs} +1 -1
  20. package/dist/{editor-toolbar-group-DWUWUO-B.js → editor-toolbar-group-FpOHrmtx.js} +2 -2
  21. package/dist/es-CJgYfRap.cjs +1 -0
  22. package/dist/{es-BtIkcnsw.js → es-h6jmoF4X.js} +156 -3
  23. package/dist/fa-BQ5PzwNY.cjs +1 -0
  24. package/dist/{fa-11-rZmQ-.js → fa-BuxK837l.js} +154 -1
  25. package/dist/fr-Bv3TG44U.cjs +1 -0
  26. package/dist/{fr-C-L2F8w2.js → fr-BwILQ9G2.js} +165 -12
  27. package/dist/he-5LbvgMCC.cjs +1 -0
  28. package/dist/{he-Bu1xGoQ9.js → he-yC9Sc7JD.js} +154 -1
  29. package/dist/{hi-CewH-MAH.js → hi-Da7rcCpP.js} +154 -1
  30. package/dist/hi-YWhWcG_L.cjs +1 -0
  31. package/dist/{index-BGKz2Nol.js → index-DI8bf9oC.js} +175 -172
  32. package/dist/index-DeUj-5ph.cjs +1 -0
  33. package/dist/index.cjs.js +4 -4
  34. package/dist/index.es.js +11548 -8326
  35. package/dist/{input-container-CO3DNqpp.js → input-container-8JFB11xN.js} +1 -1
  36. package/dist/{input-container-BkPcNDaZ.cjs → input-container-CyOgiiQD.cjs} +1 -1
  37. package/dist/it-BxOIJE45.cjs +1 -0
  38. package/dist/{it-5hiKQO_p.js → it-Yeklau78.js} +156 -3
  39. package/dist/ja-CNhjK06P.cjs +1 -0
  40. package/dist/{ja-CGfEmZrm.js → ja-Dxj9Q5Yd.js} +155 -2
  41. package/dist/json-schema/index.cjs.js +1 -1
  42. package/dist/json-schema/index.es.js +10 -10
  43. package/dist/json-schema-display/index.cjs.js +1 -1
  44. package/dist/json-schema-display/index.es.js +1 -1
  45. package/dist/json-structure/index.cjs.js +1 -1
  46. package/dist/json-structure/index.es.js +5 -5
  47. package/dist/ko-DgkqcXTs.cjs +1 -0
  48. package/dist/{ko-DZthvREd.js → ko-gn_MsegK.js} +154 -1
  49. package/dist/lexical/index.cjs.js +1 -1
  50. package/dist/lexical/index.es.js +4 -4
  51. package/dist/nl-Dy9lmbBO.cjs +1 -0
  52. package/dist/{nl-CcKyHlQ7.js → nl-vHNFtXXb.js} +162 -9
  53. package/dist/{notice-BXKtBEiC.js → notice-B6ojfenv.js} +4 -4
  54. package/dist/{notice-BBnSXYUc.cjs → notice-p2IqXS5-.cjs} +1 -1
  55. package/dist/{oneof-branch-detection-DSzC0PkO.js → oneof-branch-detection-Q_jxvJIA.js} +1 -1
  56. package/dist/{oneof-branch-detection-BEkAezNi.cjs → oneof-branch-detection-xDDDdYRk.cjs} +1 -1
  57. package/dist/pl-BtYbtsmG.cjs +1 -0
  58. package/dist/{pl-Mwtjp4MV.js → pl-C0UdHla0.js} +184 -31
  59. package/dist/prosemirror/index.cjs.js +1 -1
  60. package/dist/prosemirror/index.es.js +4 -4
  61. package/dist/pt-CtNmqQ1X.cjs +1 -0
  62. package/dist/{pt-BaTsY-8f.js → pt-DGKtfN0d.js} +156 -3
  63. package/dist/ru-BaL_NPRU.cjs +1 -0
  64. package/dist/{ru-CvbGmz5s.js → ru-CpXYLt-v.js} +154 -1
  65. package/dist/tailwind/preset.cjs.js +1 -1
  66. package/dist/tailwind/preset.es.js +1 -1
  67. package/dist/tailwind/vite-plugin.cjs.js +1 -1
  68. package/dist/tailwind/vite-plugin.es.js +1 -1
  69. package/dist/{text-input-D_IxFd0M.cjs → text-input-DS5zlXb2.cjs} +1 -1
  70. package/dist/{text-input-BAn02BzO.js → text-input-NJypZSnE.js} +1 -1
  71. package/dist/{toolbar-CnecqhaU.cjs → toolbar-BBwfe8U9.cjs} +1 -1
  72. package/dist/{toolbar-BKan3NHw.js → toolbar-BF2L6WKC.js} +1 -1
  73. package/dist/{tr-YFqQdZjM.js → tr-DIFZDFW_.js} +156 -3
  74. package/dist/tr-DwOd87oB.cjs +1 -0
  75. package/dist/{translations-CxDUnbXn.js → translations-5cXBrENb.js} +1 -1
  76. package/dist/{translations-DT5QQ4WO.js → translations-BCMP-h52.js} +269 -115
  77. package/dist/{translations-C_-cObaF.cjs → translations-BqWc0ZHz.cjs} +1 -1
  78. package/dist/translations-EwEmHe3v.cjs +1 -0
  79. package/dist/types/beatui-i18n/default.d.ts +109 -0
  80. package/dist/types/beatui-i18n/locales/en.d.ts +109 -0
  81. package/dist/types/beatui-i18n/translations.d.ts +109 -0
  82. package/dist/types/components/button/copy-button.d.ts +42 -0
  83. package/dist/types/components/button/index.d.ts +1 -0
  84. package/dist/types/components/button/toggle-button-group.d.ts +2 -2
  85. package/dist/types/components/button/toggle-button.d.ts +2 -2
  86. package/dist/types/components/data/date-picker-shared.d.ts +2 -5
  87. package/dist/types/components/data/date-picker.d.ts +1 -1
  88. package/dist/types/components/data/date-range-picker.d.ts +1 -1
  89. package/dist/types/components/data/index.d.ts +3 -0
  90. package/dist/types/components/data/stat-card.d.ts +108 -0
  91. package/dist/types/components/data/time-picker.d.ts +54 -0
  92. package/dist/types/components/data/virtual-scrolling/index.d.ts +1 -0
  93. package/dist/types/components/data/virtual-scrolling/virtual-list.d.ts +91 -0
  94. package/dist/types/components/form/input/checkbox-input.d.ts +1 -1
  95. package/dist/types/components/form/input/color-input.d.ts +1 -1
  96. package/dist/types/components/form/input/color-picker/canvas-draw.d.ts +12 -0
  97. package/dist/types/components/form/input/color-picker/channel-picker.d.ts +71 -0
  98. package/dist/types/components/form/input/color-picker/hex-color-picker.d.ts +20 -0
  99. package/dist/types/components/form/input/color-picker/hsl-color-picker.d.ts +14 -0
  100. package/dist/types/components/form/input/color-picker/hwb-color-picker.d.ts +15 -0
  101. package/dist/types/components/form/input/color-picker/index.d.ts +7 -0
  102. package/dist/types/components/form/input/color-picker/oklch-color-picker.d.ts +15 -0
  103. package/dist/types/components/form/input/color-picker/rgb-color-picker.d.ts +17 -0
  104. package/dist/types/components/form/input/color-swatch-input.d.ts +1 -1
  105. package/dist/types/components/form/input/combobox-input.d.ts +1 -1
  106. package/dist/types/components/form/input/date-input.d.ts +1 -1
  107. package/dist/types/components/form/input/date-range-select-base.d.ts +23 -0
  108. package/dist/types/components/form/input/date-range-select.d.ts +64 -0
  109. package/dist/types/components/form/input/date-select.d.ts +52 -0
  110. package/dist/types/components/form/input/date-time-input.d.ts +1 -1
  111. package/dist/types/components/form/input/date-time-select-base.d.ts +23 -0
  112. package/dist/types/components/form/input/date-time-select.d.ts +66 -0
  113. package/dist/types/components/form/input/dropdown-input.d.ts +1 -1
  114. package/dist/types/components/form/input/email-input.d.ts +1 -1
  115. package/dist/types/components/form/input/index.d.ts +17 -0
  116. package/dist/types/components/form/input/nullable-date-select.d.ts +55 -0
  117. package/dist/types/components/form/input/nullable-date-time-select.d.ts +68 -0
  118. package/dist/types/components/form/input/nullable-time-select.d.ts +64 -0
  119. package/dist/types/components/form/input/number-input.d.ts +5 -40
  120. package/dist/types/components/form/input/number-stepper.d.ts +53 -0
  121. package/dist/types/components/form/input/open-date-range-select.d.ts +75 -0
  122. package/dist/types/components/form/input/otp-input.d.ts +2 -2
  123. package/dist/types/components/form/input/password-input.d.ts +1 -1
  124. package/dist/types/components/form/input/radio-group.d.ts +1 -1
  125. package/dist/types/components/form/input/range-slider.d.ts +4 -4
  126. package/dist/types/components/form/input/rating-input.d.ts +1 -1
  127. package/dist/types/components/form/input/segmented-input.d.ts +6 -2
  128. package/dist/types/components/form/input/segmented-select.d.ts +84 -0
  129. package/dist/types/components/form/input/slider-input.d.ts +2 -2
  130. package/dist/types/components/form/input/sortable-list.d.ts +68 -0
  131. package/dist/types/components/form/input/switch.d.ts +1 -1
  132. package/dist/types/components/form/input/text-area.d.ts +1 -1
  133. package/dist/types/components/form/input/text-input.d.ts +1 -1
  134. package/dist/types/components/form/input/time-format.d.ts +31 -0
  135. package/dist/types/components/form/input/time-select-base.d.ts +23 -0
  136. package/dist/types/components/form/input/time-select.d.ts +61 -0
  137. package/dist/types/components/form/input/transfer-list.d.ts +56 -0
  138. package/dist/types/components/form/input/tri-state-checkbox-input.d.ts +1 -1
  139. package/dist/types/components/form/input/url-input.d.ts +1 -1
  140. package/dist/types/components/layout/nine-slice-scroll-view.d.ts +1 -1
  141. package/dist/types/components/navigation/index.d.ts +1 -0
  142. package/dist/types/components/navigation/stepper.d.ts +102 -0
  143. package/dist/types/components/overlay/index.d.ts +1 -1
  144. package/dist/types/components/overlay/spotlight.d.ts +62 -0
  145. package/dist/types/utils/index.d.ts +0 -1
  146. package/dist/ur-D9nLchps.cjs +1 -0
  147. package/dist/{ur-CdnwwnG_.js → ur-DBst-TXc.js} +154 -1
  148. package/dist/{use-form-CP6nftVl.cjs → use-form-Dcra7GeE.cjs} +1 -1
  149. package/dist/{use-form-CmQdxpOi.js → use-form-NfobsGNl.js} +2 -2
  150. package/dist/{vi-Bwvz1d_n.js → vi-DQOJp32U.js} +183 -30
  151. package/dist/vi-Dg1aiMr5.cjs +1 -0
  152. package/dist/widget-customization-BtkexHgm.js +1458 -0
  153. package/dist/widget-customization-pqmtsraC.cjs +1 -0
  154. package/dist/{zh-hy7Uw6c5.js → zh-DPK4HXl2.js} +154 -1
  155. package/dist/zh-tbwSTbmn.cjs +1 -0
  156. package/package.json +9 -9
  157. package/dist/ar-Dc56zcjW.cjs +0 -1
  158. package/dist/auth-divider-CVKfA8Cp.cjs +0 -1
  159. package/dist/de-DboQlEC4.cjs +0 -1
  160. package/dist/deep-merge-B33Qtlmw.cjs +0 -1
  161. package/dist/deep-merge-BUsrE2v4.js +0 -1704
  162. package/dist/es-CAmE_0Ph.cjs +0 -1
  163. package/dist/fa-D9LrFZdW.cjs +0 -1
  164. package/dist/fr-DKogQyss.cjs +0 -1
  165. package/dist/he-CVx91Jdr.cjs +0 -1
  166. package/dist/hi-BgrHV72l.cjs +0 -1
  167. package/dist/index-DFF7Uahh.cjs +0 -1
  168. package/dist/it-B1rA1F9l.cjs +0 -1
  169. package/dist/ja-DZnjjqoi.cjs +0 -1
  170. package/dist/ko-CDnYKYWU.cjs +0 -1
  171. package/dist/modal-BmpfNL48.cjs +0 -1
  172. package/dist/nl-Bj8QnDEY.cjs +0 -1
  173. package/dist/pl-BmuuxxVd.cjs +0 -1
  174. package/dist/pt-RiC0yeVA.cjs +0 -1
  175. package/dist/ru-pRqtOQHF.cjs +0 -1
  176. package/dist/tr-B9JhBJeL.cjs +0 -1
  177. package/dist/translations-qefRsdGi.cjs +0 -1
  178. package/dist/types/components/overlay/command-palette.d.ts +0 -17
  179. package/dist/types/utils/color.d.ts +0 -346
  180. package/dist/ur-BZakU0iv.cjs +0 -1
  181. package/dist/vi-D1nly0nb.cjs +0 -1
  182. package/dist/widget-customization-B0y-eesp.cjs +0 -1
  183. package/dist/widget-customization-CKbR4Dsg.js +0 -1066
  184. package/dist/zh-DBk7sSD9.cjs +0 -1
@@ -0,0 +1 @@
1
+ "use strict";const l=require("@tempots/dom"),k=require("@tempots/ui"),S=require("./colors-DPCHjRMj.cjs");function y(e,{units:t=["B","KB","MB","GB","TB"],decimalPlaces:o=0,locale:n}={}){if(e===0||e===0n)return new Intl.NumberFormat(n,{style:"unit",unit:"byte",unitDisplay:"short",maximumFractionDigits:0}).format(0).replace("byte",t[0]);let a,r;if(typeof e=="bigint"){let s=e<0n?-e:e;for(a=0;s>=1024n&&a<t.length-1;)s=s/1024n,a++;r=Number(e)/Math.pow(1024,a)}else a=Math.floor(Math.log(Math.abs(e))/Math.log(1024)),a=Math.min(a,t.length-1),r=e/Math.pow(1024,a);return new Intl.NumberFormat(n,{style:"unit",unit:"byte",unitDisplay:"short",minimumFractionDigits:a===0?0:o,maximumFractionDigits:a===0?0:o}).format(r).replace("byte",t[a])}const M={loadingExtended:"Loading, please wait",loadingShort:"Loading...",locale:"Locale",iconDescription:"Icon",loadingIcon:"Loading icon",failedToLoadIcon:"Failed to load icon",editLabel:"Edit",selectOne:"Select one",selectNone:"None",selectMany:"Select many",noResults:"No results",passwordPlaceholderText:"Secret Password",togglePasswordVisibility:"Toggle password visibility",toggleMenu:"Toggle menu",toggleAside:"Toggle aside",mainNavigation:"Main navigation",sidebar:"Sidebar",closeDrawer:"Close drawer",closeModal:"Close modal",confirm:"Confirm",cancel:"Cancel",addLabel:"Add",removeItem:"Remove item",currentLocale:"English",ar:"Arabic",de:"German",en:"English",es:"Spanish",fr:"French",hi:"Hindi",it:"Italian",ja:"Japanese",ko:"Korean",nl:"Dutch",pl:"Polish",pt:"Portuguese",ru:"Russian",tr:"Turkish",vi:"Vietnamese",zh:"Chinese",he:"Hebrew",fa:"Persian",ur:"Urdu",emailPlaceholderText:"Enter your email",incrementValue:"Increment value",decrementValue:"Decrement value",dropZoneInstructions:e=>e?"Click to choose or drag files here, or press Enter or Space to open file selector":"Drag files here",fileSizeUnits:["Bytes","KB","MB","GB","TB"],removeFile:"Remove file",clearAllFiles:"Clear all files",clearValue:"Reset",dateRangeStart:"Start",dateRangeEnd:"End",dateRangeNoLimit:"No limit",dateRangeSelectDate:"Select date",unknownType:"Unknown type",filesInputInstructions:(e,t,o)=>{let n=e==null||e>1?"Click to choose or drag files here":"Click to choose or drag a file here";if(e||t){const a=[];if(e!=null&&e>1&&a.push(`up to ${e} files`),t&&o){const r=y(t,{units:o});a.push(`max ${r} each`)}a.length>0&&(n+=` (${a.join(", ")})`)}return n},paginationLabel:"Pagination",paginationRange:(e,t,o,n)=>n>o?`Rows ${e} to ${t} of ${o} of ${n}`:`Rows ${e} to ${t} of ${o}`,firstPage:"First page",previousPage:"Previous page",nextPage:"Next page",lastPage:"Last page",breadcrumbs:"Breadcrumbs",commandPalette:"Command palette",typeACommand:"Type a command...",noResultsFound:"No results found",noMatchingCommands:"No matching commands",appearanceSystem:"System",appearanceLight:"Light",appearanceDark:"Dark",ok:"OK",changeTypeConfirmation:"Changing type will clear the current value. Continue?",notifications:"Notifications",markAllAsRead:"Mark all as read",noNotifications:"No notifications",schemaConflictsDetected:"Schema Conflicts Detected",schemaViolationsDetected:"Schema Violations Detected",properties:"Properties",uploading:"Uploading...",dropFilesOrBrowse:"Drop files here or click to browse",acceptedTypes:e=>`Accepted types: ${e}`,enterUrlPrompt:"Enter URL:",exceeded:"(exceeded)",pdfPreview:"PDF Preview",lexical:{fontFamily:"Font Family",fontSize:"Font Size",lineHeight:"Line Height",fontColor:"Font Color",highlightColor:"Highlight Color",backgroundColor:"Background Color",bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",code:"Code",clearFormatting:"Clear Formatting",normal:"Normal",heading:e=>`Heading ${e}`,bulletList:"Bullet List",orderedList:"Ordered List",checkList:"Check List",indent:"Indent",outdent:"Outdent",blockquote:"Blockquote",codeBlock:"Code Block",horizontalRule:"Horizontal Rule",insertTable:"Insert Table",link:"Link",undo:"Undo",redo:"Redo",cut:"Cut",copy:"Copy",paste:"Paste",defaultOption:"Default",slashCommands:"Slash commands",noCommandsFound:"No commands found",changeBlockType:"Change block type",blockTypes:"Block types",enterUrl:"Enter URL:",tableActions:"Table actions",insertRowAbove:"Insert row above",insertRowBelow:"Insert row below",insertColumnLeft:"Insert column left",insertColumnRight:"Insert column right",deleteRow:"Delete row",deleteColumn:"Delete column",deleteTable:"Delete table"},dataTable:{sortAscending:"Sort ascending",sortDescending:"Sort descending",clearSort:"Clear sort",filterPlaceholder:"Filter...",clearFilter:"Clear filter",selectAll:"Select all",deselectAll:"Deselect all",selectedCount:e=>`${e} selected`,resetAll:"Reset all",noResults:"No results found",loading:"Loading...",filterPanelAddCondition:"Add condition",filterPanelApply:"Apply",filterPanelClear:"Clear filters",filterPanelAnd:"AND",filterPanelOr:"OR",filterPanelContains:"Contains",filterPanelNotContains:"Does not contain",filterPanelEquals:"Equals",filterPanelNotEquals:"Does not equal",filterPanelStartsWith:"Starts with",filterPanelEndsWith:"Ends with",filterPanelIsNull:"Is empty",filterPanelIsNotNull:"Is not empty",filterPanelGt:"Greater than",filterPanelGte:"Greater or equal",filterPanelLt:"Less than",filterPanelLte:"Less or equal",filterPanelBetween:"Between",filterPanelValuePlaceholder:"Value...",sortMultiHint:"Hold Shift to sort multiple columns",columnVisibility:"Columns",showAllColumns:"Show all",menuSortAsc:"Sort Ascending",menuSortDesc:"Sort Descending",menuClearSort:"Clear Sort",menuHideColumn:"Hide Column",menuChooseColumns:"Choose Columns",menuResetColumns:"Reset Columns",menuFilter:"Filter",rowCount:(e,t)=>`Rows: ${e} Total Rows: ${t}`,filterTagsPlaceholder:"Select values...",groupCount:e=>`${e} items`,collapseGroup:"Collapse group",expandGroup:"Expand group",describeFilter:{textContains:(e,t)=>`${e} contains "${t}"`,textNotContains:(e,t)=>`${e} does not contain "${t}"`,textEquals:(e,t)=>`${e} equals "${t}"`,textNotEquals:(e,t)=>`${e} does not equal "${t}"`,textStartsWith:(e,t)=>`${e} starts with "${t}"`,textEndsWith:(e,t)=>`${e} ends with "${t}"`,compareEq:(e,t)=>`${e} = ${t}`,compareNeq:(e,t)=>`${e} ≠ ${t}`,compareGt:(e,t)=>`${e} > ${t}`,compareGte:(e,t)=>`${e} ≥ ${t}`,compareLt:(e,t)=>`${e} < ${t}`,compareLte:(e,t)=>`${e} ≤ ${t}`,rangeBetween:(e,t,o)=>`${e} between ${t} and ${o}`,rangeGte:(e,t)=>`${e} ≥ ${t}`,rangeLte:(e,t)=>`${e} ≤ ${t}`,setIn:(e,t)=>`${e} in [${t}]`,setNotIn:(e,t)=>`${e} not in [${t}]`,booleanIs:(e,t)=>`${e} is ${t}`,isNull:e=>`${e} is empty`,isNotNull:e=>`${e} is not empty`,compositeAnd:e=>e.join(" AND "),compositeOr:e=>e.join(" OR ")}},prosemirror:{bold:"Bold",italic:"Italic",code:"Inline code",link:"Insert link",removeLink:"Remove link",heading:e=>`Heading ${e}`,bulletList:"Bullet list",orderedList:"Ordered list",blockquote:"Blockquote",codeBlock:"Code block",horizontalRule:"Horizontal rule",linkUrlPlaceholder:"https://example.com"},carousel:{label:"Carousel",previousSlide:"Previous slide",nextSlide:"Next slide",slideNavigation:"Slide navigation",slideOfTotal:(e,t)=>`Slide ${e} of ${t}`,goToSlide:e=>`Go to slide ${e}`},datePicker:{label:"Date picker",previousYear:"Previous year",previousMonth:"Previous month",selectMonth:"Select month",selectYear:"Select year",nextMonth:"Next month",nextYear:"Next year",previousYears:e=>`Previous ${e} years`,nextYears:e=>`Next ${e} years`,dateRangePickerLabel:"Date range picker",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Su","Mo","Tu","We","Th","Fr","Sa"]},timePicker:{label:"Time picker",hoursLabel:"HH",minutesLabel:"MM",secondsLabel:"SS",selectHours:"Select hours",selectMinutes:"Select minutes",selectSeconds:"Select seconds",selectPeriod:"Select AM/PM",nowLabel:"Now"},timeSelectTime:"Select time",dateTimeSelectDateTime:"Select date and time",colorPicker:{hue:"Hue",saturation:"Saturation",lightness:"Lightness",alpha:"Alpha",red:"Red",green:"Green",blue:"Blue",hex:"Hex",whiteness:"Whiteness",blackness:"Blackness",chroma:"Chroma"},spotlight:{placeholder:"Search...",noResults:"No results found",recentItems:"Recent",close:"Close"},virtualList:{listLabel:"Scrollable list"},stepper:{step:"Step",stepOfTotal:(e,t)=>`Step ${e} of ${t}`,completed:"Completed",next:"Next",previous:"Previous",complete:"Complete"},sortableList:{dragHandle:"Drag to reorder"},transferList:{available:"Available",selected:"Selected",moveRight:"Move to selected",moveLeft:"Move to available",moveAllRight:"Move all to selected",moveAllLeft:"Move all to available",searchAvailable:"Search available items…",searchSelected:"Search selected items…"},copyButton:{copied:"Copied!",copyToClipboard:"Copy to clipboard"},numberStepper:{increment:"Increment",decrement:"Decrement",value:"Value"},statCard:{trendUp:"Trending up",trendDown:"Trending down",trendFlat:"No change"},otpInputLabel:"One-time password input",otpDigitLabel:(e,t)=>`Digit ${e} of ${t}`,scrollableGridView:"Scrollable grid view",onboardingTour:{label:"Guided tour",stepIndicator:(e,t)=>`Step ${e} of ${t}`,skip:"Skip",previous:"Previous",next:"Next",finish:"Finish"},searchPlaceholder:"Search",pdfPageViewer:{loading:"Loading PDF...",loadFailed:"Failed to load PDF",invalidPdf:"Invalid PDF file",pageOutOfRange:(e,t)=>`Page ${e} is out of range (1-${t})`,renderFailed:"Failed to render PDF page"}},m=M,f="en",A=new Set(["ar","he","fa","ur","ps","sd","ku","dv","yi","ji","iw","in"]);function b(e){if(!e)return"ltr";const t=e.split(/[-_]/)[0].toLowerCase();return A.has(t)?"rtl":"ltr"}function $(e,t){return e==="auto"?b(t):e}function T(e){return`b-${e}`}function F(e){return b(e)==="rtl"}function q(e){return e==="ltr"?"rtl":"ltr"}const w={ltr:{"inline-start":"left","inline-end":"right","block-start":"top","block-end":"bottom"},rtl:{"inline-start":"right","inline-end":"left","block-start":"top","block-end":"bottom"}};function O(e,t){return w[t][e]}const L={mark:l.makeProviderMark("Locale"),create:e=>{const t=l.localStorageProp({defaultValue:navigator.language??"en-US",key:"beatui-locale"}),o=l.localStorageProp({defaultValue:"auto",key:"beatui-direction-preference"}),n=l.computedOf(t,o)((r,i)=>$(i,r));return{value:{locale:t,setLocale:r=>t.set(r),direction:n,directionPreference:o,setDirectionPreference:r=>o.set(r)},dispose:()=>{t.dispose(),o.dispose(),n.dispose()}}}},{variants:V,special:E,overrides:v}=S.backgroundConfig;function d(e,t){switch(e){case"white":return"var(--color-white)";case"black":return"var(--color-black)";case"transparent":return"transparent";default:return S.getColorVar(e,t)}}function x(e,t){const o=E[e];if(!o)return;if(t==="light")return o;const n=v[e];return n?n[t]:o}function G(e,t,o){const n=v[e];if(n){const r=n[o];if(r)return{backgroundColor:r.backgroundColor,textColor:r.color}}if(t==="solid"){const r=x(e,o);if(r)return{backgroundColor:r.backgroundColor,textColor:r.color}}const a=V[t][o];return{backgroundColor:d(e,a.bgShade),textColor:a.textColor}}const H={light:{shade:700,textColor:"var(--color-white)"},dark:{shade:500,textColor:"var(--text-inverted-dark)"}},U={light:{shade:200,textColor:"var(--text-normal-light)"},dark:{shade:700,textColor:"var(--text-normal-dark)"}},j={light:{shade:400,textColor:"var(--text-normal-light)"},dark:{shade:600,textColor:"var(--text-normal-dark)"}};function W(e,t,o){const n=v[e];if(n){const r=n[o];if(r)return{backgroundColor:r.backgroundColor,textColor:r.color}}if(t==="solid"){const r=x(e,o);if(r)return{backgroundColor:r.backgroundColor,textColor:r.color};const i=H[o];return{backgroundColor:d(e,i.shade),textColor:i.textColor}}const a=t==="light"?U[o]:j[o];return{backgroundColor:d(e,a.shade),textColor:a.textColor}}function _(e,t){const o=t==="light"?500:600;switch(e){case"white":return t==="light"?"var(--text-inverse-light)":"var(--text-inverted-dark)";case"black":return"var(--color-black)";case"transparent":return"transparent";default:return d(e,o)}}function z(e,t){return e==="white"?"var(--color-white)":e==="black"?"var(--color-black)":e==="transparent"?"inherit":d(e,t==="light"?800:200)}function P(e,t,o){return t==="soft"?d(e,o==="light"?300:700):d(e,o==="light"?500:600)}const J="bui-icons",g=new Map,C=(()=>{try{return typeof indexedDB<"u"&&indexedDB!==null}catch{return!1}})();function Y(){return C?new Promise((e,t)=>{const o=indexedDB.open(J,1);o.onupgradeneeded=function(n){const a=n.target.result;a.objectStoreNames.contains("icons")||a.createObjectStore("icons")},o.onsuccess=function(){e(o.result)},o.onerror=function(){t(o.error)}}):Promise.reject(new Error("IndexedDB not available"))}const p=C?Y():null;async function I(e,t){try{if(p){const o=await p;return new Promise((n,a)=>{const r=o.transaction("icons","readwrite");r.objectStore("icons").put(t,e),r.oncomplete=()=>n(),r.onerror=a})}else g.set(e,t)}catch{g.set(e,t)}}async function D(e){try{if(p){const t=await p;return new Promise((o,n)=>{const i=t.transaction("icons","readonly").objectStore("icons").get(e);i.onsuccess=function(){o(i.result)},i.onerror=n})}else return g.get(e)||null}catch{return g.get(e)||null}}async function K(e){const t=`https://api.iconify.design/${e}.svg`;return fetch(t).then(o=>{if(o.status===200)return o.text();throw new Error(`Failed to load icon: ${e}`)})}async function Q(e){const t=e.replace(":","/"),o=await D(t);if(o)return o;const n=await K(t);return await I(t,n),n}function Z(e){return["bc-icon",`bc-icon--${e}`].join(" ")}function X(e,t="solid"){if(!e)return"";const o=P(e,t,"light"),n=P(e,t,"dark");return`--icon-color: ${o}; --icon-color-dark: ${n}`}function ee({icon:e,size:t="md",color:o,title:n,accessibility:a="auto",tone:r="solid"},...i){const u=l.computedOf(a,n)((s,c)=>s==="decorative"?!1:s==="informative"?!0:c!=null&&c!=="");return l.Use(B,s=>l.html.span(l.attr.class(l.computedOf(t,o)(c=>Z(c??"md"))),l.attr.style(l.computedOf(o,r)((c,h)=>X(c??void 0,h??"solid"))),l.When(u,()=>l.Fragment(l.attr.role("img"),l.aria.label(l.coalesce(n,s.$.iconDescription))),()=>l.aria.hidden(!0)),k.WhenInViewport({once:!0},()=>k.Query({request:e,load:({request:c})=>Q(c),convertError:String,success:({value:c})=>l.html.span(l.style.width("100%"),l.style.height("100%"),l.attr.innerHTML(c)),pending:()=>l.html.span(l.attr.class("animate-spin"),l.When(u,()=>l.Fragment(l.attr.role("img"),l.aria.label(s.$.loadingIcon)),()=>l.aria.hidden(!0)),"↻"),failure:({error:c})=>l.html.span(l.attr.title(c),l.attr.class("text-red-500"),l.When(u,()=>l.Fragment(l.attr.role("img"),l.aria.label(s.$.failedToLoadIcon)),()=>l.aria.hidden(!0)),"🚫")})),...i))}function te(e){const t=e.split("-"),o=[e];return t.length>1&&o.push(t[0]),o}function N({locale:e,defaultLocale:t="en-US",defaultMessages:o,localeLoader:n}){const a=l.prop(t),r=l.prop(o),i=e.on(async u=>{if(u===a.value)return;a.set(u);const s=te(u);for(const c of s)try{const h=await n(c);if(typeof h.default=="object"&&Object.keys(h).length===1){console.error("It appears that you are trying to load a translation module without referencing the default export. Please use `(await import(...)).default` in your loader function.");return}if(u===a.value){r.set(h);return}}catch{continue}console.warn(`No locale found for "${e.value}", using fallback`),u===a.value&&r.set(o)});return{dispose:()=>{i(),a.dispose(),r.dispose()},t:r}}function R({defaultLocale:e,defaultMessages:t,localeLoader:o,providerName:n="I18nProvider"}){return{mark:l.makeProviderMark(n),create:(a,r)=>{const{value:{locale:i}}=r.getProvider(L.mark),{t:u,dispose:s}=N({locale:i,defaultMessages:t,defaultLocale:e,localeLoader:o});return{value:u,dispose:s}}}}const oe=Object.assign({"./locales/ar.ts":()=>Promise.resolve().then(()=>require("./ar-Wr6gMs-M.cjs")).then(e=>e.default),"./locales/de.ts":()=>Promise.resolve().then(()=>require("./de-DZqdSEta.cjs")).then(e=>e.default),"./locales/es.ts":()=>Promise.resolve().then(()=>require("./es-CJgYfRap.cjs")).then(e=>e.default),"./locales/fa.ts":()=>Promise.resolve().then(()=>require("./fa-BQ5PzwNY.cjs")).then(e=>e.default),"./locales/fr.ts":()=>Promise.resolve().then(()=>require("./fr-Bv3TG44U.cjs")).then(e=>e.default),"./locales/he.ts":()=>Promise.resolve().then(()=>require("./he-5LbvgMCC.cjs")).then(e=>e.default),"./locales/hi.ts":()=>Promise.resolve().then(()=>require("./hi-YWhWcG_L.cjs")).then(e=>e.default),"./locales/it.ts":()=>Promise.resolve().then(()=>require("./it-BxOIJE45.cjs")).then(e=>e.default),"./locales/ja.ts":()=>Promise.resolve().then(()=>require("./ja-CNhjK06P.cjs")).then(e=>e.default),"./locales/ko.ts":()=>Promise.resolve().then(()=>require("./ko-DgkqcXTs.cjs")).then(e=>e.default),"./locales/nl.ts":()=>Promise.resolve().then(()=>require("./nl-Dy9lmbBO.cjs")).then(e=>e.default),"./locales/pl.ts":()=>Promise.resolve().then(()=>require("./pl-BtYbtsmG.cjs")).then(e=>e.default),"./locales/pt.ts":()=>Promise.resolve().then(()=>require("./pt-CtNmqQ1X.cjs")).then(e=>e.default),"./locales/ru.ts":()=>Promise.resolve().then(()=>require("./ru-BaL_NPRU.cjs")).then(e=>e.default),"./locales/tr.ts":()=>Promise.resolve().then(()=>require("./tr-DwOd87oB.cjs")).then(e=>e.default),"./locales/ur.ts":()=>Promise.resolve().then(()=>require("./ur-D9nLchps.cjs")).then(e=>e.default),"./locales/vi.ts":()=>Promise.resolve().then(()=>require("./vi-Dg1aiMr5.cjs")).then(e=>e.default),"./locales/zh.ts":()=>Promise.resolve().then(()=>require("./zh-tbwSTbmn.cjs")).then(e=>e.default)}),B=R({defaultLocale:f,defaultMessages:m,localeLoader:async e=>{if(e===f)return m;const t=oe[`./locales/${e}.ts`];return t?await t():m},providerName:"BeatUII18n"});exports.BeatUII18n=B;exports.Icon=ee;exports.LOGICAL_PROPERTY_MAP=w;exports.Locale=L;exports.backgroundValue=G;exports.borderColorValue=_;exports.defaultLocale=f;exports.defaultMessages=m;exports.formatFileSize=y;exports.getDirectionClassName=T;exports.getDirectionFromLocale=b;exports.getIconLocally=D;exports.getOppositeDirection=q;exports.getPhysicalProperty=O;exports.hoverBackgroundValue=W;exports.isIndexedDBAvailable=C;exports.isRTLLocale=F;exports.makeI18nProvider=R;exports.makeMessages=N;exports.resolveDirection=$;exports.storeIconLocally=I;exports.textColorValue=z;
@@ -64,6 +64,10 @@ export declare const defaultMessages: {
64
64
  removeFile: string;
65
65
  clearAllFiles: string;
66
66
  clearValue: string;
67
+ dateRangeStart: string;
68
+ dateRangeEnd: string;
69
+ dateRangeNoLimit: string;
70
+ dateRangeSelectDate: string;
67
71
  unknownType: string;
68
72
  filesInputInstructions: (maxFiles: number | undefined, maxFileSize: number | undefined, fileSizeUnits: string[]) => string;
69
73
  paginationLabel: string;
@@ -224,6 +228,111 @@ export declare const defaultMessages: {
224
228
  horizontalRule: string;
225
229
  linkUrlPlaceholder: string;
226
230
  };
231
+ carousel: {
232
+ label: string;
233
+ previousSlide: string;
234
+ nextSlide: string;
235
+ slideNavigation: string;
236
+ slideOfTotal: (index: number, total: number) => string;
237
+ goToSlide: (index: number) => string;
238
+ };
239
+ datePicker: {
240
+ label: string;
241
+ previousYear: string;
242
+ previousMonth: string;
243
+ selectMonth: string;
244
+ selectYear: string;
245
+ nextMonth: string;
246
+ nextYear: string;
247
+ previousYears: (count: number) => string;
248
+ nextYears: (count: number) => string;
249
+ dateRangePickerLabel: string;
250
+ monthNames: string[];
251
+ shortMonthNames: string[];
252
+ dayNames: string[];
253
+ };
254
+ timePicker: {
255
+ label: string;
256
+ hoursLabel: string;
257
+ minutesLabel: string;
258
+ secondsLabel: string;
259
+ selectHours: string;
260
+ selectMinutes: string;
261
+ selectSeconds: string;
262
+ selectPeriod: string;
263
+ nowLabel: string;
264
+ };
265
+ timeSelectTime: string;
266
+ dateTimeSelectDateTime: string;
267
+ colorPicker: {
268
+ hue: string;
269
+ saturation: string;
270
+ lightness: string;
271
+ alpha: string;
272
+ red: string;
273
+ green: string;
274
+ blue: string;
275
+ hex: string;
276
+ whiteness: string;
277
+ blackness: string;
278
+ chroma: string;
279
+ };
280
+ spotlight: {
281
+ placeholder: string;
282
+ noResults: string;
283
+ recentItems: string;
284
+ close: string;
285
+ };
286
+ virtualList: {
287
+ listLabel: string;
288
+ };
289
+ stepper: {
290
+ step: string;
291
+ stepOfTotal: (current: number, total: number) => string;
292
+ completed: string;
293
+ next: string;
294
+ previous: string;
295
+ complete: string;
296
+ };
297
+ sortableList: {
298
+ dragHandle: string;
299
+ };
300
+ transferList: {
301
+ available: string;
302
+ selected: string;
303
+ moveRight: string;
304
+ moveLeft: string;
305
+ moveAllRight: string;
306
+ moveAllLeft: string;
307
+ searchAvailable: string;
308
+ searchSelected: string;
309
+ };
310
+ copyButton: {
311
+ copied: string;
312
+ copyToClipboard: string;
313
+ };
314
+ numberStepper: {
315
+ increment: string;
316
+ decrement: string;
317
+ value: string;
318
+ };
319
+ statCard: {
320
+ trendUp: string;
321
+ trendDown: string;
322
+ trendFlat: string;
323
+ };
324
+ otpInputLabel: string;
325
+ otpDigitLabel: (index: number, total: number) => string;
326
+ scrollableGridView: string;
327
+ onboardingTour: {
328
+ label: string;
329
+ stepIndicator: (current: number, total: number) => string;
330
+ skip: string;
331
+ previous: string;
332
+ next: string;
333
+ finish: string;
334
+ };
335
+ searchPlaceholder: string;
227
336
  pdfPageViewer: {
228
337
  loading: string;
229
338
  loadFailed: string;
@@ -50,6 +50,10 @@ declare const en: {
50
50
  removeFile: string;
51
51
  clearAllFiles: string;
52
52
  clearValue: string;
53
+ dateRangeStart: string;
54
+ dateRangeEnd: string;
55
+ dateRangeNoLimit: string;
56
+ dateRangeSelectDate: string;
53
57
  unknownType: string;
54
58
  filesInputInstructions: (maxFiles: number | undefined, maxFileSize: number | undefined, fileSizeUnits: string[]) => string;
55
59
  paginationLabel: string;
@@ -210,6 +214,111 @@ declare const en: {
210
214
  horizontalRule: string;
211
215
  linkUrlPlaceholder: string;
212
216
  };
217
+ carousel: {
218
+ label: string;
219
+ previousSlide: string;
220
+ nextSlide: string;
221
+ slideNavigation: string;
222
+ slideOfTotal: (index: number, total: number) => string;
223
+ goToSlide: (index: number) => string;
224
+ };
225
+ datePicker: {
226
+ label: string;
227
+ previousYear: string;
228
+ previousMonth: string;
229
+ selectMonth: string;
230
+ selectYear: string;
231
+ nextMonth: string;
232
+ nextYear: string;
233
+ previousYears: (count: number) => string;
234
+ nextYears: (count: number) => string;
235
+ dateRangePickerLabel: string;
236
+ monthNames: string[];
237
+ shortMonthNames: string[];
238
+ dayNames: string[];
239
+ };
240
+ timePicker: {
241
+ label: string;
242
+ hoursLabel: string;
243
+ minutesLabel: string;
244
+ secondsLabel: string;
245
+ selectHours: string;
246
+ selectMinutes: string;
247
+ selectSeconds: string;
248
+ selectPeriod: string;
249
+ nowLabel: string;
250
+ };
251
+ timeSelectTime: string;
252
+ dateTimeSelectDateTime: string;
253
+ colorPicker: {
254
+ hue: string;
255
+ saturation: string;
256
+ lightness: string;
257
+ alpha: string;
258
+ red: string;
259
+ green: string;
260
+ blue: string;
261
+ hex: string;
262
+ whiteness: string;
263
+ blackness: string;
264
+ chroma: string;
265
+ };
266
+ spotlight: {
267
+ placeholder: string;
268
+ noResults: string;
269
+ recentItems: string;
270
+ close: string;
271
+ };
272
+ virtualList: {
273
+ listLabel: string;
274
+ };
275
+ stepper: {
276
+ step: string;
277
+ stepOfTotal: (current: number, total: number) => string;
278
+ completed: string;
279
+ next: string;
280
+ previous: string;
281
+ complete: string;
282
+ };
283
+ sortableList: {
284
+ dragHandle: string;
285
+ };
286
+ transferList: {
287
+ available: string;
288
+ selected: string;
289
+ moveRight: string;
290
+ moveLeft: string;
291
+ moveAllRight: string;
292
+ moveAllLeft: string;
293
+ searchAvailable: string;
294
+ searchSelected: string;
295
+ };
296
+ copyButton: {
297
+ copied: string;
298
+ copyToClipboard: string;
299
+ };
300
+ numberStepper: {
301
+ increment: string;
302
+ decrement: string;
303
+ value: string;
304
+ };
305
+ statCard: {
306
+ trendUp: string;
307
+ trendDown: string;
308
+ trendFlat: string;
309
+ };
310
+ otpInputLabel: string;
311
+ otpDigitLabel: (index: number, total: number) => string;
312
+ scrollableGridView: string;
313
+ onboardingTour: {
314
+ label: string;
315
+ stepIndicator: (current: number, total: number) => string;
316
+ skip: string;
317
+ previous: string;
318
+ next: string;
319
+ finish: string;
320
+ };
321
+ searchPlaceholder: string;
213
322
  pdfPageViewer: {
214
323
  loading: string;
215
324
  loadFailed: string;
@@ -74,6 +74,10 @@ export declare const BeatUII18n: import("@tempots/dom").Provider<import("@tempot
74
74
  removeFile: string;
75
75
  clearAllFiles: string;
76
76
  clearValue: string;
77
+ dateRangeStart: string;
78
+ dateRangeEnd: string;
79
+ dateRangeNoLimit: string;
80
+ dateRangeSelectDate: string;
77
81
  unknownType: string;
78
82
  filesInputInstructions: (maxFiles: number | undefined, maxFileSize: number | undefined, fileSizeUnits: string[]) => string;
79
83
  paginationLabel: string;
@@ -234,6 +238,111 @@ export declare const BeatUII18n: import("@tempots/dom").Provider<import("@tempot
234
238
  horizontalRule: string;
235
239
  linkUrlPlaceholder: string;
236
240
  };
241
+ carousel: {
242
+ label: string;
243
+ previousSlide: string;
244
+ nextSlide: string;
245
+ slideNavigation: string;
246
+ slideOfTotal: (index: number, total: number) => string;
247
+ goToSlide: (index: number) => string;
248
+ };
249
+ datePicker: {
250
+ label: string;
251
+ previousYear: string;
252
+ previousMonth: string;
253
+ selectMonth: string;
254
+ selectYear: string;
255
+ nextMonth: string;
256
+ nextYear: string;
257
+ previousYears: (count: number) => string;
258
+ nextYears: (count: number) => string;
259
+ dateRangePickerLabel: string;
260
+ monthNames: string[];
261
+ shortMonthNames: string[];
262
+ dayNames: string[];
263
+ };
264
+ timePicker: {
265
+ label: string;
266
+ hoursLabel: string;
267
+ minutesLabel: string;
268
+ secondsLabel: string;
269
+ selectHours: string;
270
+ selectMinutes: string;
271
+ selectSeconds: string;
272
+ selectPeriod: string;
273
+ nowLabel: string;
274
+ };
275
+ timeSelectTime: string;
276
+ dateTimeSelectDateTime: string;
277
+ colorPicker: {
278
+ hue: string;
279
+ saturation: string;
280
+ lightness: string;
281
+ alpha: string;
282
+ red: string;
283
+ green: string;
284
+ blue: string;
285
+ hex: string;
286
+ whiteness: string;
287
+ blackness: string;
288
+ chroma: string;
289
+ };
290
+ spotlight: {
291
+ placeholder: string;
292
+ noResults: string;
293
+ recentItems: string;
294
+ close: string;
295
+ };
296
+ virtualList: {
297
+ listLabel: string;
298
+ };
299
+ stepper: {
300
+ step: string;
301
+ stepOfTotal: (current: number, total: number) => string;
302
+ completed: string;
303
+ next: string;
304
+ previous: string;
305
+ complete: string;
306
+ };
307
+ sortableList: {
308
+ dragHandle: string;
309
+ };
310
+ transferList: {
311
+ available: string;
312
+ selected: string;
313
+ moveRight: string;
314
+ moveLeft: string;
315
+ moveAllRight: string;
316
+ moveAllLeft: string;
317
+ searchAvailable: string;
318
+ searchSelected: string;
319
+ };
320
+ copyButton: {
321
+ copied: string;
322
+ copyToClipboard: string;
323
+ };
324
+ numberStepper: {
325
+ increment: string;
326
+ decrement: string;
327
+ value: string;
328
+ };
329
+ statCard: {
330
+ trendUp: string;
331
+ trendDown: string;
332
+ trendFlat: string;
333
+ };
334
+ otpInputLabel: string;
335
+ otpDigitLabel: (index: number, total: number) => string;
336
+ scrollableGridView: string;
337
+ onboardingTour: {
338
+ label: string;
339
+ stepIndicator: (current: number, total: number) => string;
340
+ skip: string;
341
+ previous: string;
342
+ next: string;
343
+ finish: string;
344
+ };
345
+ searchPlaceholder: string;
237
346
  pdfPageViewer: {
238
347
  loading: string;
239
348
  loadFailed: string;
@@ -0,0 +1,42 @@
1
+ import { Renderable, TNode, Value } from '@tempots/dom';
2
+ import { ControlSize, ButtonVariant } from '../theme';
3
+ import { ThemeColorName } from '../../tokens';
4
+ import { RadiusName } from '../../tokens/radius';
5
+ /** Configuration options for the {@link CopyButton} component. */
6
+ export interface CopyButtonOptions {
7
+ /** The text to copy to clipboard when clicked. @default 'Hello World!'' */
8
+ text: Value<string>;
9
+ /** Size of the button. @default 'sm' */
10
+ size?: Value<ControlSize>;
11
+ /** Theme color. @default 'base' */
12
+ color?: Value<ThemeColorName>;
13
+ /** Visual variant. @default 'subtle' */
14
+ variant?: Value<ButtonVariant>;
15
+ /** Border radius. @default 'sm' */
16
+ roundedness?: Value<RadiusName>;
17
+ /** Whether the button is disabled. @default false */
18
+ disabled?: Value<boolean>;
19
+ /** Duration in ms to show the "copied" state before resetting. @default 2000 */
20
+ timeout?: Value<number>;
21
+ }
22
+ /**
23
+ * A button that copies text to the clipboard with visual feedback.
24
+ *
25
+ * Shows a copy icon in its idle state. When clicked, copies the provided text
26
+ * to the clipboard and briefly shows a checkmark icon before resetting.
27
+ *
28
+ * @param options - Configuration for the copy button
29
+ * @param children - Optional additional children appended to the button
30
+ * @returns A copy button element
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * CopyButton({ text: 'Hello, world!' })
35
+ * ```
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * CopyButton({ text: apiKey, variant: 'outline', color: 'primary' }, 'Copy Key')
40
+ * ```
41
+ */
42
+ export declare function CopyButton({ text, size, color, variant, roundedness, disabled, timeout, }: CopyButtonOptions, ...children: TNode[]): Renderable;
@@ -1,4 +1,5 @@
1
1
  export * from './button';
2
2
  export * from './close-button';
3
+ export * from './copy-button';
3
4
  export * from './toggle-button';
4
5
  export * from './toggle-button-group';
@@ -71,7 +71,7 @@ export interface ToggleButtonGroupOptions {
71
71
  * { key: 'right', label: 'Right' },
72
72
  * ],
73
73
  * value: alignment,
74
- * onChange: alignment.set,
74
+ * onChange: v => alignment.set(v),
75
75
  * })
76
76
  * ```
77
77
  *
@@ -86,7 +86,7 @@ export interface ToggleButtonGroupOptions {
86
86
  * { key: 'underline', label: 'U' },
87
87
  * ],
88
88
  * value: formats,
89
- * onChange: formats.set,
89
+ * onChange: v => formats.set(v),
90
90
  * multiple: true,
91
91
  * variant: 'outline',
92
92
  * })
@@ -42,7 +42,7 @@ export interface ToggleButtonOptions {
42
42
  *
43
43
  * const bold = prop(false)
44
44
  * ToggleButton(
45
- * { pressed: bold, onChange: bold.set, variant: 'outline' },
45
+ * { pressed: bold, onChange: v => bold.set(v), variant: 'outline' },
46
46
  * 'B'
47
47
  * )
48
48
  * ```
@@ -52,7 +52,7 @@ export interface ToggleButtonOptions {
52
52
  * // Icon toggle
53
53
  * const starred = prop(false)
54
54
  * ToggleButton(
55
- * { pressed: starred, onChange: starred.set, color: 'yellow' },
55
+ * { pressed: starred, onChange: v => starred.set(v), color: 'yellow' },
56
56
  * Icon({ icon: starred.map(s => s ? 'lucide:star' : 'lucide:star-off') })
57
57
  * )
58
58
  * ```
@@ -4,9 +4,6 @@ import { ThemeColorName } from '../../tokens';
4
4
  import type { BeatUITemporal, PlainDate } from '../../temporal/types';
5
5
  export declare const YEARS_PER_PAGE = 20;
6
6
  export declare const DAYS_IN_WEEK = 7;
7
- export declare const MONTH_NAMES: string[];
8
- export declare const SHORT_MONTH_NAMES: string[];
9
- export declare const DAY_NAMES: string[];
10
7
  export type DatePickerView = 'days' | 'months' | 'years';
11
8
  export declare function generateDatePickerClasses(size: ControlSize, disabled: boolean): string;
12
9
  export declare function generateDatePickerStyles(color: ThemeColorName): string;
@@ -40,12 +37,12 @@ export interface DatePickerNav {
40
37
  selectYear: (year: number) => void;
41
38
  }
42
39
  /** Creates the shared navigation state for a date picker. */
43
- export declare function createDatePickerNav(T: BeatUITemporal, initialYear: number, initialMonth: number, disabled: Value<boolean>, weekStartsOn: Value<number>): DatePickerNav;
40
+ export declare function createDatePickerNav(T: BeatUITemporal, initialYear: number, initialMonth: number, disabled: Value<boolean>, weekStartsOn: Value<number>, dayNames: Value<string[]>): DatePickerNav;
44
41
  export interface DatePickerShellOptions {
45
42
  size: Value<ControlSize>;
46
43
  disabled: Value<boolean>;
47
44
  color: Value<ThemeColorName>;
48
- ariaLabel: string;
45
+ ariaLabel: Value<string>;
49
46
  }
50
47
  /**
51
48
  * Renders the full date picker shell: outer wrapper, navigation header
@@ -51,7 +51,7 @@ export interface DatePickerOptions {
51
51
  * const date = prop<PlainDate | null>(null)
52
52
  * DatePicker({
53
53
  * value: date,
54
- * onSelect: date.set,
54
+ * onSelect: v => date.set(v),
55
55
  * })
56
56
  * ```
57
57
  */
@@ -49,7 +49,7 @@ export interface DateRangePickerOptions {
49
49
  * const range = prop<[PlainDate, PlainDate] | null>(null)
50
50
  * DateRangePicker({
51
51
  * value: range,
52
- * onChange: range.set,
52
+ * onChange: v => range.set(v),
53
53
  * })
54
54
  * ```
55
55
  */
@@ -24,3 +24,6 @@ export * from './selection-checkbox';
24
24
  export * from './data-toolbar';
25
25
  export * from './column-header-menu';
26
26
  export * from './data-table-row-details';
27
+ export * from './time-picker';
28
+ export * from './stat-card';
29
+ export * from './virtual-scrolling';
@@ -0,0 +1,108 @@
1
+ import { TNode, Value } from '@tempots/dom';
2
+ import { ControlSize } from '../theme';
3
+ import { ThemeColorName } from '../../tokens';
4
+ /** Visual style variant for {@link StatCard}. */
5
+ export type StatCardVariant = 'default' | 'elevated' | 'outlined';
6
+ /** Trend direction for {@link StatCardTrend}. */
7
+ export type TrendDirection = 'up' | 'down' | 'flat';
8
+ /** Configuration options for the {@link StatCard} component. */
9
+ export interface StatCardOptions {
10
+ /** Visual style variant. @default 'default' */
11
+ variant?: Value<StatCardVariant>;
12
+ /** Controls internal padding. @default 'md' */
13
+ size?: Value<ControlSize>;
14
+ /** Theme color accent. @default 'primary' */
15
+ color?: Value<ThemeColorName>;
16
+ }
17
+ /** Options for a {@link StatCardSection}. */
18
+ export interface StatCardSectionOptions {
19
+ /** Additional CSS classes. */
20
+ class?: Value<string>;
21
+ }
22
+ /** Configuration for the {@link StatCardTrend} sub-component. */
23
+ export interface StatCardTrendOptions {
24
+ /** The trend value to display (e.g. "+12%", "3.2"). */
25
+ value: Value<string | number>;
26
+ /** Direction of the trend. */
27
+ direction: Value<TrendDirection>;
28
+ /** Override the auto-derived color. When omitted, uses success/danger/neutral based on direction. */
29
+ color?: Value<ThemeColorName>;
30
+ }
31
+ /**
32
+ * A dashboard metric card that displays a statistic with optional label,
33
+ * trend indicator, icon, and sparkline slot.
34
+ *
35
+ * Uses a composition pattern — combine with {@link StatCardValue},
36
+ * {@link StatCardLabel}, {@link StatCardTrend}, {@link StatCardIcon},
37
+ * and {@link StatCardSparkline} to build rich stat displays.
38
+ *
39
+ * @param options - Configuration for variant, size, and color
40
+ * @param children - Sub-components to render inside the card
41
+ * @returns A stat card element
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * StatCard({ variant: 'elevated' },
46
+ * StatCardIcon({}, Icon({ icon: 'lucide:users', size: 'lg' })),
47
+ * StatCardValue({}, '1,234'),
48
+ * StatCardLabel({}, 'Active Users'),
49
+ * StatCardTrend({ value: '+12%', direction: 'up' }),
50
+ * )
51
+ * ```
52
+ */
53
+ export declare function StatCard({ variant, size, color }?: StatCardOptions, ...children: TNode[]): TNode;
54
+ /**
55
+ * The primary metric value of a {@link StatCard}.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * StatCardValue({}, '1,234')
60
+ * StatCardValue({}, formattedRevenue)
61
+ * ```
62
+ */
63
+ export declare function StatCardValue({ class: className }?: StatCardSectionOptions, ...children: TNode[]): TNode;
64
+ /**
65
+ * A descriptive label for a {@link StatCard} metric.
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * StatCardLabel({}, 'Monthly Revenue')
70
+ * ```
71
+ */
72
+ export declare function StatCardLabel({ class: className }?: StatCardSectionOptions, ...children: TNode[]): TNode;
73
+ /**
74
+ * A trend indicator showing a value with a directional arrow.
75
+ *
76
+ * When no `color` is provided, the color is auto-derived from `direction`:
77
+ * up → success, down → danger, flat → neutral.
78
+ *
79
+ * @param options - Trend value, direction, and optional color override
80
+ * @returns A trend indicator element
81
+ *
82
+ * @example
83
+ * ```ts
84
+ * StatCardTrend({ value: '+12.5%', direction: 'up' })
85
+ * StatCardTrend({ value: '-3%', direction: 'down' })
86
+ * StatCardTrend({ value: '0%', direction: 'flat' })
87
+ * ```
88
+ */
89
+ export declare function StatCardTrend(options: StatCardTrendOptions): TNode;
90
+ /**
91
+ * An icon slot for a {@link StatCard}, typically placed at the top or side.
92
+ *
93
+ * @example
94
+ * ```ts
95
+ * StatCardIcon({}, Icon({ icon: 'lucide:dollar-sign', size: 'lg', color: 'primary' }))
96
+ * ```
97
+ */
98
+ export declare function StatCardIcon({ class: className }?: StatCardSectionOptions, ...children: TNode[]): TNode;
99
+ /**
100
+ * A sparkline/chart slot for a {@link StatCard}.
101
+ * Renders a container where you can place any chart or visualization component.
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * StatCardSparkline({}, mySparklineChart)
106
+ * ```
107
+ */
108
+ export declare function StatCardSparkline({ class: className }?: StatCardSectionOptions, ...children: TNode[]): TNode;