efficient-shell 9.1.0 → 9.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -20
- package/dist/Browser-GQ2ZK4PR.js +43 -0
- package/dist/Calculator-CSYRZAS5.js +29 -0
- package/dist/CurrencyConverter-SSR2XDIC.js +21 -0
- package/dist/{Documents-BOVXZFYC.js → Documents-5AC4WSNK.js} +27 -27
- package/dist/Files-4SD6LLKX.js +88 -0
- package/dist/Notepad-EUIQXFUA.js +25 -0
- package/dist/PdfViewer-XSISAJZP.js +1 -0
- package/dist/{PomodoroTimer-ZCJBTFV5.js → PomodoroTimer-EV6D4OFU.js} +28 -28
- package/dist/Preview-QK5HYJ6U.js +177 -0
- package/dist/Sidebar-Y4DTQYW2.js +43 -0
- package/dist/Spreadsheet-HR6GBICY.js +37 -0
- package/dist/Stock-6ZIQHGPH.js +16 -0
- package/dist/Weather-II7NFRMK.js +60 -0
- package/dist/WorldClock-NBLNO63Q.js +32 -0
- package/dist/ai/index.d.ts +34 -3
- package/dist/ai/index.js +56 -53
- package/dist/ai.css +1 -1
- package/dist/apps/index.js +1 -1
- package/dist/bin/media-host-check.js +1 -1
- package/dist/bin/ui-check.js +1 -1
- package/dist/brand.css +1 -1
- package/dist/charts/BoxPlotChart.js +1 -1
- package/dist/charts/CandlestickChart.js +1 -1
- package/dist/charts/CartesianPlot.js +1 -1
- package/dist/charts/ChartBrush.js +1 -1
- package/dist/charts/ChartFrame.js +1 -1
- package/dist/charts/ChartSkeleton.js +1 -1
- package/dist/charts/ChartTooltip.js +1 -1
- package/dist/charts/ChordChart.js +1 -1
- package/dist/charts/ColumnChart.js +1 -1
- package/dist/charts/FunnelChart.js +1 -1
- package/dist/charts/HeatmapChart.js +1 -1
- package/dist/charts/HistogramChart.js +1 -1
- package/dist/charts/Meter.js +1 -1
- package/dist/charts/PieChart.js +1 -1
- package/dist/charts/RadarChart.js +1 -1
- package/dist/charts/RadialBarChart.js +1 -1
- package/dist/charts/RangeChart.js +1 -1
- package/dist/charts/RankedBars.js +1 -1
- package/dist/charts/SankeyChart.js +1 -1
- package/dist/charts/ScatterChart.js +1 -1
- package/dist/charts/SpecChart.js +1 -1
- package/dist/charts/StatTile.js +1 -1
- package/dist/charts/SunburstChart.js +1 -1
- package/dist/charts/TimeSeriesChart.js +1 -1
- package/dist/charts/TreemapChart.js +1 -1
- package/dist/charts/WaterfallChart.js +1 -1
- package/dist/chunk-24K6GVNM.js +28 -0
- package/dist/{chunk-ZEKM6HAA.js → chunk-2HEJDLPP.js} +2 -2
- package/dist/{chunk-BRHIRE4D.js → chunk-2MLRK7IO.js} +2 -2
- package/dist/chunk-2R3BVU75.js +26 -0
- package/dist/chunk-2YLG32JY.js +2 -0
- package/dist/{chunk-TZSPJIP4.js → chunk-32VV2J22.js} +1 -1
- package/dist/{chunk-QQCHLRKG.js → chunk-3APSMJPN.js} +1 -1
- package/dist/{chunk-6SMQNPWS.js → chunk-43ONX6UZ.js} +1 -1
- package/dist/{chunk-L7IKTEOC.js → chunk-442FFHQJ.js} +13 -13
- package/dist/chunk-4MVRSCQE.js +1 -0
- package/dist/{chunk-BT3XDH3L.js → chunk-56RAOI7O.js} +6 -6
- package/dist/chunk-5F7HMNCX.js +5 -0
- package/dist/chunk-5GUBNCTP.js +1 -0
- package/dist/{chunk-LGLZTJ2W.js → chunk-5JRL5LXD.js} +6 -6
- package/dist/chunk-5SJ45P5E.js +8 -0
- package/dist/{chunk-OFHCDTJM.js → chunk-5VOVNIOU.js} +1 -1
- package/dist/{chunk-NID6MGGC.js → chunk-5VRMQTKV.js} +8 -8
- package/dist/chunk-6453ISTQ.js +4 -0
- package/dist/{chunk-TFMC2WAS.js → chunk-6JU3WQOR.js} +1 -1
- package/dist/{chunk-MVQBVPWP.js → chunk-6KBDNYRW.js} +1 -1
- package/dist/{chunk-D2AUUIKG.js → chunk-6MVHRNWC.js} +1 -1
- package/dist/{chunk-TW7TA2AB.js → chunk-6ZHX56NM.js} +1 -1
- package/dist/chunk-732XHVR4.js +9 -0
- package/dist/{chunk-RNBM5JZI.js → chunk-7JGR7WPD.js} +4 -4
- package/dist/{chunk-BIJ7ADTZ.js → chunk-7WGOLPGM.js} +1 -1
- package/dist/{chunk-SXSMIMFY.js → chunk-A6RB4PIX.js} +4 -4
- package/dist/{chunk-BMPBVI7P.js → chunk-AGUA3O5O.js} +1 -1
- package/dist/{chunk-UVUBZL7K.js → chunk-ANFLQSGX.js} +5 -5
- package/dist/chunk-ARWMJSQJ.js +3 -0
- package/dist/chunk-AYZY3YNC.js +1 -0
- package/dist/{chunk-BSNWVZHW.js → chunk-B4KMHEFZ.js} +1 -1
- package/dist/chunk-B6YOP2IX.js +6 -0
- package/dist/{chunk-4VLKDANH.js → chunk-BBEOFKLY.js} +1 -1
- package/dist/{chunk-22S6LG6D.js → chunk-BCDG4N6L.js} +1 -1
- package/dist/{chunk-DFDDRKIJ.js → chunk-BCUQXILM.js} +1 -1
- package/dist/{chunk-5TFTSYOD.js → chunk-BVTNGW5S.js} +1 -1
- package/dist/{chunk-TVJRENCQ.js → chunk-BWUU565Y.js} +9 -9
- package/dist/{chunk-SBHFEWR6.js → chunk-C4UL2UNR.js} +1 -1
- package/dist/{chunk-DOCUM3K7.js → chunk-CAG3TSV2.js} +1 -1
- package/dist/chunk-CE5BARZI.js +16 -0
- package/dist/chunk-CJB73MHF.js +2 -0
- package/dist/{chunk-N6DTTOB6.js → chunk-CKPVXDKX.js} +3 -3
- package/dist/chunk-CO5RKOVX.js +20 -0
- package/dist/chunk-CRXFSN5K.js +20 -0
- package/dist/chunk-CVNJSD2J.js +18 -0
- package/dist/{chunk-RYBJ6MMM.js → chunk-CXMTDYVI.js} +1 -1
- package/dist/chunk-D7IXMMZT.js +9 -0
- package/dist/chunk-DNWV6N4P.js +5 -0
- package/dist/{chunk-KZHPX4FM.js → chunk-DWBZ3Z34.js} +2 -2
- package/dist/chunk-DZTAGMNY.js +100 -0
- package/dist/chunk-E4E7MACR.js +20 -0
- package/dist/{chunk-DZNG34DC.js → chunk-EFFF3FCS.js} +23 -23
- package/dist/{chunk-CPK7JTN3.js → chunk-EGAV5LSX.js} +1 -1
- package/dist/{chunk-M5P6A7KS.js → chunk-ENL5L6NR.js} +1 -1
- package/dist/chunk-EW3L4W2I.js +14 -0
- package/dist/{chunk-6GWZ5UPX.js → chunk-EWVOGTEX.js} +1 -1
- package/dist/{chunk-I7HDD4IM.js → chunk-EXNAAHN4.js} +2 -2
- package/dist/{chunk-YDYDR72S.js → chunk-F4DIVARP.js} +1 -1
- package/dist/{chunk-WYN5KVU4.js → chunk-F7F6Z64G.js} +3 -3
- package/dist/{chunk-5PY4H4ZJ.js → chunk-FBUUXK5G.js} +1 -1
- package/dist/chunk-FKNJSD6B.js +14 -0
- package/dist/{chunk-D7FT2PXG.js → chunk-FLEG5KP5.js} +5 -5
- package/dist/{chunk-4OFD6ICH.js → chunk-FLQZ7GQ3.js} +10 -10
- package/dist/{chunk-DXTKNHWG.js → chunk-FPGRKHUW.js} +12 -12
- package/dist/chunk-G4EVQD5U.js +8 -0
- package/dist/chunk-G6CTTBKE.js +9 -0
- package/dist/{chunk-3CST4ZDP.js → chunk-GS5AISRS.js} +4 -4
- package/dist/{chunk-4Y4PWKMM.js → chunk-GVC535IA.js} +3 -3
- package/dist/{chunk-EYX6KLCZ.js → chunk-H7MJM2WI.js} +2 -2
- package/dist/chunk-HJWTWS5E.js +8 -0
- package/dist/{chunk-VH6GB73Q.js → chunk-HL6JSDN3.js} +1 -1
- package/dist/chunk-HNQPF5QZ.js +2 -0
- package/dist/{chunk-WRORJNS5.js → chunk-HQMN5THW.js} +10 -10
- package/dist/chunk-HUF34LSW.js +15 -0
- package/dist/chunk-IB4333CI.js +14 -0
- package/dist/chunk-IGNZULKG.js +17 -0
- package/dist/{chunk-EZULNHQH.js → chunk-IJIESSTX.js} +5 -5
- package/dist/{chunk-S7VSXUKS.js → chunk-IJWFKUYA.js} +4 -4
- package/dist/chunk-IK2WXW2E.js +27 -0
- package/dist/chunk-IMA5SXEC.js +2 -0
- package/dist/{chunk-UZMZ2EDW.js → chunk-IMOPDLMA.js} +1 -1
- package/dist/{chunk-2FLYC6I2.js → chunk-IN4KV3SJ.js} +1 -1
- package/dist/chunk-IPTCV6CQ.js +69 -0
- package/dist/{chunk-ZWAVSUWT.js → chunk-IQWIYZB5.js} +2 -2
- package/dist/chunk-IX6QMUJQ.js +9 -0
- package/dist/{chunk-4G5VLI7E.js → chunk-JDQGHQ2C.js} +1 -1
- package/dist/{chunk-3S3DYAVB.js → chunk-JIW5CJXC.js} +2 -2
- package/dist/{chunk-P42YNSKI.js → chunk-JKDEE35P.js} +1 -1
- package/dist/chunk-JKHWZ2ZY.js +19 -0
- package/dist/{chunk-CKZ6ZDU5.js → chunk-JS6ZSEZJ.js} +1 -1
- package/dist/chunk-K4D63NP3.js +12 -0
- package/dist/chunk-KEK47CP3.js +12 -0
- package/dist/chunk-KWT6GT4M.js +29 -0
- package/dist/{chunk-SR4XAYLC.js → chunk-L67VXJMF.js} +1 -1
- package/dist/chunk-LB3A53D5.js +8 -0
- package/dist/{chunk-D323R2FT.js → chunk-LNARMEEZ.js} +1 -1
- package/dist/{chunk-CZ25A5RS.js → chunk-LNQVTH5S.js} +1 -1
- package/dist/chunk-LUWRPPJA.js +7 -0
- package/dist/chunk-M554OMPA.js +2 -0
- package/dist/{chunk-BVW5U7QQ.js → chunk-M5GMIQ47.js} +3 -3
- package/dist/{chunk-GX2GSDJP.js → chunk-MAMWQCJ6.js} +1 -1
- package/dist/{chunk-ZTB6EMC7.js → chunk-MV6WDGB6.js} +1 -1
- package/dist/chunk-MWIT4UN2.js +14 -0
- package/dist/{chunk-JPRJQ6B7.js → chunk-N3JXHNID.js} +10 -10
- package/dist/{chunk-ZOSIPTXM.js → chunk-N45ACN3G.js} +2 -2
- package/dist/{chunk-EYKUKN32.js → chunk-N7T63BVD.js} +4 -4
- package/dist/chunk-NHH2MXFU.js +2 -0
- package/dist/chunk-NHVXVHUR.js +23 -0
- package/dist/{chunk-J47HXHSL.js → chunk-O5LQBBW2.js} +7 -7
- package/dist/{chunk-IHQX4GYD.js → chunk-OQ2EDMB2.js} +1 -1
- package/dist/chunk-OUSKOWNP.js +12 -0
- package/dist/chunk-OV2SWQPT.js +22 -0
- package/dist/chunk-OX2DOOOI.js +8 -0
- package/dist/{chunk-6KO5VTL7.js → chunk-OZAAIE4E.js} +1 -1
- package/dist/{chunk-Z2YGQBLZ.js → chunk-P3DTYFMC.js} +2 -2
- package/dist/chunk-P3OBE43Q.js +8 -0
- package/dist/{chunk-2UXAI77F.js → chunk-P4XTWAKJ.js} +1 -1
- package/dist/{chunk-7PCI6AUU.js → chunk-PB7G6CJ7.js} +1 -1
- package/dist/chunk-PDB5W7VI.js +6 -0
- package/dist/chunk-PDXPMHG3.js +4 -0
- package/dist/chunk-POCQ7ZL4.js +3 -0
- package/dist/chunk-PVR4KU7H.js +7 -0
- package/dist/{chunk-2RBWQVDC.js → chunk-PYLNMN6E.js} +13 -13
- package/dist/chunk-Q7KTTDUS.js +11 -0
- package/dist/{chunk-3PGK3VFS.js → chunk-QC6OK3ED.js} +1 -1
- package/dist/{chunk-MEJK6PBN.js → chunk-QSJR7EI7.js} +3 -3
- package/dist/chunk-QWHQJNKL.js +1 -0
- package/dist/{chunk-QDLGU62M.js → chunk-QZKWIVZW.js} +1 -1
- package/dist/chunk-R2VKEMZH.js +3 -0
- package/dist/{chunk-EXWGPXOS.js → chunk-RBD7SB6M.js} +1 -1
- package/dist/chunk-RC6UHOAV.js +4 -0
- package/dist/{chunk-VYXDI63I.js → chunk-RDKBMX6U.js} +1 -1
- package/dist/{chunk-45S6M77O.js → chunk-RULVWW4A.js} +6 -6
- package/dist/chunk-RUTUVS4H.js +1 -0
- package/dist/{chunk-MAOJENIB.js → chunk-RWJCKZEY.js} +1 -1
- package/dist/chunk-S4Z657L6.js +6 -0
- package/dist/{chunk-B2XDNBR3.js → chunk-SC63O7AL.js} +1 -1
- package/dist/{chunk-Q3OCGLW7.js → chunk-SOP447EP.js} +2 -2
- package/dist/{chunk-CDRXZBVR.js → chunk-TBPHW42V.js} +1 -1
- package/dist/chunk-TLRCTNUF.js +6 -0
- package/dist/chunk-TNTQL6SX.js +1 -0
- package/dist/chunk-TTHWXGT7.js +11 -0
- package/dist/{chunk-KWX6NAOR.js → chunk-TVL3JPMY.js} +1 -1
- package/dist/chunk-U5N6PSXO.js +9 -0
- package/dist/{chunk-LBLV64XG.js → chunk-UE4PVCA5.js} +2 -2
- package/dist/{chunk-SZIENHKR.js → chunk-UKDJUYIV.js} +1 -1
- package/dist/chunk-UQYNPYF4.js +1 -0
- package/dist/chunk-URHGHXDN.js +1 -0
- package/dist/{chunk-6WWAQC5V.js → chunk-VG2R6PZV.js} +1 -1
- package/dist/{chunk-RWGSMZGS.js → chunk-VVAJ23SD.js} +1 -1
- package/dist/chunk-VVGL5O4F.js +8 -0
- package/dist/chunk-VVJIKS47.js +1 -0
- package/dist/chunk-WE7CYRZT.js +7 -0
- package/dist/{chunk-NGBT7AHL.js → chunk-WH3JHMEA.js} +8 -8
- package/dist/chunk-WUKN5WUM.js +11 -0
- package/dist/{chunk-ET2EF5CI.js → chunk-X7PM7JOD.js} +1 -1
- package/dist/{chunk-4NXMMWL6.js → chunk-XD34TCRG.js} +1 -1
- package/dist/{chunk-Y4MI6NRI.js → chunk-XNWQ72WA.js} +1 -1
- package/dist/{chunk-Y6IQYQYN.js → chunk-XS4HFUTW.js} +2 -2
- package/dist/{chunk-Y5T257HX.js → chunk-XZYAFTW4.js} +4 -4
- package/dist/{chunk-KFJIO5ED.js → chunk-Y44ABEW3.js} +1 -1
- package/dist/chunk-YWGC7J6B.js +11 -0
- package/dist/{chunk-MMFJBWJC.js → chunk-Z3JW77LH.js} +1 -1
- package/dist/chunk-ZAU2HIRH.js +21 -0
- package/dist/{chunk-Y53KNQKL.js → chunk-ZDMZM7HD.js} +2 -2
- package/dist/{chunk-ZCHBOAPA.js → chunk-ZHHEMSOD.js} +2 -2
- package/dist/chunk-ZOHQVSB3.js +27 -0
- package/dist/{chunk-G63BCOQ6.js → chunk-ZTL2RPNY.js} +1 -1
- package/dist/{chunk-U4BMS5EV.js → chunk-ZYDZY6ED.js} +1 -1
- package/dist/data/DataTable.js +1 -1
- package/dist/data/Kanban.js +1 -1
- package/dist/data/ListFooter.js +1 -1
- package/dist/data/ListLoadError.js +1 -1
- package/dist/data/Pagination.js +1 -1
- package/dist/file-intake/index.js +1 -1
- package/dist/forms/AlignmentGrid.js +1 -1
- package/dist/forms/BorderInput.js +1 -1
- package/dist/forms/BrandAssetEditor.js +1 -1
- package/dist/forms/Button.js +1 -1
- package/dist/forms/Calendar.js +1 -1
- package/dist/forms/ColorPicker.js +1 -1
- package/dist/forms/ComposerAttachments.js +1 -1
- package/dist/forms/CornersInput.js +1 -1
- package/dist/forms/DatePicker.js +1 -1
- package/dist/forms/DateRangePicker.js +1 -1
- package/dist/forms/DateTimePicker.js +1 -1
- package/dist/forms/DisplayChips.js +1 -1
- package/dist/forms/FilePicker.js +1 -1
- package/dist/forms/FormErrorSummary.js +1 -1
- package/dist/forms/FormField.js +1 -1
- package/dist/forms/IconButton.js +1 -1
- package/dist/forms/IconPicker.js +1 -1
- package/dist/forms/ImageFocusPoint.js +1 -1
- package/dist/forms/Input.js +1 -1
- package/dist/forms/InputNumber.js +1 -1
- package/dist/forms/LinkPicker.js +1 -1
- package/dist/forms/MediaLibrary.d.ts +6 -1
- package/dist/forms/MediaLibrary.js +1 -1
- package/dist/forms/MediaUploadField.js +1 -1
- package/dist/forms/MediaUploadGrid.js +1 -1
- package/dist/forms/MediaUsedInList.js +1 -1
- package/dist/forms/NumericKeypad.js +1 -1
- package/dist/forms/PictureTiles.js +1 -1
- package/dist/forms/PositionInput.js +1 -1
- package/dist/forms/RadioGroup.js +1 -1
- package/dist/forms/Segmented.js +1 -1
- package/dist/forms/Select.d.ts +6 -0
- package/dist/forms/Select.js +1 -1
- package/dist/forms/SidesInput.js +1 -1
- package/dist/forms/Slider.js +1 -1
- package/dist/forms/Snippet.js +1 -1
- package/dist/forms/SplitButton.js +1 -1
- package/dist/forms/TagInput.js +1 -1
- package/dist/forms/TextToolbar.js +1 -1
- package/dist/forms/Textarea.js +1 -1
- package/dist/forms/TimePicker.js +1 -1
- package/dist/forms/WidthsBar.d.ts +7 -8
- package/dist/forms/WidthsBar.js +1 -1
- package/dist/forms/buttonStyles.js +1 -1
- package/dist/forms/mediaLibraryMenu.js +1 -1
- package/dist/forms/mediaMoveItems.js +1 -1
- package/dist/forms/styles.d.ts +2 -2
- package/dist/forms/styles.js +1 -1
- package/dist/forms/textAlign.js +1 -1
- package/dist/forms/useFileIntake.js +1 -1
- package/dist/icons/efficient-glyphs.js +1 -1
- package/dist/icons/efficient-looks.js +1 -1
- package/dist/icons/efficient.js +1 -1
- package/dist/icons/glyphs/SpinnerIcon.js +1 -1
- package/dist/icons/looks/map.js +1 -1
- package/dist/icons/sets.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +695 -695
- package/dist/locales/zh-Hans.js +1 -1
- package/dist/map/index.js +12 -12
- package/dist/markdown/index.js +5 -5
- package/dist/page-tabs/index.js +5 -5
- package/dist/pdf/index.js +1 -1
- package/dist/shell/Accordion.js +1 -1
- package/dist/shell/AppUpdateBanner.js +1 -1
- package/dist/shell/Avatar.js +1 -1
- package/dist/shell/Banner.js +1 -1
- package/dist/shell/Breadcrumbs.js +1 -1
- package/dist/shell/BudgetBar.js +1 -1
- package/dist/shell/Card.js +1 -1
- package/dist/shell/ColoredBadge.js +1 -1
- package/dist/shell/ConfirmDialog.js +1 -1
- package/dist/shell/ContainerFillChart.js +1 -1
- package/dist/shell/ContextMenu.js +1 -1
- package/dist/shell/CountBadge.js +1 -1
- package/dist/shell/Dialog.js +1 -1
- package/dist/shell/Drawer.js +1 -1
- package/dist/shell/DropdownMenu.js +1 -1
- package/dist/shell/EditableGrid.js +1 -1
- package/dist/shell/EmptyState.js +1 -1
- package/dist/shell/EmptyValue.js +1 -1
- package/dist/shell/GlobalSearch.js +1 -1
- package/dist/shell/HelpCenter.js +1 -1
- package/dist/shell/IconRail.js +1 -1
- package/dist/shell/ImageLightbox.js +1 -1
- package/dist/shell/ItemCount.d.ts +20 -0
- package/dist/shell/ItemCount.js +1 -0
- package/dist/shell/Kbd.js +1 -1
- package/dist/shell/LanguageSelect.js +1 -1
- package/dist/shell/Markdown.js +1 -1
- package/dist/shell/MetricBar.js +1 -1
- package/dist/shell/MetricBarLegend.js +1 -1
- package/dist/shell/MilestoneTimeline.js +1 -1
- package/dist/shell/PageHeader.js +1 -1
- package/dist/shell/Popover.js +1 -1
- package/dist/shell/PopupMenu.js +1 -1
- package/dist/shell/ProductionTimeline.js +1 -1
- package/dist/shell/ResizeHandle.js +1 -1
- package/dist/shell/Result.js +1 -1
- package/dist/shell/SearchableSelect.js +1 -1
- package/dist/shell/SettingReset.js +1 -1
- package/dist/shell/SettingRow.js +1 -1
- package/dist/shell/SidebarLayout.js +1 -1
- package/dist/shell/SidebarNav.d.ts +19 -5
- package/dist/shell/SidebarNav.js +1 -1
- package/dist/shell/SortableList.js +1 -1
- package/dist/shell/Spinner.js +1 -1
- package/dist/shell/Statistic.js +1 -1
- package/dist/shell/StatusBadge.js +1 -1
- package/dist/shell/StepChain.js +1 -1
- package/dist/shell/Tabs.js +1 -1
- package/dist/shell/TimeAgo.js +1 -1
- package/dist/shell/TimelineTrack.js +1 -1
- package/dist/shell/Tooltip.js +1 -1
- package/dist/shell/TopNav.js +1 -1
- package/dist/shell/TransferProgress.js +1 -1
- package/dist/shell/Tree.d.ts +15 -6
- package/dist/shell/Tree.js +1 -1
- package/dist/shell/language.js +1 -1
- package/dist/shell/strings.d.ts +24 -2
- package/dist/shell/strings.js +1 -1
- package/dist/shell/toast.js +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/templates/AuthScreen.js +1 -1
- package/dist/templates/ChatTemplate.js +1 -1
- package/dist/templates/CheckoutTemplate.js +1 -1
- package/dist/templates/DashboardTemplate.js +1 -1
- package/dist/templates/DataTablePage.js +1 -1
- package/dist/templates/EmailTemplate.js +1 -1
- package/dist/templates/ErrorBoundary.js +1 -1
- package/dist/templates/ErrorPage.js +1 -1
- package/dist/templates/FormLayoutPage.js +1 -1
- package/dist/templates/GalleryTemplate.js +1 -1
- package/dist/themes.css +101 -0
- package/dist/tokens/colour.d.ts +42 -0
- package/dist/tokens/colour.js +1 -0
- package/dist/tokens/elevation.d.ts +3 -1
- package/dist/tokens/elevation.js +1 -1
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.js +1 -1
- package/dist/ui.css +266 -24
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/dist/Browser-FTCJCMD3.js +0 -43
- package/dist/Calculator-7O7HXEKH.js +0 -29
- package/dist/CurrencyConverter-IVJJCYZ7.js +0 -21
- package/dist/Files-YWBBU2FZ.js +0 -87
- package/dist/Notepad-KKKCTUB3.js +0 -25
- package/dist/PdfViewer-KJCJ6EPG.js +0 -1
- package/dist/Preview-CHV67AA7.js +0 -177
- package/dist/Sidebar-6I4FC5AK.js +0 -43
- package/dist/Spreadsheet-SNLKLOLL.js +0 -37
- package/dist/Stock-PHY6Z26A.js +0 -16
- package/dist/Weather-YQA5CAFQ.js +0 -60
- package/dist/WorldClock-J6L7FWI2.js +0 -32
- package/dist/chunk-2NMT3Y5H.js +0 -20
- package/dist/chunk-3WC6ITJ3.js +0 -11
- package/dist/chunk-3ZHFKOFX.js +0 -14
- package/dist/chunk-454DAGYG.js +0 -19
- package/dist/chunk-4CANQ3B3.js +0 -1
- package/dist/chunk-4CFOKYVR.js +0 -12
- package/dist/chunk-4IU5BSVE.js +0 -2
- package/dist/chunk-4IVT244O.js +0 -8
- package/dist/chunk-4SZDP3JF.js +0 -12
- package/dist/chunk-63EK6S3W.js +0 -3
- package/dist/chunk-64WSMLXG.js +0 -2
- package/dist/chunk-6BCFVOG7.js +0 -22
- package/dist/chunk-6NMDKOQA.js +0 -7
- package/dist/chunk-7C56GLLI.js +0 -28
- package/dist/chunk-7DKPJUGU.js +0 -2
- package/dist/chunk-7MSFHQAY.js +0 -8
- package/dist/chunk-7OCNF4AI.js +0 -5
- package/dist/chunk-AAW27HJY.js +0 -3
- package/dist/chunk-BI6ZLD4X.js +0 -11
- package/dist/chunk-BIYL7CEI.js +0 -2
- package/dist/chunk-BOBUSE33.js +0 -2
- package/dist/chunk-BUGAWNOC.js +0 -14
- package/dist/chunk-CRLSG5AY.js +0 -9
- package/dist/chunk-DITCVBR7.js +0 -15
- package/dist/chunk-DODH46ZQ.js +0 -8
- package/dist/chunk-E5ALJIXV.js +0 -9
- package/dist/chunk-E6UCGCOC.js +0 -1
- package/dist/chunk-EGDJEY4K.js +0 -27
- package/dist/chunk-EL2RLUT6.js +0 -20
- package/dist/chunk-ET32NQHX.js +0 -2
- package/dist/chunk-EZ3BQ6PK.js +0 -18
- package/dist/chunk-FRPNTDP4.js +0 -8
- package/dist/chunk-GATKJSGL.js +0 -8
- package/dist/chunk-GNPTNAZH.js +0 -4
- package/dist/chunk-JPP7UWQA.js +0 -4
- package/dist/chunk-K7KQDPLW.js +0 -27
- package/dist/chunk-K7U4RWXJ.js +0 -1
- package/dist/chunk-KJY57QPT.js +0 -100
- package/dist/chunk-LGAN7DNC.js +0 -9
- package/dist/chunk-MEYYQC43.js +0 -8
- package/dist/chunk-MVP6Q6KV.js +0 -1
- package/dist/chunk-NDO24PK6.js +0 -21
- package/dist/chunk-OSA24YH6.js +0 -19
- package/dist/chunk-P5BOTIJU.js +0 -6
- package/dist/chunk-PCQPV6MS.js +0 -6
- package/dist/chunk-PF3ANJFI.js +0 -1
- package/dist/chunk-PXEEDRPW.js +0 -14
- package/dist/chunk-Q23EHOXW.js +0 -17
- package/dist/chunk-Q5MD3VY6.js +0 -3
- package/dist/chunk-QR4RM7PO.js +0 -1
- package/dist/chunk-REVC6YPT.js +0 -7
- package/dist/chunk-RSO67DWS.js +0 -8
- package/dist/chunk-S2OIRC5H.js +0 -12
- package/dist/chunk-SB7OTZI4.js +0 -69
- package/dist/chunk-SRKSGUGT.js +0 -23
- package/dist/chunk-SURSVJA2.js +0 -6
- package/dist/chunk-TH6EAYMO.js +0 -29
- package/dist/chunk-TIQKDAON.js +0 -11
- package/dist/chunk-TVDVVPTN.js +0 -1
- package/dist/chunk-VU6VPKM3.js +0 -11
- package/dist/chunk-W5M6P4DZ.js +0 -8
- package/dist/chunk-X6PPP6NX.js +0 -14
- package/dist/chunk-XLD53X4P.js +0 -9
- package/dist/chunk-XSPDPN5O.js +0 -26
- package/dist/chunk-Y37PBT4H.js +0 -9
- package/dist/chunk-YAEUF3GP.js +0 -1
- package/dist/chunk-YALPQIBR.js +0 -7
- package/dist/chunk-ZK2SULCA.js +0 -16
- package/dist/chunk-ZSFUNXRD.js +0 -5
- /package/dist/{chunk-KJRYEKQP.js → chunk-DSIDJYH7.js} +0 -0
package/dist/ui.css
CHANGED
|
@@ -328,12 +328,23 @@ html.rosh-reduce-transparency *::after {
|
|
|
328
328
|
* gray-400 ink. Keep the two blocks in step.
|
|
329
329
|
*/
|
|
330
330
|
:root {
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
--
|
|
336
|
-
--
|
|
331
|
+
/* The BASE tier: the untinted surfaces and lines. No theme sets these; a
|
|
332
|
+
host that wants its own greys does. The roles below read them, and an
|
|
333
|
+
accent theme (themes.css) sets the roles to its tint instead — the base
|
|
334
|
+
stays, for the few parts that must never tint (the fold band, the glass). */
|
|
335
|
+
--base-surface: #ffffff;
|
|
336
|
+
--base-surface-sunken: #f9fafb;
|
|
337
|
+
--base-surface-raised: #f3f4f6;
|
|
338
|
+
--base-line-subtle: #f3f4f6;
|
|
339
|
+
--base-line: #e5e7eb;
|
|
340
|
+
--base-line-strong: #d1d5db;
|
|
341
|
+
|
|
342
|
+
--surface: var(--base-surface);
|
|
343
|
+
--surface-sunken: var(--base-surface-sunken);
|
|
344
|
+
--surface-raised: var(--base-surface-raised);
|
|
345
|
+
--line-subtle: var(--base-line-subtle);
|
|
346
|
+
--line: var(--base-line);
|
|
347
|
+
--line-strong: var(--base-line-strong);
|
|
337
348
|
--ink-faintest: #9ca3af;
|
|
338
349
|
--ink-faint: #6b7280;
|
|
339
350
|
--ink-muted: #4b5563;
|
|
@@ -371,12 +382,20 @@ html.rosh-reduce-transparency *::after {
|
|
|
371
382
|
* replaces, because in a light theme the numbers run the other way round
|
|
372
383
|
* while the roles do not.
|
|
373
384
|
*/
|
|
374
|
-
--surface: #1e1e2e;
|
|
375
|
-
--surface-sunken: #181825;
|
|
376
|
-
--surface-raised: #313244;
|
|
377
|
-
--line-subtle: #2a2a3c;
|
|
378
|
-
--line: #313244;
|
|
379
|
-
--line-strong: #45475a;
|
|
385
|
+
--base-surface: #1e1e2e;
|
|
386
|
+
--base-surface-sunken: #181825;
|
|
387
|
+
--base-surface-raised: #313244;
|
|
388
|
+
--base-line-subtle: #2a2a3c;
|
|
389
|
+
--base-line: #313244;
|
|
390
|
+
--base-line-strong: #45475a;
|
|
391
|
+
/* Re-declared here, not inherited from :root: on a `.dark` subtree inside a
|
|
392
|
+
light page, a role declared only on :root would keep the light base. */
|
|
393
|
+
--surface: var(--base-surface);
|
|
394
|
+
--surface-sunken: var(--base-surface-sunken);
|
|
395
|
+
--surface-raised: var(--base-surface-raised);
|
|
396
|
+
--line-subtle: var(--base-line-subtle);
|
|
397
|
+
--line: var(--base-line);
|
|
398
|
+
--line-strong: var(--base-line-strong);
|
|
380
399
|
--ink-faintest: #6c7086;
|
|
381
400
|
/* 4.79:1 on --surface. Was #7f849c at 4.44:1 — under AA, and this step
|
|
382
401
|
is what `.text-gray-500` renders as in dark, so it carries real text. */
|
|
@@ -406,6 +425,219 @@ html.rosh-reduce-transparency *::after {
|
|
|
406
425
|
--ink-placeholder: var(--ink-faintest);
|
|
407
426
|
}
|
|
408
427
|
|
|
428
|
+
/* ═══════════════════════════════════════════════════
|
|
429
|
+
Colour roles — every colour a component asks for
|
|
430
|
+
═══════════════════════════════════════════════════ */
|
|
431
|
+
/*
|
|
432
|
+
* The ramp above names surfaces, lines and inks. These are the rest: the
|
|
433
|
+
* accent by job, the flat status colours, the status borders, and the few
|
|
434
|
+
* neutral jobs the ramp had no name for. src/tokens/colour.ts lists every
|
|
435
|
+
* role; tests/colourRoleUtilities.test.ts holds this file to it.
|
|
436
|
+
*
|
|
437
|
+
* Why they are here and not only in brand.css. The accent and the `-text`
|
|
438
|
+
* status inks used to live in brand.css alone, and a portal loads ui.css, not
|
|
439
|
+
* brand.css — so in a portal `var(--accent-text)` resolved to nothing and the
|
|
440
|
+
* only way to write the accent was a blue palette class. brand.css imports
|
|
441
|
+
* this file, so a brand surface still gets every value.
|
|
442
|
+
*
|
|
443
|
+
* The accent jobs read a scale, `--accent-50` … `--accent-700`, that this
|
|
444
|
+
* file does NOT declare: an accent theme (themes.css) or a custom accent
|
|
445
|
+
* (useTheme, inline on <html>) sets it. Unset, each job falls back to
|
|
446
|
+
* Tailwind's blue THROUGH its theme variable (`var(--color-blue-600)`), not a
|
|
447
|
+
* literal, so a host that maps `--color-blue-*` onto its own accent moves the
|
|
448
|
+
* jobs with it, as it already moves the blue utilities. Leaving the scale
|
|
449
|
+
* unset in the default theme is deliberate: kit code that already reads
|
|
450
|
+
* `var(--accent-600, <fallback>)` (the taskbar's start balloon and drop hint,
|
|
451
|
+
* the timeline accent) keeps drawing exactly what it drew.
|
|
452
|
+
*
|
|
453
|
+
* The roles new in this block, and the palette class each one replaces:
|
|
454
|
+
* --ink-disabled text-gray-300: a disabled label, an inactive sort arrow
|
|
455
|
+
* --ink-on-inverse text-white on --surface-inverse
|
|
456
|
+
* --surface-inverse bg-gray-900 / bg-gray-700: a dark chip in a light UI
|
|
457
|
+
* --row-hover hover:bg-gray-50 on a list or table row
|
|
458
|
+
* --status-X-line border-red-200 and the like: a status box's border
|
|
459
|
+
* --scrim-* bg-black/30, /60, /80 over media
|
|
460
|
+
* --identity-1..8 avatar and tag hues; the chart series, never themed
|
|
461
|
+
*/
|
|
462
|
+
:root {
|
|
463
|
+
--accent-fill: var(--accent-600, var(--color-blue-600));
|
|
464
|
+
--accent-fill-hover: var(--accent-700, var(--color-blue-700));
|
|
465
|
+
--accent-tint: var(--accent-50, var(--color-blue-50));
|
|
466
|
+
--accent-tint-strong: var(--accent-100, var(--color-blue-100));
|
|
467
|
+
--accent-border: var(--accent-500, var(--color-blue-500));
|
|
468
|
+
--accent-text: #1d4ed8; /* 6.70:1 on --surface — blue-700 */
|
|
469
|
+
--on-accent: #ffffff; /* 5.17:1 on --accent-600 */
|
|
470
|
+
|
|
471
|
+
--danger: #dc2626;
|
|
472
|
+
--warning: #f59e0b;
|
|
473
|
+
--success: #16a34a;
|
|
474
|
+
--danger-text: #dc2626; /* 4.83:1 on --surface */
|
|
475
|
+
--warning-text: #b45309; /* 5.02:1 — amber-700; #f59e0b is 2.15:1 here */
|
|
476
|
+
--success-text: #15803d; /* 5.02:1 */
|
|
477
|
+
|
|
478
|
+
--surface-inverse: #111827;
|
|
479
|
+
--ink-on-inverse: #ffffff;
|
|
480
|
+
--ink-disabled: #d1d5db;
|
|
481
|
+
--row-hover: var(--surface-sunken);
|
|
482
|
+
|
|
483
|
+
--status-success-line: #bbf7d0;
|
|
484
|
+
--status-active-line: #bfdbfe;
|
|
485
|
+
--status-queued-line: #c7d2fe;
|
|
486
|
+
--status-info-line: #bae6fd;
|
|
487
|
+
--status-pending-line: #fef08a;
|
|
488
|
+
--status-warning-line: #fed7aa;
|
|
489
|
+
--status-danger-line: #fecaca;
|
|
490
|
+
--status-draft-line: #d1d5db;
|
|
491
|
+
--status-neutral-line: #e5e7eb;
|
|
492
|
+
|
|
493
|
+
--scrim-soft: rgba(0, 0, 0, 0.3);
|
|
494
|
+
--scrim-mid: var(--rosh-media-scrim);
|
|
495
|
+
--scrim-strong: rgba(0, 0, 0, 0.8);
|
|
496
|
+
|
|
497
|
+
--identity-1: var(--viz-series-1);
|
|
498
|
+
--identity-2: var(--viz-series-2);
|
|
499
|
+
--identity-3: var(--viz-series-3);
|
|
500
|
+
--identity-4: var(--viz-series-4);
|
|
501
|
+
--identity-5: var(--viz-series-5);
|
|
502
|
+
--identity-6: var(--viz-series-6);
|
|
503
|
+
--identity-7: var(--viz-series-7);
|
|
504
|
+
--identity-8: var(--viz-series-8);
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
/*
|
|
508
|
+
* Dark. The fills hold; what moves is anything read AGAINST the surface, which
|
|
509
|
+
* moved. The accent washes and line are the values the dark blue-utility
|
|
510
|
+
* remaps below already paint (`rgba(var(--rosh-dark-accent-rgb), 0.26)` for
|
|
511
|
+
* bg-blue-50, and so on), so a role and the class it replaces look the same.
|
|
512
|
+
* The status borders are each group's hue at the alpha the dark border remaps
|
|
513
|
+
* use (0.32 – 0.35).
|
|
514
|
+
*/
|
|
515
|
+
:is([data-theme="dark"], .dark) {
|
|
516
|
+
--accent-tint: rgba(var(--rosh-dark-accent-rgb), 0.26);
|
|
517
|
+
--accent-tint-strong: rgba(var(--rosh-dark-accent-rgb), 0.22);
|
|
518
|
+
--accent-border: rgb(var(--rosh-dark-accent-line-rgb));
|
|
519
|
+
--accent-text: #60a5fa; /* 6.45:1 — blue-400 */
|
|
520
|
+
|
|
521
|
+
--danger-text: #f87171; /* 5.93:1 on the dark --surface */
|
|
522
|
+
--warning-text: #f59e0b; /* 7.64:1 */
|
|
523
|
+
--success-text: #16a34a; /* 4.98:1 */
|
|
524
|
+
|
|
525
|
+
--surface-inverse: #cdd6f4;
|
|
526
|
+
--ink-on-inverse: #1e1e2e;
|
|
527
|
+
--ink-disabled: #585b70;
|
|
528
|
+
--row-hover: var(--line-subtle);
|
|
529
|
+
|
|
530
|
+
--status-success-line: rgba(34, 197, 94, 0.32);
|
|
531
|
+
--status-active-line: rgba(59, 130, 246, 0.35);
|
|
532
|
+
--status-queued-line: rgba(99, 102, 241, 0.35);
|
|
533
|
+
--status-info-line: rgba(14, 165, 233, 0.35);
|
|
534
|
+
--status-pending-line: rgba(234, 179, 8, 0.32);
|
|
535
|
+
--status-warning-line: rgba(249, 115, 22, 0.35);
|
|
536
|
+
--status-danger-line: rgba(239, 68, 68, 0.35);
|
|
537
|
+
--status-draft-line: var(--line-strong);
|
|
538
|
+
--status-neutral-line: var(--line);
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
/*
|
|
542
|
+
* Each role as a utility class: the text, background and border utility of
|
|
543
|
+
* `ink`, `surface`, `line`, `accent-fill`, `status-danger-line` and the rest —
|
|
544
|
+
* and every other colour utility Tailwind derives (ring, divide, fill, stroke,
|
|
545
|
+
* outline, from/via/to). Class names are not written out here: a class named
|
|
546
|
+
* in any file of this repository ships in brand.css (AGENTS.md).
|
|
547
|
+
*
|
|
548
|
+
* `inline`: the class writes `var(--ink)` itself, so it follows dark mode and
|
|
549
|
+
* a host's ramp at run time instead of freezing the light value. `default`: an
|
|
550
|
+
* app's own `@theme` still wins (see the shape-and-type block at the top).
|
|
551
|
+
*
|
|
552
|
+
* The accent SCALE (`--accent-50` … `-700`) is deliberately not here: a
|
|
553
|
+
* component asks for a job (the accent tint), never a step.
|
|
554
|
+
*/
|
|
555
|
+
@theme inline default {
|
|
556
|
+
--color-surface: var(--surface);
|
|
557
|
+
--color-surface-sunken: var(--surface-sunken);
|
|
558
|
+
--color-surface-raised: var(--surface-raised);
|
|
559
|
+
--color-surface-inverse: var(--surface-inverse);
|
|
560
|
+
--color-line-subtle: var(--line-subtle);
|
|
561
|
+
--color-line: var(--line);
|
|
562
|
+
--color-line-strong: var(--line-strong);
|
|
563
|
+
--color-ink-faintest: var(--ink-faintest);
|
|
564
|
+
--color-ink-faint: var(--ink-faint);
|
|
565
|
+
--color-ink-muted: var(--ink-muted);
|
|
566
|
+
--color-ink: var(--ink);
|
|
567
|
+
--color-ink-strong: var(--ink-strong);
|
|
568
|
+
--color-ink-strongest: var(--ink-strongest);
|
|
569
|
+
--color-ink-placeholder: var(--ink-placeholder);
|
|
570
|
+
--color-ink-disabled: var(--ink-disabled);
|
|
571
|
+
--color-ink-on-inverse: var(--ink-on-inverse);
|
|
572
|
+
--color-row-hover: var(--row-hover);
|
|
573
|
+
|
|
574
|
+
--color-accent-fill: var(--accent-fill);
|
|
575
|
+
--color-accent-fill-hover: var(--accent-fill-hover);
|
|
576
|
+
--color-accent-tint: var(--accent-tint);
|
|
577
|
+
--color-accent-tint-strong: var(--accent-tint-strong);
|
|
578
|
+
--color-accent-border: var(--accent-border);
|
|
579
|
+
--color-accent-text: var(--accent-text);
|
|
580
|
+
--color-on-accent: var(--on-accent);
|
|
581
|
+
|
|
582
|
+
--color-danger: var(--danger);
|
|
583
|
+
--color-warning: var(--warning);
|
|
584
|
+
--color-success: var(--success);
|
|
585
|
+
--color-danger-text: var(--danger-text);
|
|
586
|
+
--color-warning-text: var(--warning-text);
|
|
587
|
+
--color-success-text: var(--success-text);
|
|
588
|
+
|
|
589
|
+
--color-status-success-soft: var(--status-success-soft);
|
|
590
|
+
--color-status-success-soft-ink: var(--status-success-soft-ink);
|
|
591
|
+
--color-status-success-solid: var(--status-success-solid);
|
|
592
|
+
--color-status-success-line: var(--status-success-line);
|
|
593
|
+
--color-status-active-soft: var(--status-active-soft);
|
|
594
|
+
--color-status-active-soft-ink: var(--status-active-soft-ink);
|
|
595
|
+
--color-status-active-solid: var(--status-active-solid);
|
|
596
|
+
--color-status-active-line: var(--status-active-line);
|
|
597
|
+
--color-status-queued-soft: var(--status-queued-soft);
|
|
598
|
+
--color-status-queued-soft-ink: var(--status-queued-soft-ink);
|
|
599
|
+
--color-status-queued-solid: var(--status-queued-solid);
|
|
600
|
+
--color-status-queued-line: var(--status-queued-line);
|
|
601
|
+
--color-status-info-soft: var(--status-info-soft);
|
|
602
|
+
--color-status-info-soft-ink: var(--status-info-soft-ink);
|
|
603
|
+
--color-status-info-solid: var(--status-info-solid);
|
|
604
|
+
--color-status-info-line: var(--status-info-line);
|
|
605
|
+
--color-status-pending-soft: var(--status-pending-soft);
|
|
606
|
+
--color-status-pending-soft-ink: var(--status-pending-soft-ink);
|
|
607
|
+
--color-status-pending-solid: var(--status-pending-solid);
|
|
608
|
+
--color-status-pending-line: var(--status-pending-line);
|
|
609
|
+
--color-status-warning-soft: var(--status-warning-soft);
|
|
610
|
+
--color-status-warning-soft-ink: var(--status-warning-soft-ink);
|
|
611
|
+
--color-status-warning-solid: var(--status-warning-solid);
|
|
612
|
+
--color-status-warning-line: var(--status-warning-line);
|
|
613
|
+
--color-status-danger-soft: var(--status-danger-soft);
|
|
614
|
+
--color-status-danger-soft-ink: var(--status-danger-soft-ink);
|
|
615
|
+
--color-status-danger-solid: var(--status-danger-solid);
|
|
616
|
+
--color-status-danger-line: var(--status-danger-line);
|
|
617
|
+
--color-status-draft-soft: var(--status-draft-soft);
|
|
618
|
+
--color-status-draft-soft-ink: var(--status-draft-soft-ink);
|
|
619
|
+
--color-status-draft-solid: var(--status-draft-solid);
|
|
620
|
+
--color-status-draft-line: var(--status-draft-line);
|
|
621
|
+
--color-status-neutral-soft: var(--status-neutral-soft);
|
|
622
|
+
--color-status-neutral-soft-ink: var(--status-neutral-soft-ink);
|
|
623
|
+
--color-status-neutral-solid: var(--status-neutral-solid);
|
|
624
|
+
--color-status-neutral-line: var(--status-neutral-line);
|
|
625
|
+
--color-status-on-solid: var(--status-on-solid);
|
|
626
|
+
|
|
627
|
+
--color-scrim-soft: var(--scrim-soft);
|
|
628
|
+
--color-scrim-mid: var(--scrim-mid);
|
|
629
|
+
--color-scrim-strong: var(--scrim-strong);
|
|
630
|
+
|
|
631
|
+
--color-identity-1: var(--identity-1);
|
|
632
|
+
--color-identity-2: var(--identity-2);
|
|
633
|
+
--color-identity-3: var(--identity-3);
|
|
634
|
+
--color-identity-4: var(--identity-4);
|
|
635
|
+
--color-identity-5: var(--identity-5);
|
|
636
|
+
--color-identity-6: var(--identity-6);
|
|
637
|
+
--color-identity-7: var(--identity-7);
|
|
638
|
+
--color-identity-8: var(--identity-8);
|
|
639
|
+
}
|
|
640
|
+
|
|
409
641
|
/* ── The compact settings row (owner 2026-10-17, R2) ───────────────────────
|
|
410
642
|
* One rule for every row in an editor-panel group, not one per row:
|
|
411
643
|
* - every number box straight in a compact SettingRow's value slot is ONE
|
|
@@ -437,16 +669,16 @@ html.rosh-reduce-transparency *::after {
|
|
|
437
669
|
|
|
438
670
|
/* ── The fold band (owner 2026-10-17, R2: Accordion's `band` tier) ─────────
|
|
439
671
|
* Lewis's fold sign option F: a group band is one grey step darker than the
|
|
440
|
-
* panel, and one step further on hover.
|
|
441
|
-
*
|
|
442
|
-
*
|
|
672
|
+
* panel, and one step further on hover. It reads the BASE tier, not the
|
|
673
|
+
* roles: an accent theme tints the roles, and its tint must not reach the
|
|
674
|
+
* band; a host's own base does. */
|
|
443
675
|
:root {
|
|
444
|
-
--rosh-fold-band: var(--line);
|
|
445
|
-
--rosh-fold-band-hover: var(--line-strong);
|
|
676
|
+
--rosh-fold-band: var(--base-line);
|
|
677
|
+
--rosh-fold-band-hover: var(--base-line-strong);
|
|
446
678
|
}
|
|
447
679
|
:is([data-theme="dark"], .dark) {
|
|
448
|
-
--rosh-fold-band: var(--line-strong);
|
|
449
|
-
--rosh-fold-band-hover: color-mix(in srgb, var(--line-strong) 80%, var(--ink-faintest));
|
|
680
|
+
--rosh-fold-band: var(--base-line-strong);
|
|
681
|
+
--rosh-fold-band-hover: color-mix(in srgb, var(--base-line-strong) 80%, var(--ink-faintest));
|
|
450
682
|
}
|
|
451
683
|
|
|
452
684
|
/* ── Chart tokens ───────────────────────────────────────────────────────────
|
|
@@ -846,11 +1078,12 @@ html.rosh-reduce-transparency *::after {
|
|
|
846
1078
|
/* glassStyle() — every menu, popup and listbox in the kit; a Tooltip
|
|
847
1079
|
bubble is always the solid one (solidSurfaceStyle()). The
|
|
848
1080
|
surface a popup is tinted from (frosted) or painted in (solid), and the
|
|
849
|
-
stop across the middle of its gradient. Both chain to the
|
|
850
|
-
|
|
1081
|
+
stop across the middle of its gradient. Both chain to the BASE tier, not
|
|
1082
|
+
the tinted roles, so an accent theme does not tint the glass while a host
|
|
1083
|
+
that restyles its base moves its popups with it; one that wants its
|
|
851
1084
|
popups in a colour of their own sets `--rosh-glass-surface` alone. */
|
|
852
|
-
--rosh-glass-surface: var(--surface);
|
|
853
|
-
--rosh-glass-surface-mid: var(--surface);
|
|
1085
|
+
--rosh-glass-surface: var(--base-surface);
|
|
1086
|
+
--rosh-glass-surface-mid: var(--base-surface);
|
|
854
1087
|
/* The frosted edge and its depth: a white hairline and an inner highlight
|
|
855
1088
|
(the glass SURFACE), lifted by the popup level, the one popup shadow
|
|
856
1089
|
(GG for Lewis, 2026-10-13; it was its own 0 8px 32px + 0 2px 8px). */
|
|
@@ -896,7 +1129,7 @@ html.rosh-reduce-transparency *::after {
|
|
|
896
1129
|
* like every dark rule once the kit follows a `dark` class as well as
|
|
897
1130
|
* `data-theme` (feat/ui-dark-class): `:is()` has the specificity of either. */
|
|
898
1131
|
:is([data-theme="dark"], .dark) {
|
|
899
|
-
--rosh-glass-surface-mid: var(--surface-sunken);
|
|
1132
|
+
--rosh-glass-surface-mid: var(--base-surface-sunken);
|
|
900
1133
|
--rosh-glass-border: rgba(255, 255, 255, 0.08);
|
|
901
1134
|
--rosh-glass-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06), inset 0 -1px 0 rgba(0, 0, 0, 0.4),
|
|
902
1135
|
var(--elevation-popup);
|
|
@@ -919,11 +1152,20 @@ html.rosh-reduce-transparency *::after {
|
|
|
919
1152
|
* panel is the side-panel shadow efficient-easel drew for itself. Black at an
|
|
920
1153
|
* alpha composites on either theme. A component class or inline style reads
|
|
921
1154
|
* these; nothing in the kit does yet, so nothing renders differently.
|
|
1155
|
+
*
|
|
1156
|
+
* Four more, each the shadow an editor drew for itself, at the value it drew
|
|
1157
|
+
* (GG for Lewis, 2026-10-24: a level each, so nothing moves; a later design
|
|
1158
|
+
* pass may merge them): bar (the editor's top bar) · handle (the canvas drag
|
|
1159
|
+
* handle) · tag (the picker's tag) · frame (the preview frame).
|
|
922
1160
|
*/
|
|
923
1161
|
:root {
|
|
924
1162
|
--elevation-none: none;
|
|
1163
|
+
--elevation-bar: 0 1px 3px rgb(0 0 0 / 0.06);
|
|
925
1164
|
--elevation-raised: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
|
|
1165
|
+
--elevation-handle: 0 2px 6px rgb(16 24 40 / 0.2);
|
|
1166
|
+
--elevation-tag: 0 4px 12px rgb(0 0 0 / 0.2);
|
|
926
1167
|
--elevation-panel: 0 1px 2px rgb(0 0 0 / 0.05), 0 10px 30px rgb(0 0 0 / 0.06);
|
|
1168
|
+
--elevation-frame: 0 1px 2px rgb(0 0 0 / 0.06), 0 12px 36px rgb(0 0 0 / 0.1);
|
|
927
1169
|
--elevation-popup: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
928
1170
|
--elevation-dialog: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
|
|
929
1171
|
}
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{APP_VERSION,VERSION}from"./chunk-
|
|
1
|
+
export{APP_VERSION,VERSION}from"./chunk-TNTQL6SX.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "efficient-shell",
|
|
3
|
-
"version": "9.1
|
|
3
|
+
"version": "9.9.1",
|
|
4
4
|
"description": "Desktop-style React UI shell — windows, taskbar, start menu, sticky notes, frosted glass theming, and bundled apps.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "Efficient Pty Ltd",
|
package/dist/Browser-FTCJCMD3.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import{peekBrowserStartUrl as e,claimBrowserStartUrl as t}from"./chunk-LWLCNQY7.js";import{AboutApp as o}from"./chunk-Y37PBT4H.js";import{WindowTitle as r}from"./chunk-KJY57QPT.js";import"./chunk-CY5N5OA3.js";import"./chunk-AW7TOB6N.js";import"./chunk-KNUR2UEG.js";import"./chunk-JDCM2VHG.js";import"./chunk-BMPBVI7P.js";import"./chunk-5A7MWTXX.js";import"./chunk-Y53KNQKL.js";import"./chunk-6WWAQC5V.js";import{confirm as n}from"./chunk-EGDJEY4K.js";import"./chunk-GNPTNAZH.js";import"./chunk-KC3EX26K.js";import"./chunk-4AJRHTTB.js";import"./chunk-VWGWZY7A.js";import"./chunk-PKXQDCNR.js";import"./chunk-UGTRSRIW.js";import"./chunk-ET2EF5CI.js";import"./chunk-CDAJKLGL.js";import"./chunk-YAEUF3GP.js";import"./chunk-DXTKNHWG.js";import"./chunk-QR4RM7PO.js";import"./chunk-5QFPTDQF.js";import"./chunk-D323R2FT.js";import"./chunk-4IU5BSVE.js";import"./chunk-K7U4RWXJ.js";import"./chunk-VH6GB73Q.js";import{Icon as a}from"./chunk-FSPFV4MI.js";import"./chunk-J75ZT2JQ.js";import"./chunk-Q5MD3VY6.js";import"./chunk-MRJKZWWV.js";import"./chunk-6KO5VTL7.js";import"./chunk-22S6LG6D.js";import"./chunk-PGN5ME7B.js";import"./chunk-62LW225J.js";import"./chunk-GLUJS42B.js";import"./chunk-D65T4H6J.js";import"./chunk-DTJRIWFR.js";import"./chunk-TWVUQUUD.js";import"./chunk-E6UCGCOC.js";import"./chunk-C3QOHMR6.js";import{useRef as s,useEffect as i,useState as l}from"react";import{jsxs as c,jsx as m,Fragment as u}from"react/jsx-runtime";var d="react-os-shell:browser-bookmarks",h="react-os-shell:browser-homepage",p="https://en.wikipedia.org/wiki/Main_Page",g=[{label:"Wikipedia",url:"https://en.wikipedia.org/wiki/Main_Page"},{label:"DevDocs",url:"https://devdocs.io"},{label:"Example",url:"https://example.com"}],b=new Set(["ac ad ae af ag ai al am ao aq ar as at au aw ax az ba bb bd be bf bg bh bi","bj bm bn bo br bs bt bw by bz ca cc cd cf cg ch ci ck cl cm cn co cr cu cv","cw cx cy cz de dj dk dm do dz ec ee eg er es et eu fi fj fk fm fo fr ga gd","ge gf gg gh gi gl gm gn gp gq gr gs gt gu gw gy hk hm hn hr ht hu id ie il","im in io iq ir is it je jm jo jp ke kg kh ki km kn kp kr kw ky kz la lb lc","li lk lr ls lt lu lv ly ma mc md me mg mh mk ml mm mn mo mp mq mr ms mt mu","mv mw mx my mz na nc ne nf ng ni nl no np nr nu nz om pa pe pf pg ph pk pl","pm pn pr ps pt pw py qa re ro rs ru rw sa sb sc sd se sg sh si sk sl sm sn","so sr ss st su sv sx sy sz tc td tf tg th tj tk tl tm tn to tr tt tv tw tz","ua ug uk us uy uz va vc ve vg vi vn vu wf ws ye yt za zm zw","com net org edu gov mil int info biz name pro app dev xyz online site tech","store shop cloud design digital agency studio media news blog live life","world today email systems solutions services software page link space host","press wiki team group works careers finance capital energy academy"].join(" ").split(" "));function k(e){let t=e.trim();return t?/^[a-z][a-z0-9+.-]*:\/\//i.test(t)?t:function(e){const t=/^([\w-]+\.)+([a-z]{2,})(\/.*)?$/i.exec(e);return null!==t&&b.has(t[2].toLowerCase())}(t)?"https://"+t:"https://duckduckgo.com/?q="+encodeURIComponent(t):""}var f=["duckduckgo.com","developer.mozilla.org","google.com","gmail.com","youtube.com","facebook.com","instagram.com","whatsapp.com","twitter.com","x.com","github.com","gitlab.com","linkedin.com","reddit.com","pinterest.com","amazon.com","amazon.ca","amazon.co.uk","apple.com","icloud.com","microsoft.com","outlook.com","live.com","office.com","netflix.com","spotify.com","paypal.com","stripe.com","chat.openai.com","chatgpt.com","claude.ai"];function x(){if("undefined"==typeof window)return g;try{const e=localStorage.getItem(d);if(!e)return g;const t=JSON.parse(e);if(Array.isArray(t)&&t.every(e=>"string"==typeof e?.url))return t}catch{}return g}function w(){return"undefined"==typeof window?p:localStorage.getItem(h)||p}function y(){const u=s(void 0);void 0===u.current&&(u.current=e()),i(()=>{null!=u.current&&t(u.current)},[]);const p=u.current?k(u.current.url):"",[g,b]=l(w),[f,y]=l(p||g),[j,C]=l(f),[W,R]=l([f]),[z,T]=l(0),[E,D]=l(0),[L,S]=l(x),[G,U]=l(!1),[K,P]=l(null),H=s(null),J=s(null);i(()=>{try{localStorage.setItem(d,JSON.stringify(L))}catch{}},[L]);const M=e=>{const t=k(e);t&&(y(t),C(t),R(e=>{const o=e.slice(0,z+1);return o.push(t),o}),T(e=>e+1),U(!1))},Q=()=>{"undefined"!=typeof window&&window.open(f,"_blank","noopener,noreferrer")},A=()=>{const e=K?.trim();e?(S(t=>[...t,{label:e,url:f}]),P(null)):P(null)};i(()=>{if(null===K)return;H.current?.focus(),H.current?.select();const e=e=>{const t=e.target;t?.closest("[data-bookmark-popover]")||P(null)},t=setTimeout(()=>document.addEventListener("mousedown",e),0);return()=>{clearTimeout(t),document.removeEventListener("mousedown",e)}},[null!==K]);const B=e=>{S(t=>t.filter((t,o)=>o!==e))},F=z>0,I=z<W.length-1,O=L.some(e=>e.url===f),V="p-2 rounded hover:bg-gray-200 transition-colors text-gray-600 disabled:opacity-30";/* @__PURE__ */
|
|
2
|
-
return c("div",{className:"relative flex flex-col h-full bg-white",children:[
|
|
3
|
-
/* @__PURE__ */m(r,{title:`Browser - ${v(f)}`}),
|
|
4
|
-
/* @__PURE__ */m(o,{app:"browser"}),
|
|
5
|
-
/* @__PURE__ */c("div",{className:"flex items-center gap-1 px-2 py-2 border-b border-gray-200 bg-gray-50 shrink-0",children:[
|
|
6
|
-
/* @__PURE__ */m("button",{onClick:()=>{if(z>0){const e=z-1;T(e),y(W[e]),C(W[e]),U(!1)}},disabled:!F,className:V,title:"Back",children:/* @__PURE__ */m(a,{name:"chevron-left",className:"h-4 w-4",strokeWidth:2})}),
|
|
7
|
-
/* @__PURE__ */m("button",{onClick:()=>{if(z<W.length-1){const e=z+1;T(e),y(W[e]),C(W[e]),U(!1)}},disabled:!I,className:V,title:"Forward",children:/* @__PURE__ */m(a,{name:"chevron-right",className:"h-4 w-4",strokeWidth:2})}),
|
|
8
|
-
/* @__PURE__ */m("button",{onClick:()=>D(e=>e+1),className:V,title:"Refresh",children:/* @__PURE__ */m(a,{name:"refresh",className:"h-4 w-4",strokeWidth:1.8})}),
|
|
9
|
-
/* @__PURE__ */m("button",{onClick:()=>M(g),className:V,title:"Home",children:/* @__PURE__ */m(a,{name:"home",className:"h-4 w-4",strokeWidth:1.8})}),
|
|
10
|
-
/* @__PURE__ */m("form",{onSubmit:e=>{e.preventDefault(),M(j)},className:"flex-1 flex items-center mx-1",children:/* @__PURE__ */c("div",{className:"flex items-center w-full bg-white border border-gray-300 rounded focus-within:border-blue-400 focus-within:ring-1 focus-within:ring-blue-200",children:[
|
|
11
|
-
/* @__PURE__ */m("span",{className:"px-2 text-gray-400 text-xs",children:f.startsWith("https://")?"🔒":"⚠️"}),
|
|
12
|
-
/* @__PURE__ */m("input",{type:"text",value:j,onChange:e=>C(e.target.value),onFocus:e=>e.target.select(),className:"flex-1 px-1 py-1 text-sm bg-transparent outline-none font-mono",spellCheck:!1,placeholder:"Enter URL or search…"}),f!==j&&/* @__PURE__ */m("button",{type:"button",onClick:()=>C(f),className:"px-2 text-2xs text-gray-400 hover:text-gray-700",title:"Reset to current URL",children:"×"})]})}),
|
|
13
|
-
/* @__PURE__ */m("button",{"data-bookmark-popover":!0,onClick:()=>O?B(L.findIndex(e=>e.url===f)):void P(v(f)),className:V+" "+(O?"text-yellow-500":""),title:O?"Remove bookmark":"Add bookmark",children:/* @__PURE__ */m(a,{name:"star",className:"h-4 w-4",fill:O?"currentColor":"none",strokeWidth:1.5})}),
|
|
14
|
-
/* @__PURE__ */m("button",{onClick:Q,className:V,title:"Open in new tab",children:/* @__PURE__ */m(a,{name:"external",className:"h-4 w-4",strokeWidth:1.5})}),
|
|
15
|
-
/* @__PURE__ */m("button",{onClick:()=>U(e=>!e),className:V,title:"Embedding help",children:/* @__PURE__ */m(a,{name:"help",className:"h-4 w-4",strokeWidth:1.5})})]}),null!==K&&/* @__PURE__ */c("div",{"data-bookmark-popover":!0,className:"absolute right-3 top-12 z-30 w-72 bg-white border border-gray-200 rounded-md shadow-lg p-3",children:[
|
|
16
|
-
/* @__PURE__ */m("div",{className:"text-2xs font-semibold uppercase tracking-wide text-gray-500 mb-1",children:"Bookmark this page"}),
|
|
17
|
-
/* @__PURE__ */m("div",{className:"text-2xs text-gray-400 truncate mb-2 font-mono",title:f,children:f}),
|
|
18
|
-
/* @__PURE__ */m("input",{ref:H,type:"text",value:K,onChange:e=>P(e.target.value),onKeyDown:e=>{"Enter"===e.key?A():"Escape"===e.key&&P(null)},placeholder:"Name",className:"w-full text-sm px-2 h-8 border border-gray-300 rounded focus:outline-none focus:border-blue-400 focus:ring-1 focus:ring-blue-200"}),
|
|
19
|
-
/* @__PURE__ */c("div",{className:"flex justify-end gap-1 mt-2",children:[
|
|
20
|
-
/* @__PURE__ */m("button",{onClick:()=>P(null),className:"px-2 py-1 text-xs text-gray-600 hover:bg-gray-100 rounded",children:"Cancel"}),
|
|
21
|
-
/* @__PURE__ */m("button",{onClick:A,disabled:!K.trim(),className:"px-2 py-1 text-xs bg-blue-500 text-white rounded hover:bg-blue-600 disabled:opacity-40",children:"Save"})]})]}),
|
|
22
|
-
/* @__PURE__ */c("div",{className:"flex items-center gap-0.5 px-2 py-1 border-b border-gray-200 bg-white shrink-0 overflow-x-auto",children:[0===L.length&&/* @__PURE__ */m("span",{className:"text-2xs text-gray-400 italic px-2",children:"No bookmarks yet — star the address bar to add one."}),L.map((e,t)=>/* @__PURE__ */c("button",{onClick:()=>M(e.url),onContextMenu:async o=>{o.preventDefault();await n({title:"Remove bookmark",message:`"${e.label}" will be removed from your bookmarks.`,confirmLabel:"Remove",variant:"danger"})&&B(t)},className:"flex items-center gap-2 px-2 py-0.5 rounded text-xs text-gray-700 hover:bg-gray-100 whitespace-nowrap",title:`${e.url}\n(right-click to remove)`,children:[
|
|
23
|
-
/* @__PURE__ */m("img",{src:`https://icons.duckduckgo.com/ip3/${new URL(e.url).hostname}.ico`,alt:"",className:"h-3.5 w-3.5",onError:e=>{e.target.style.visibility="hidden"}}),e.label]},t)),
|
|
24
|
-
/* @__PURE__ */m("div",{className:"flex-1"}),
|
|
25
|
-
/* @__PURE__ */m("button",{onClick:()=>{b(f);try{localStorage.setItem(h,f)}catch{}},className:"px-2 py-0.5 text-2xs text-gray-500 hover:text-gray-800",title:"Set current page as homepage",children:"Set as home"})]}),
|
|
26
|
-
/* @__PURE__ */m("div",{className:"flex-1 relative min-h-0 bg-gray-50",children:/* @__PURE__ */m(N,{url:f,iframeKey:E,iframeRef:J,openExternal:Q,showHelp:G,dismissHelp:()=>U(!1)})})]})}function v(e){try{return new URL(e).hostname.replace(/^www\./,"")}catch{return e}}function N({url:e,iframeKey:t,iframeRef:o,openExternal:r,showHelp:n,dismissHelp:s}){const[d,h]=l(!1);i(()=>{h(!1)},[e]);return function(e){try{const t=new URL(e).hostname.toLowerCase();return f.some(e=>t===e||t.endsWith("."+e))}catch{return!1}}(e)&&!d?/* @__PURE__ */m("div",{className:"absolute inset-0 flex items-center justify-center bg-white p-8",children:/* @__PURE__ */c("div",{className:"max-w-md text-center",children:[
|
|
27
|
-
/* @__PURE__ */m(a,{name:"no-symbol",className:"h-14 w-14 mx-auto text-gray-300 mb-3",strokeWidth:1.2}),
|
|
28
|
-
/* @__PURE__ */c("h3",{className:"text-base font-semibold text-gray-800 mb-1",children:[v(e)," can't be embedded"]}),
|
|
29
|
-
/* @__PURE__ */c("p",{className:"text-sm text-gray-500 mb-4",children:["This site sends an ",
|
|
30
|
-
/* @__PURE__ */m("span",{className:"font-mono text-xs",children:"X-Frame-Options"})," ","or ",
|
|
31
|
-
/* @__PURE__ */m("span",{className:"font-mono text-xs",children:"Content-Security-Policy"})," header that refuses iframe embedding. The browser blocks the load before our app can do anything about it."]}),
|
|
32
|
-
/* @__PURE__ */c("div",{className:"flex flex-col items-center gap-2",children:[
|
|
33
|
-
/* @__PURE__ */c("button",{onClick:r,className:"px-4 py-2 bg-blue-500 text-white text-sm rounded hover:bg-blue-600 inline-flex items-center gap-2",children:[
|
|
34
|
-
/* @__PURE__ */m(a,{name:"external",className:"h-4 w-4",strokeWidth:1.5}),"Open in a new tab"]}),
|
|
35
|
-
/* @__PURE__ */m("button",{onClick:()=>h(!0),className:"text-xs text-gray-500 hover:text-gray-800 underline",children:"Try loading it here anyway"})]})]})}):/* @__PURE__ */c(u,{children:[
|
|
36
|
-
/* @__PURE__ */m("iframe",{ref:o,src:e,className:"absolute inset-0 w-full h-full bg-white",sandbox:"allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-modals",referrerPolicy:"no-referrer-when-downgrade"},t+e),n&&/* @__PURE__ */c("div",{className:"absolute top-2 right-2 max-w-sm bg-white border border-gray-200 rounded-md shadow-lg p-3 text-xs text-gray-700 z-10",children:[
|
|
37
|
-
/* @__PURE__ */m("div",{className:"font-medium text-gray-900 mb-1",children:"Why is this page blank?"}),
|
|
38
|
-
/* @__PURE__ */c("p",{className:"mb-2",children:["Most major sites (Google, GitHub, banks, news) refuse to be embedded in an iframe via ",
|
|
39
|
-
/* @__PURE__ */m("span",{className:"font-mono",children:"X-Frame-Options"})," or Content Security Policy. There's no workaround — the browser blocks the load before our app can do anything."]}),
|
|
40
|
-
/* @__PURE__ */c("p",{children:["Hit the ",
|
|
41
|
-
/* @__PURE__ */m("span",{className:"font-medium",children:"↗"})," button to open the page in a real new tab. Sites that ",
|
|
42
|
-
/* @__PURE__ */m("em",{children:"do"})," allow embedding (Wikipedia, DevDocs, your own apps) work fine in here."]}),
|
|
43
|
-
/* @__PURE__ */m("button",{onClick:s,className:"mt-2 text-2xs text-blue-600 hover:underline",children:"Got it"})]})]})}export{y as default};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import{loadAppearance as e,WidgetSettingsModal as t}from"./chunk-U4BMS5EV.js";import{useWidgetSettings as n}from"./chunk-KJY57QPT.js";import"./chunk-CY5N5OA3.js";import"./chunk-AW7TOB6N.js";import"./chunk-KNUR2UEG.js";import"./chunk-JDCM2VHG.js";import"./chunk-BMPBVI7P.js";import"./chunk-5A7MWTXX.js";import"./chunk-Y53KNQKL.js";import"./chunk-6WWAQC5V.js";import"./chunk-EGDJEY4K.js";import"./chunk-GNPTNAZH.js";import"./chunk-KC3EX26K.js";import"./chunk-4AJRHTTB.js";import"./chunk-VWGWZY7A.js";import"./chunk-PKXQDCNR.js";import"./chunk-UGTRSRIW.js";import"./chunk-ET2EF5CI.js";import"./chunk-CDAJKLGL.js";import"./chunk-DXTKNHWG.js";import"./chunk-QR4RM7PO.js";import"./chunk-5QFPTDQF.js";import"./chunk-D323R2FT.js";import"./chunk-4IU5BSVE.js";import"./chunk-K7U4RWXJ.js";import"./chunk-VH6GB73Q.js";import{Icon as r}from"./chunk-FSPFV4MI.js";import"./chunk-J75ZT2JQ.js";import"./chunk-Q5MD3VY6.js";import"./chunk-MRJKZWWV.js";import"./chunk-6KO5VTL7.js";import"./chunk-22S6LG6D.js";import"./chunk-PGN5ME7B.js";import"./chunk-62LW225J.js";import"./chunk-GLUJS42B.js";import"./chunk-D65T4H6J.js";import"./chunk-DTJRIWFR.js";import"./chunk-TWVUQUUD.js";import"./chunk-E6UCGCOC.js";import"./chunk-C3QOHMR6.js";import{useState as c,useRef as i,useCallback as l,useEffect as o}from"react";import{jsxs as s,Fragment as a,jsx as u}from"react/jsx-runtime";var h="calc_appearance";function m(){const[m,k]=c("0"),[p,d]=c(null),[b,g]=c(null),[N,j]=c(!1),[y,x]=c(""),[C,f]=c([]),[v,$]=c(!1),[T,E]=c(()=>e(h)),[W,w]=c(!1),[D,J]=c(T),R=i(null);n(l(()=>{J({...T}),w(!0)},[T]));const S=l(e=>{x(""),k(t=>N||"0"===t?(j(!1),"."===e?"0.":e):"."===e&&t.includes(".")?t:t+e)},[N]),G=l(()=>{k("0"),d(null),g(null),j(!1)},[]),K=l((e,t,n)=>{switch(n){case"+":return e+t;case"-":return e-t;case"×":return e*t;case"÷":return 0===t?0:e/t;default:return t}},[]),A=l(e=>{const t=parseFloat(m);if(null!==p&&b&&!N){const e=K(p,t,b);k(String(e)),d(e),f(n=>[`${p} ${b} ${t} = ${e}`,...n].slice(0,20))}else d(t);g(e),j(!0)},[m,p,b,N,K]),B=l(()=>{if(null===p||!b)return;const e=parseFloat(m),t=K(p,e,b),n=`${p} ${b} ${e} =`;f(e=>[`${n} ${t}`,...e].slice(0,20)),x(n),k(String(t)),d(null),g(null),j(!0)},[m,p,b,K]),F=l(()=>{k(e=>String(parseFloat(e)/100))},[]),Q=l(()=>{k(e=>e.startsWith("-")?e.slice(1):"0"===e?e:"-"+e)},[]);o(()=>{const e=e=>{const t=e.target.tagName;"INPUT"!==t&&"TEXTAREA"!==t&&"SELECT"!==t&&(e.key>="0"&&e.key<="9"?S(e.key):"."===e.key?S("."):"+"===e.key?A("+"):"-"===e.key?A("-"):"*"===e.key?A("×"):"/"===e.key?(e.preventDefault(),A("÷")):"Enter"===e.key||"="===e.key?("Enter"===e.key&&e.target instanceof Node&&R.current?.contains(e.target)&&e.preventDefault(),B()):"Escape"===e.key?G():"Backspace"===e.key?k(e=>e.length>1?e.slice(0,-1):"0"):"%"===e.key&&F())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[S,A,B,G,F]);const U="flex items-center justify-center rounded-lg text-sm font-medium transition-colors",V=`${U} bg-white border border-gray-200 text-gray-900 hover:bg-gray-50 active:bg-gray-100`,M=`${U} bg-blue-50 border border-blue-200 text-blue-700 hover:bg-blue-100 active:bg-blue-200`,L=`${U} bg-gray-100 border border-gray-200 text-gray-600 hover:bg-gray-200 active:bg-gray-300`,P=`${U} bg-blue-600 text-white hover:bg-blue-700 active:bg-blue-800`;/* @__PURE__ */
|
|
2
|
-
return s(a,{children:[
|
|
3
|
-
/* @__PURE__ */s("div",{ref:R,className:"flex flex-col h-full",style:{opacity:T.activeOpacity/100,backdropFilter:T.activeBlur>0?`blur(${T.activeBlur}px)`:void 0},children:[
|
|
4
|
-
/* @__PURE__ */s("div",{className:"bg-slate-200 rounded-t-lg px-4 py-2 group/display relative flex flex-col justify-end min-h-[120px] border-b border-slate-300",children:[
|
|
5
|
-
/* @__PURE__ */u("div",{className:"flex flex-col justify-end flex-1 overflow-hidden",children:C.slice(0,3).reverse().map((e,t)=>/* @__PURE__ */u("div",{className:"text-2xs text-slate-400 text-right font-mono truncate",children:e},t))}),(y||b&&null!==p)&&/* @__PURE__ */u("div",{className:"text-base text-slate-600 text-right font-mono",children:y||`${p} ${b} ${N?"":m}`}),
|
|
6
|
-
/* @__PURE__ */s("div",{className:"flex items-center gap-2",children:[
|
|
7
|
-
/* @__PURE__ */u("button",{onClick:()=>{navigator.clipboard.writeText(m),$(!0),setTimeout(()=>$(!1),1200)},title:"Copy result",className:"shrink-0 text-slate-300 hover:text-slate-500 transition-colors opacity-0 group-hover/display:opacity-100",children:/* @__PURE__ */u(r,v?{name:"check",className:"h-5 w-5 text-green-500",strokeWidth:2}:{name:"copy",className:"h-5 w-5",strokeWidth:2})}),
|
|
8
|
-
/* @__PURE__ */u("div",{className:"text-right text-4xl font-mono font-bold text-slate-800 truncate flex-1",children:(e=>{const t=parseFloat(e);return isNaN(t)||e.endsWith(".")||e.endsWith(".0")||Math.abs(t)<1e15&&e.length<16?e:t.toExponential(6)})(m)})]})]}),
|
|
9
|
-
/* @__PURE__ */s("div",{className:"grid grid-cols-4 grid-rows-5 gap-2 flex-1 min-h-0 p-2",children:[
|
|
10
|
-
/* @__PURE__ */u("button",{onClick:G,className:L,children:"AC"}),
|
|
11
|
-
/* @__PURE__ */u("button",{onClick:Q,className:L,children:"+/−"}),
|
|
12
|
-
/* @__PURE__ */u("button",{onClick:F,className:L,children:"%"}),
|
|
13
|
-
/* @__PURE__ */u("button",{onClick:()=>A("÷"),className:`${M} ${"÷"===b?"ring-2 ring-blue-400":""}`,children:"÷"}),
|
|
14
|
-
/* @__PURE__ */u("button",{onClick:()=>S("7"),className:V,children:"7"}),
|
|
15
|
-
/* @__PURE__ */u("button",{onClick:()=>S("8"),className:V,children:"8"}),
|
|
16
|
-
/* @__PURE__ */u("button",{onClick:()=>S("9"),className:V,children:"9"}),
|
|
17
|
-
/* @__PURE__ */u("button",{onClick:()=>A("×"),className:`${M} ${"×"===b?"ring-2 ring-blue-400":""}`,children:"×"}),
|
|
18
|
-
/* @__PURE__ */u("button",{onClick:()=>S("4"),className:V,children:"4"}),
|
|
19
|
-
/* @__PURE__ */u("button",{onClick:()=>S("5"),className:V,children:"5"}),
|
|
20
|
-
/* @__PURE__ */u("button",{onClick:()=>S("6"),className:V,children:"6"}),
|
|
21
|
-
/* @__PURE__ */u("button",{onClick:()=>A("-"),className:`${M} ${"-"===b?"ring-2 ring-blue-400":""}`,children:"−"}),
|
|
22
|
-
/* @__PURE__ */u("button",{onClick:()=>S("1"),className:V,children:"1"}),
|
|
23
|
-
/* @__PURE__ */u("button",{onClick:()=>S("2"),className:V,children:"2"}),
|
|
24
|
-
/* @__PURE__ */u("button",{onClick:()=>S("3"),className:V,children:"3"}),
|
|
25
|
-
/* @__PURE__ */u("button",{onClick:()=>A("+"),className:`${M} ${"+"===b?"ring-2 ring-blue-400":""}`,children:"+"}),
|
|
26
|
-
/* @__PURE__ */u("button",{onClick:()=>S("0"),className:`${V} col-span-2`,children:"0"}),
|
|
27
|
-
/* @__PURE__ */u("button",{onClick:()=>S("."),className:V,children:"."}),
|
|
28
|
-
/* @__PURE__ */u("button",{onClick:B,className:P,children:"="})]})]}),
|
|
29
|
-
/* @__PURE__ */u(t,{open:W,onClose:()=>w(!1),title:"Calculator Settings",appearance:D,onAppearanceChange:J,onSave:()=>{E(D),localStorage.setItem(h,JSON.stringify(D)),w(!1)}})]})}export{m as default};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import{loadAppearance as t,WidgetSettingsModal as e}from"./chunk-U4BMS5EV.js";import{useWidgetSettings as r}from"./chunk-KJY57QPT.js";import"./chunk-CY5N5OA3.js";import"./chunk-AW7TOB6N.js";import"./chunk-KNUR2UEG.js";import"./chunk-JDCM2VHG.js";import"./chunk-BMPBVI7P.js";import"./chunk-5A7MWTXX.js";import"./chunk-Y53KNQKL.js";import"./chunk-6WWAQC5V.js";import"./chunk-EGDJEY4K.js";import"./chunk-GNPTNAZH.js";import"./chunk-KC3EX26K.js";import"./chunk-4AJRHTTB.js";import"./chunk-VWGWZY7A.js";import"./chunk-PKXQDCNR.js";import"./chunk-UGTRSRIW.js";import"./chunk-ET2EF5CI.js";import"./chunk-CDAJKLGL.js";import"./chunk-DXTKNHWG.js";import"./chunk-QR4RM7PO.js";import"./chunk-5QFPTDQF.js";import"./chunk-D323R2FT.js";import"./chunk-4IU5BSVE.js";import"./chunk-K7U4RWXJ.js";import"./chunk-VH6GB73Q.js";import"./chunk-FSPFV4MI.js";import"./chunk-J75ZT2JQ.js";import{LoadingSpinner as n}from"./chunk-Q5MD3VY6.js";import"./chunk-MRJKZWWV.js";import"./chunk-6KO5VTL7.js";import"./chunk-22S6LG6D.js";import"./chunk-PGN5ME7B.js";import"./chunk-62LW225J.js";import"./chunk-GLUJS42B.js";import"./chunk-D65T4H6J.js";import"./chunk-DTJRIWFR.js";import"./chunk-TWVUQUUD.js";import"./chunk-E6UCGCOC.js";import"./chunk-C3QOHMR6.js";import{useState as s,useCallback as a,useEffect as o}from"react";import{jsxs as c,Fragment as i,jsx as l}from"react/jsx-runtime";var m=["USD","CNY","AUD","GBP","EUR","JPY","CAD","THB","NZD","SGD","HKD","CHF","KRW","INR","MXN","BRL"],u=[["USD","CNY"],["USD","AUD"],["GBP","USD"],["USD","JPY"]],p="currency_pairs",h="currency_appearance",d="currency_rates_cache";function g(t){try{const e=JSON.parse(localStorage.getItem(d)||"{}")[t];if(e&&Date.now()-e.timestamp<36e5)return e.rates}catch{}return null}function k(t,e){try{const r=JSON.parse(localStorage.getItem(d)||"{}");r[t]={rates:e,timestamp:Date.now()},localStorage.setItem(d,JSON.stringify(r))}catch{}}function N(){try{const t=JSON.parse(localStorage.getItem(p)||"");if(Array.isArray(t)&&t.length)return t.slice(0,4)}catch{}return u}var j={USD:"🇺🇸",CNY:"🇨🇳",AUD:"🇦🇺",GBP:"🇬🇧",JPY:"🇯🇵",CAD:"🇨🇦",EUR:"🇪🇺",THB:"🇹🇭",NZD:"🇳🇿",SGD:"🇸🇬",HKD:"🇭🇰",CHF:"🇨🇭",KRW:"🇰🇷",INR:"🇮🇳",MXN:"🇲🇽",BRL:"🇧🇷"};function f(){const[u,d]=s(N),[f,y]=s(()=>t(h)),[x,b]=s({}),[D,S]=s(!1),[C,v]=s(!1),[J,U]=s([]),[R,B]=s(f),[G,T]=s("USD"),[A,K]=s("CNY");r(a(()=>{U([...u]),B({...f}),v(!0)},[u,f])),o(()=>{const t=[...new Set(u.map(([t])=>t))];let e=!0;return async function(){S(!0);const r={};for(const e of t){const t=g(e);if(t)r[e]=t;else try{const t=await fetch(`https://open.er-api.com/v6/latest/${e}`),n=await t.json();n.rates&&(r[e]=n.rates,k(e,n.rates))}catch{}}e&&(b(r),S(!1))}(),()=>{e=!1}},[u]);/* @__PURE__ */
|
|
2
|
-
return c(i,{children:[
|
|
3
|
-
/* @__PURE__ */l("div",{style:{backgroundColor:`rgb(var(--taskbar-bg-rgb, 243 244 246) / ${f.activeOpacity/100})`,backdropFilter:f.activeBlur>0?`blur(${f.activeBlur}px)`:void 0},children:/* @__PURE__ */c("div",{className:"px-4 py-3 space-y-1",children:[D&&/* @__PURE__ */l(n,{size:"sm",padding:"py-4",label:"Loading rates"}),u.map(([t,e],r)=>{const n=x[t]?.[e];/* @__PURE__ */
|
|
4
|
-
return c("button",{onClick:()=>{const t=u.map((t,e)=>e===r?[t[1],t[0]]:t);d(t),localStorage.setItem(p,JSON.stringify(t))},className:"flex items-center justify-between px-2 py-2 border-b border-gray-200 last:border-0 w-full hover:bg-gray-100 rounded transition-colors cursor-pointer",children:[
|
|
5
|
-
/* @__PURE__ */c("div",{className:"flex items-center gap-2",children:[
|
|
6
|
-
/* @__PURE__ */l("span",{className:"text-base",children:j[t]||""}),
|
|
7
|
-
/* @__PURE__ */l("span",{className:"text-sm font-semibold text-gray-700",children:t}),
|
|
8
|
-
/* @__PURE__ */l("svg",{className:"h-3 w-3 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:/* @__PURE__ */l("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4"})}),
|
|
9
|
-
/* @__PURE__ */l("span",{className:"text-base",children:j[e]||""}),
|
|
10
|
-
/* @__PURE__ */l("span",{className:"text-sm font-semibold text-gray-700",children:e})]}),
|
|
11
|
-
/* @__PURE__ */l("div",{className:"text-base font-mono font-semibold text-gray-900 tabular-nums",children:null!=n?n.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:4}):"—"})]},`${t}-${e}-${r}`)})]})}),
|
|
12
|
-
/* @__PURE__ */l(e,{open:C,onClose:()=>v(!1),title:"Currency Settings",appearance:R,onAppearanceChange:B,onSave:()=>{if(0===J.length)return;const t=J.slice(0,4);d(t),y(R),localStorage.setItem(p,JSON.stringify(t)),localStorage.setItem(h,JSON.stringify(R)),v(!1)},children:/* @__PURE__ */c("div",{children:[
|
|
13
|
-
/* @__PURE__ */c("h3",{className:"text-sm font-semibold text-gray-700 mb-2",children:["Currency Pairs ",
|
|
14
|
-
/* @__PURE__ */c("span",{className:"text-2xs font-normal text-gray-400",children:["(",J.length,"/",4,")"]})]}),
|
|
15
|
-
/* @__PURE__ */l("div",{className:"space-y-1 mb-2",children:J.map(([t,e],r)=>/* @__PURE__ */c("div",{className:"flex items-center justify-between py-1 px-2 bg-gray-50 rounded",children:[
|
|
16
|
-
/* @__PURE__ */c("span",{className:"text-sm",children:[j[t]||""," ",t," → ",j[e]||""," ",e]}),
|
|
17
|
-
/* @__PURE__ */l("button",{onClick:()=>U(t=>t.filter((t,e)=>e!==r)),className:"text-red-400 hover:text-red-600",children:"×"})]},r))}),J.length<4?/* @__PURE__ */c("div",{className:"flex items-center gap-2",children:[
|
|
18
|
-
/* @__PURE__ */l("select",{value:G,onChange:t=>T(t.target.value),className:"bg-gray-50 border border-gray-200 rounded px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-blue-500",children:m.map(t=>/* @__PURE__ */l("option",{children:t},t))}),
|
|
19
|
-
/* @__PURE__ */l("span",{className:"text-gray-400",children:"→"}),
|
|
20
|
-
/* @__PURE__ */l("select",{value:A,onChange:t=>K(t.target.value),className:"bg-gray-50 border border-gray-200 rounded px-2 py-1 text-sm focus:outline-none focus:ring-1 focus:ring-blue-500",children:m.map(t=>/* @__PURE__ */l("option",{children:t},t))}),
|
|
21
|
-
/* @__PURE__ */l("button",{onClick:()=>{G!==A&&J.length<4&&U(t=>[...t,[G,A]])},className:"text-sm font-medium text-blue-600 hover:text-blue-800 px-2",children:"+ Add"})]}):/* @__PURE__ */c("p",{className:"text-2xs text-gray-400 italic",children:["Max ",4," pairs — remove one to add another."]})]})})]})}export{f as default};
|