efficient-shell 6.4.0 → 7.10.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 (90) hide show
  1. package/README.md +88 -22
  2. package/dist/Browser-VCRHLL3W.js +43 -0
  3. package/dist/Calculator-HFF54RNH.js +29 -0
  4. package/dist/ConfirmDialog-6LAVAGDE.js +1 -0
  5. package/dist/CurrencyConverter-SAIDT4WN.js +21 -0
  6. package/dist/{Documents-ADFEHEUW.js → Documents-OWPQE6D6.js} +27 -27
  7. package/dist/Files-UCNAQWGM.js +87 -0
  8. package/dist/Notepad-NNYMEU7M.js +25 -0
  9. package/dist/PdfViewer-PHABUM7K.js +1 -0
  10. package/dist/PomodoroTimer-AV3YE2WJ.js +91 -0
  11. package/dist/Preview-PWFREL75.js +182 -0
  12. package/dist/Sidebar-3IB3YIWC.js +44 -0
  13. package/dist/Spreadsheet-F5BXANOO.js +37 -0
  14. package/dist/Stock-EP2SB76N.js +16 -0
  15. package/dist/{Weather-BLO354GM.js → Weather-62FA6T6O.js} +35 -35
  16. package/dist/WorldClock-C3A6PZYM.js +32 -0
  17. package/dist/apps/index.js +1 -1
  18. package/dist/bin/ui-check.js +1 -1
  19. package/dist/brand.css +1 -1
  20. package/dist/{chunk-YX2IMURA.js → chunk-7BX3JQBP.js} +10 -10
  21. package/dist/{chunk-MORDXCV6.js → chunk-7HLTPMQV.js} +1 -1
  22. package/dist/{chunk-4JZZLUGG.js → chunk-B4PGVDB6.js} +1 -1
  23. package/dist/chunk-B4XGJA3N.js +1 -0
  24. package/dist/{chunk-7PGHRG6J.js → chunk-BQ7GR7H6.js} +11 -11
  25. package/dist/{chunk-R5VRLW5Z.js → chunk-BXW5WAEX.js} +1 -1
  26. package/dist/{chunk-SK5DL6JX.js → chunk-FTJ2G343.js} +14 -14
  27. package/dist/{chunk-XO2AMGVU.js → chunk-GGSG7HSD.js} +1 -1
  28. package/dist/{chunk-ZEIKSMFR.js → chunk-ICN533ML.js} +8 -8
  29. package/dist/{chunk-I534M65N.js → chunk-ITCBLL72.js} +2 -2
  30. package/dist/{chunk-GWDVD3VQ.js → chunk-JQRIAZDP.js} +23 -23
  31. package/dist/{chunk-WOEFPBQF.js → chunk-KBOYLXAT.js} +1 -1
  32. package/dist/chunk-KSLOSQKN.js +29 -0
  33. package/dist/{chunk-UUYPUKP7.js → chunk-M4TRVJTO.js} +1 -1
  34. package/dist/{chunk-CXJQ42XT.js → chunk-MFDZYZZX.js} +15 -15
  35. package/dist/chunk-NGUH7T5V.js +1 -0
  36. package/dist/chunk-QRCDQPJA.js +1 -0
  37. package/dist/{chunk-5K76RQML.js → chunk-RBKIYZ7H.js} +1 -1
  38. package/dist/{chunk-GJ37JCC2.js → chunk-RUHUTZN4.js} +1 -1
  39. package/dist/{chunk-I2H2CKID.js → chunk-SCJT2XXU.js} +1 -1
  40. package/dist/{chunk-QJHWLDEN.js → chunk-THM35LAN.js} +71 -71
  41. package/dist/{chunk-5LUN632W.js → chunk-UJL5J7GX.js} +4 -4
  42. package/dist/chunk-UZJ6RYMF.js +9 -0
  43. package/dist/chunk-W6BQVATM.js +1016 -0
  44. package/dist/{chunk-VR6TR575.js → chunk-XN7CAWSZ.js} +3 -3
  45. package/dist/{chunk-IHZL3GJU.js → chunk-Y56GRZ2Q.js} +1 -1
  46. package/dist/chunk-YMWCZKUN.js +12 -0
  47. package/dist/{chunk-Q5O5UMJY.js → chunk-Z2TTHY7G.js} +2 -2
  48. package/dist/{chunk-2SSRFEOZ.js → chunk-ZGUQLVY4.js} +5 -3
  49. package/dist/{chunk-HQLAISFX.js → chunk-ZRU5F2XT.js} +4 -4
  50. package/dist/file-intake/index.js +1 -1
  51. package/dist/i18n/index.d.ts +1 -1
  52. package/dist/icons/efficient-looks.js +20 -10
  53. package/dist/icons/efficient.d.ts +7 -5
  54. package/dist/icons/efficient.js +51 -48
  55. package/dist/icons/index.d.ts +1 -1
  56. package/dist/icons/index.js +1 -1
  57. package/dist/{index-D5bms_uA.d.ts → index-Cevszdp8.d.ts} +296 -90
  58. package/dist/index.d.ts +3 -3
  59. package/dist/index.js +632 -639
  60. package/dist/locales/zh-Hans.d.ts +1 -1
  61. package/dist/locales/zh-Hans.js +1 -1
  62. package/dist/map/index.js +10 -10
  63. package/dist/markdown/index.js +4 -4
  64. package/dist/page-tabs/index.js +5 -5
  65. package/dist/pdf/index.js +1 -1
  66. package/dist/{strings-fYzxZPn4.d.ts → strings-BQtq9300.d.ts} +17 -2
  67. package/dist/telemetry/index.js +1 -1
  68. package/dist/ui/index.d.ts +2 -2
  69. package/dist/ui/index.js +1 -1
  70. package/dist/ui.css +50 -54
  71. package/package.json +1 -1
  72. package/dist/Browser-USPZWDYH.js +0 -43
  73. package/dist/Calculator-FP5HUWCW.js +0 -29
  74. package/dist/ConfirmDialog-3TIHKJRT.js +0 -1
  75. package/dist/CurrencyConverter-XD5LYOCD.js +0 -21
  76. package/dist/Files-BVUVRNC5.js +0 -87
  77. package/dist/Notepad-WJI5ODGS.js +0 -25
  78. package/dist/PdfViewer-226I3LSD.js +0 -1
  79. package/dist/PomodoroTimer-GEMQHIPJ.js +0 -91
  80. package/dist/Preview-HNSEYNZL.js +0 -182
  81. package/dist/Sidebar-PVHZPNIY.js +0 -44
  82. package/dist/Spreadsheet-6Z5ACGTT.js +0 -37
  83. package/dist/Stock-X3LIU4ZX.js +0 -16
  84. package/dist/WorldClock-BAH7QFRG.js +0 -32
  85. package/dist/chunk-5MDQNFOG.js +0 -9
  86. package/dist/chunk-DBXZS7OA.js +0 -29
  87. package/dist/chunk-K6DKX55N.js +0 -1
  88. package/dist/chunk-PFKMIPZH.js +0 -1028
  89. package/dist/chunk-S3LGKIZ3.js +0 -12
  90. package/dist/chunk-SBF5A6XV.js +0 -1
@@ -1,9 +1,9 @@
1
- export { A as ALT, b as ALT_SHIFT_D, c as ALT_SHIFT_E, d as ALT_SHIFT_N, e as APP_UPDATE_POLL_MS, f as Accordion, g as AccordionItem, h as AccordionProps, i as Align, j as AlignmentGrid, k as AlignmentGridProps, l as AlignmentPoint, m as AngleScale, n as AppUpdateBanner, o as AppUpdateBannerProps, p as AttachButton, q as AttachButtonProps, r as AttachmentDropZone, s as AttachmentDropZoneProps, t as AttachmentList, u as AttachmentListProps, v as AuthScreen, w as AuthScreenProps, x as Avatar, y as AvatarGroup, z as AvatarGroupProps, B as AvatarProps, D as AvatarSize, E as AvatarStatus, F as BORDER_WIDTHS, G as BackgroundVariant, H as BandScale, I as Banner, J as BannerEmphasis, K as BannerProps, L as BannerTone, M as BarChart, N as BarChartProps, O as BorderRole, Q as BoxPlotBox, R as BoxPlotChart, T as BoxPlotChartProps, U as BrandAssetEditor, V as BrandAssetEditorProps, W as BrandAssetPreview, X as BrandMark, Y as BrandMarkProps, Z as BrandMarkSlot, _ as BrandMarkSurface, $ as BrandMarkTreatment, a0 as BreadcrumbItem, a1 as Breadcrumbs, a2 as BreadcrumbsProps, a3 as BudgetBar, a4 as BudgetBarProps, a5 as BudgetState, a6 as Button, a7 as ButtonClassesOptions, a8 as ButtonProps, a9 as ButtonSize, aa as ButtonVariant, ab as CHART_INK, ac as CMD_A, ad as CMD_DOT, ae as CMD_ENTER, af as CMD_K, ag as CMD_S, ah as COLUMN_COUNT_MAX, ai as COLUMN_COUNT_WIDTHS, aj as COLUMN_SHARES_EQUAL, ak as COLUMN_SHARE_MIN, al as CONTROL_HEIGHTS, am as CORNERS, an as Calendar, ao as CalendarMode, ap as CalendarProps, aq as Candle, ar as CandlestickChart, as as CandlestickChartProps, at as Card, au as CardPadding, av as CardProps, aw as CardTone, ax as CartesianPlot, ay as CartesianPlotProps, az as CellStyle, aA as ChartBackgroundVariant, aB as ChartBrush, aC as ChartBrushProps, aD as ChartCurve, aE as ChartDefs, aF as ChartDefsProps, aG as ChartDot, aH as ChartDotProps, aI as ChartDotVariant, aJ as ChartFillVariant, aK as ChartFrame, aL as ChartFrameProps, aM as ChartHighlightProvider, aN as ChartLegendEntry, aO as ChartLegendSwatch, aP as ChartRange, aQ as ChartReferenceLine, aR as ChartRevealDirection, aS as ChartSkeleton, aT as ChartSkeletonProps, aU as ChartStatusTone, aV as ChartStrokeVariant, aW as ChartTooltip, aX as ChartTooltipProps, aY as ChartTooltipRow, aZ as ChatTemplate, a_ as Checkbox, a$ as CheckboxProps, b0 as CheckoutTemplate, b1 as ChordChart, b2 as ChordChartProps, b3 as ColorPicker, b4 as ColorPickerPanel, b5 as ColorPickerPanelProps, b6 as ColorPickerProps, b7 as ColorPreset, b8 as ColorSwatch, b9 as ColorSwatchProps, ba as ColorSwatchSize, bb as ColoredBadge, bc as ColoredBadgeProps, bd as ColumnChart, be as ColumnChartProps, C as ColumnDef, bf as ColumnSeries, bg as ColumnShares, bh as ComposerAttachments, bi as ComposerAttachmentsProps, bj as ConfirmProvider, bk as ContainerFillChart, bl as ContainerFillChartProps, bm as ContainerFillItem, bn as ContextMenu, bo as ContextMenuPoint, bp as ContextMenuProps, bq as ContextMenuState, br as ControlSize, bs as CornerOption, bt as Corners, bu as CornersInput, bv as CornersInputProps, bw as CountBadge, bx as CountBadgeProps, by as CountBadgeTone, bz as Curve, bA as DAY_MS, bB as DashboardTemplate, bC as DataTable, bD as DataTableColumn, bE as DataTableColumnGroup, bF as DataTableHeader, bG as DataTablePage, bH as DataTableProps, bI as DataTableRowLink, bJ as DataTableRowProps, bK as DatePicker, bL as DatePickerProps, bM as DateRangePicker, bN as DateRangePickerProps, bO as DateTimePicker, bP as DateTimePickerProps, bQ as DescriptionColumns, bR as DescriptionItem, bS as DescriptionList, bT as DescriptionListProps, bU as Dialog, bV as DialogProps, bW as DialogSize, bX as DisplayChipItem, bY as DisplayChips, bZ as DisplayChipsProps, b_ as Divider, b$ as DividerProps, c0 as DividerSpacing, c1 as DonutChart, c2 as DonutChartProps, c3 as DonutSegment, c4 as Drawer, c5 as DrawerProps, c6 as DrawerSide, c7 as DrawerSize, c8 as DropdownMenu, c9 as DropdownMenuAlign, ca as DropdownMenuCheckboxItem, cb as DropdownMenuDividerItem, cc as DropdownMenuEntry, cd as DropdownMenuItem, ce as DropdownMenuLabelItem, cf as DropdownMenuLinkItem, cg as DropdownMenuProps, ch as DropdownMenuRadioItem, ci as DropdownMenuSide, cj as DropdownPositionOptions, ck as ELEVATION_LEVELS, cl as ENGLISH, cm as ENTER, cn as EditableGrid, co as EditableGridProps, cp as ElevationLevel, cq as EmailTemplate, cr as EmptyState, cs as EmptyStateProps, ct as EmptyValue, cu as EmptyValueProps, cv as ErrorBoundary, cw as ErrorBoundaryProps, cx as ErrorPage, cy as ErrorPageProps, cz as FONT_WEIGHTS, cA as FileIntake, cB as FilePicker, cC as FilePickerProps, cD as FillVariant, cE as FontWeightRole, cF as FormError, cG as FormErrorSummary, cH as FormErrorSummaryProps, cI as FormField, cJ as FormFieldProps, cK as FormLayoutPage, cL as FunnelChart, cM as FunnelChartProps, cN as FunnelStage, cO as GLASS_DIVIDER, cQ as GROUP_COLORS, cR as GROUP_COLORS_SOLID, cS as GalleryTemplate, cT as Gap, cU as GlassOptions, cV as GlobalSearch, cW as GlobalSearchProps, cX as Grid, cY as GridCols, cZ as GridColumn, c_ as GridProps, c$ as HeatmapChart, d0 as HeatmapChartProps, d1 as HelpCenter, d2 as HelpCenterDoc, d3 as HelpCenterProps, d4 as HexInput, d5 as HistogramBin, d6 as HistogramChart, d7 as HistogramChartProps, d8 as Hsv, d9 as INPUT_BASE, da as INPUT_SIZES, db as IconButton, dc as IconButtonClassesOptions, dd as IconButtonProps, de as IconRail, df as IconRailButton, dg as IconRailButtonProps, dh as IconRailLabels, di as IconRailLabelsShown, dj as IconRailOrientation, dk as IconRailProps, dl as ImageFocusPoint, dm as ImageFocusPointProps, dn as Inline, dp as InlineProps, dq as Input, dr as InputNumber, ds as InputNumberProps, dt as InputProps, du as InputSize, dv as Justify, dw as Kanban, dx as KanbanColumn, dy as KanbanProps, dz as Kbd, dA as KbdProps, dB as KbdSize, dC as KbdTone, dD as Label, dE as LabelClassesOptions, dF as LabelProps, dG as LadderScale, dH as LanguagePanel, dI as LanguagePanelProps, dJ as LanguageSelect, dK as LanguageSelectProps, dL as LineChart, dM as LineChartProps, dN as LineChartSeries, dO as LinearScale, dP as LinkFilter, dQ as LinkFilterField, dR as LinkKindChoice, dS as LinkOption, dT as LinkOptionGroup, dU as LinkPicker, dV as LinkPickerFieldProps, dW as LinkPickerProps, dX as LinkPickerWindowProps, dY as LinkRules, dZ as LinkTarget, d_ as ListDrop, d$ as ListFooter, e0 as ListLoadError, e1 as ListLoadErrorProps, e2 as ListMove, e3 as ListRow, e4 as ListRowProps, e5 as LoadingSpinner, e6 as LoadingSpinnerProps, e7 as MAX_FRACTION_DIGITS, e8 as MENU_MAX_HEIGHT, e9 as MOD, ea as MOTION, eb as MOTION_DURATIONS, ec as Markdown, ec as MarkdownLite, ed as MarkdownLiteProps, ed as MarkdownProps, ee as MediaUploadField, ef as MediaUploadFieldProps, eg as MediaUploadGrid, eh as MediaUploadGridItem, ei as MediaUploadGridProps, ej as MenuPos, ek as Meter, el as MeterProps, em as MetricBar, en as MetricBarProps, eo as Milestone, ep as MilestoneKind, eq as MilestoneTimeline, er as MilestoneTimelineProps, es as MotionSpeed, eu as NEXT_CHUNK_PATH_PREFIX, ev as NativeSelect, ew as NumericKeypad, ex as NumericKeypadProps, ey as OVERLAY_OPEN_EVENT, ez as POPUP_MAX_WIDTH, eA as POST_PRODUCTION_STATUSES, eB as PageHeader, eC as PageHeaderProps, P as PaginatedResponse, eD as Pagination, eE as PaginationProps, eF as PaperclipGlyph, eG as Paragraph, eH as ParagraphProps, eI as PieChart, eJ as PieChartProps, eK as PieSegment, eL as PlotGeometry, eM as Point, eN as Popover, eO as PopoverAlign, eP as PopoverProps, eQ as PopoverRenderProps, eR as PopoverSide, eS as PopupMenu, eT as PopupMenuDivider, eU as PopupMenuItem, eV as PopupMenuItemProps, eW as PopupMenuLabel, eX as PopupMenuProps, eY as PopupSubmenu, eZ as PopupSubmenuProps, e_ as PortalBrandingContextValue, e$ as PortalBrandingProvider, f0 as PortalBrandingProviderProps, f1 as ProductionTimeline, f2 as ProductionTimelineProps, f3 as ProductionTimelineSnapshot, f4 as ProgressItem, f5 as PublicPortal, f6 as PublicPortalBranding, f7 as RADAR_SERIES_CAP, f8 as RADIUS_ROLES, f9 as RadarAxis, fa as RadarChart, fb as RadarChartProps, fc as RadarSeries, fd as RadialBarChart, fe as RadialBarChartProps, ff as RadialBarRow, fg as Radio, fh as RadioGroup, fi as RadioGroupOption, fj as RadioGroupOrientation, fk as RadioGroupProps, fl as RadioProps, fm as RadiusRole, fn as Range, fo as RangeChart, fp as RangeChartProps, fq as RangeRow, fr as RankedBars, fs as RankedBarsProps, ft as RankedBarsRow, fu as ResizeHandle, fv as ResizeHandleOrientation, fw as ResizeHandleProps, fx as ResizeHandleSide, fy as ResizeHandleStackSide, fz as ResolvedPortalBrandAsset, fA as Result, fB as ResultProps, fC as ResultStatus, fD as RevealDirection, fE as SCATTER_SERIES_CAP, fF as SERIES_SLOT_COUNT, fG as SERIES_VARS, fH as SHELL_LANGUAGE_STORAGE_KEY, fI as SHIFT, fJ as SPACING_ROLES, fK as SPACING_SCALE, fL as STAGES, fM as STALE_CHUNK_RELOAD_COOLDOWN_MS, fN as STALE_CHUNK_RELOAD_KEY, fO as STATUS_VARS, fP as SankeyChart, fQ as SankeyChartProps, fR as SankeyLink, fS as SankeyNode, fT as ScatterChart, fU as ScatterChartProps, fV as ScatterPoint, fW as ScatterSeries, S as SearchConfig, fX as SearchListRoute, fY as SearchProvider, fZ as SearchQuickAction, f_ as SearchResponse, f$ as SearchResult, g0 as SearchableItem, g1 as SearchableOption, g2 as SearchableOptionGroup, g3 as SearchableSelect, g4 as SearchableSelectBaseProps, g5 as SearchableSelectMultipleProps, g6 as SearchableSelectProps, g7 as Segmented, g8 as SegmentedOption, g9 as SegmentedProps, ga as SegmentedSize, gb as Select, gc as SelectBaseProps, gd as SelectItem, ge as SelectMultipleProps, gf as SelectOption, gg as SelectOptionGroup, gh as SelectProps, gi as SemanticGroup, gj as SettingRow, gk as SettingRowProps, gl as SeverityTone, go as ShellLanguage, gp as ShellLanguageProvider, gq as ShellLanguageState, gr as ShellPrefsAdapter, gs as ShellPrefsProvider, gt as SidebarActionButton, gu as SidebarActionButtonProps, gv as SidebarGroupLabel, gw as SidebarGroupLabelProps, gx as SidebarLayout, gy as SidebarLayoutProps, gz as SidebarNavGroup, gA as SidebarNavGroupProps, gB as SidebarNavItem, gC as SidebarNavItemProps, gD as Skeleton, gE as SkeletonProps, gF as SkeletonVariant, gG as Slider, gH as SliderProps, gI as SliderSize, gJ as Snippet, gK as SnippetProps, gL as SnippetSize, gM as SnippetVariant, a as SortState, gN as SortableList, gO as SortableListProps, gP as SortableListSpacing, gQ as SpacingRole, gR as SpacingStep, gS as Sparkline, gT as SparklineProps, gU as Stack, gV as StackProps, gW as StaleChunkReloadOptions, gX as StatCard, gY as StatCardProps, gZ as StatTile, g_ as StatTileProps, g$ as Statistic, h0 as StatisticProps, h1 as StatisticSize, h2 as StatisticTone, h3 as StatusBadge, h4 as StatusBadgeProvider, h5 as StatusEmphasis, h6 as StepItem, h7 as Stepper, h8 as StepperProps, h9 as StrokeVariant, ha as SunburstChart, hb as SunburstChartProps, hc as SunburstNode, hd as Switch, he as SwitchProps, hf as SwitchSize, hg as TYPE_SCALE, hh as TabItem, hi as Tabs, hj as TabsProps, hk as TagInput, hl as TagInputOption, hm as TagInputProps, hn as Text, ho as TextLinkField, hp as TextLinkFieldProps, hq as TextProps, hr as TextSize, hs as TextTone, ht as TextWeight, hu as Textarea, hv as TextareaProps, hw as Theme, hx as TileButton, hy as TileButtonProps, hz as TileSize, hA as TimeAgo, hB as TimeAgoProps, hC as TimePicker, hD as TimePickerProps, hE as TimeSeriesChart, hF as TimeSeriesChartProps, hG as TimeSeriesSeries, hH as TimelineMarker, hI as TimelineMarkerKind, hJ as TimelineReport, hK as TimelineScrubProgress, hL as TimelineTrack, hM as TimelineTrackItem, hN as TimelineTrackKind, hO as TimelineTrackPending, hP as TimelineTrackPhase, hQ as TimelineTrackPlayback, hR as TimelineTrackProps, hS as TimelineTrackThumb, hT as Title, hU as TitleLevel, hV as TitleProps, hW as ToastOptions, hX as ToastPlacement, hY as Tooltip, hZ as TooltipProps, h_ as TopNav, h$ as TopNavItem, i0 as TopNavProps, i1 as Tree, i2 as TreeDrop, i3 as TreeEmptySlot, i4 as TreeEmptySlotProps, i5 as TreeGroup, i6 as TreeGroupLabel, i7 as TreeGroupProps, i8 as TreeMove, i9 as TreeProps, ia as TreeRow, ib as TreeRowProps, ic as TreeSeam, id as TreeSeamProps, ie as TreemapChart, ig as TreemapChartProps, ih as TreemapItem, ii as TreemapTile, ij as TypeStep, ik as UseAppUpdateOptions, il as UseContextMenu, im as UseProductionTimelineOpts, io as VERSION, ip as VITE_PRELOAD_ERROR_EVENT, iq as WaterfallChart, ir as WaterfallChartProps, is as WaterfallStep, it as WidthsBar, iu as WidthsBarProps, iv as ZLayer, iw as Z_LAYERS, ix as angleScale, iy as appendKey, iz as applyCorners, iA as applyIconSet, iB as applyThemePrefs, iC as arcPath, iD as areaBetween, iE as areaFrom, iF as autoHighlightIndex, iG as backspace, iH as bandScale, iI as binValues, iJ as budgetState, iK as bumpPath, iL as buttonClasses, iM as calcOverall, iN as calcReportOverall, iO as colorFill, iP as colorSwatchClasses, iQ as columnSharesWidths, iR as confirm, iS as confirmDestructive, iT as curvePath, iU as dashFor, iW as dismissPopups, iX as fillFor, iY as fillId, iZ as fmtSliderDate, i_ as fromDateKey, i$ as glassStyle, j0 as glowId, j1 as groundId, j2 as groupColors, j3 as hexToHsv, j4 as highlightOpacity, j5 as hsvToHex, j6 as iconButtonClasses, j7 as inputClasses, j8 as installStaleChunkReload, j9 as isMac, ja as isSeverityTone, jb as isSpacingStep, jc as isStaleChunkError, je as labelClasses, jf as ladderScale, jg as languageSelectWidth, jh as leavesContextMenuAlone, ji as linearPath, jj as linearScale, jk as logScale, jl as maskId, jm as matchShellLanguage, jn as mediaFileName, jo as monotonePath, jp as niceMax, jq as openGlobalSearch, jr as parseHexColor, js as polygonPoints, jt as popupBounds, ju as prompt, jv as pushRecentSearch, jw as radiusScale, jx as readSavedShellLanguage, jy as registerModalEscapeInterceptor, jz as resolveBrandMarkTreatment, jA as resolveColumnShares, jB as resolveColumnWidths, jC as resolveCorners, jD as resolvePortalBrandAsset, jE as resolveSeriesColor, jF as resolveShellLanguage, jG as resolveTheme, jH as sanitizeRecentSearches, jI as saveShellLanguage, jJ as seriesColor, jK as severityOf, jL as splinePath, jM as squarify, jN as stagger, jO as stepPath, jP as tabButtonId, jQ as tabPanelId, jR as toDateKey, jS as toDayMs, jT as toISODate, jU as toast, jV as useAppUpdate, jW as useClickOutside, jX as useConfirm, jY as useContextMenu, jZ as useDebouncedValue, j_ as useDropdownPosition, j$ as useFocusTrap, k0 as useHighlight, k1 as useIsMobile, k2 as useLocalStoragePrefs, k3 as usePlotWidth, k4 as usePortalBranding, k5 as useProductionTimeline, k6 as useScrollLock, k7 as useShellLanguage, k8 as useShellPrefs, k9 as useStatusLabel, ka as useTheme } from '../index-D5bms_uA.js';
1
+ export { A as ALT, b as ALT_SHIFT_D, c as ALT_SHIFT_E, d as ALT_SHIFT_N, e as APP_UPDATE_POLL_MS, f as Accordion, g as AccordionItem, h as AccordionProps, i as Align, j as AlignmentGrid, k as AlignmentGridProps, l as AlignmentPoint, m as AngleScale, n as AppUpdateBanner, o as AppUpdateBannerProps, p as AttachButton, q as AttachButtonProps, r as AttachmentDropZone, s as AttachmentDropZoneProps, t as AttachmentList, u as AttachmentListProps, v as AuthScreen, w as AuthScreenProps, x as Avatar, y as AvatarGroup, z as AvatarGroupProps, B as AvatarProps, D as AvatarSize, E as AvatarStatus, F as BORDER_WIDTHS, G as BackgroundVariant, H as BandScale, I as Banner, J as BannerEmphasis, K as BannerProps, L as BannerTone, M as BorderRole, N as BoxPlotBox, O as BoxPlotChart, Q as BoxPlotChartProps, R as BrandAssetEditor, T as BrandAssetEditorProps, U as BrandAssetPreview, V as BrandMark, W as BrandMarkProps, X as BrandMarkSlot, Y as BrandMarkSurface, Z as BrandMarkTreatment, _ as BreadcrumbItem, $ as Breadcrumbs, a0 as BreadcrumbsProps, a1 as BudgetBar, a2 as BudgetBarProps, a3 as BudgetState, a4 as Button, a5 as ButtonClassesOptions, a6 as ButtonProps, a7 as ButtonSize, a8 as ButtonVariant, a9 as CHART_INK, aa as CMD_A, ab as CMD_DOT, ac as CMD_ENTER, ad as CMD_K, ae as CMD_S, af as COLUMN_COUNT_MAX, ag as COLUMN_COUNT_WIDTHS, ah as COLUMN_SHARES_EQUAL, ai as COLUMN_SHARE_MIN, aj as CONTROL_HEIGHTS, ak as CORNERS, al as Calendar, am as CalendarMode, an as CalendarProps, ao as Candle, ap as CandlestickChart, aq as CandlestickChartProps, ar as Card, as as CardPadding, at as CardProps, au as CardTone, av as CartesianPlot, aw as CartesianPlotProps, ax as CellStyle, ay as ChartBackgroundVariant, az as ChartBrush, aA as ChartBrushProps, aB as ChartCurve, aC as ChartDefs, aD as ChartDefsProps, aE as ChartDot, aF as ChartDotProps, aG as ChartDotVariant, aH as ChartFillVariant, aI as ChartFrame, aJ as ChartFrameProps, aK as ChartHighlightProvider, aL as ChartLegendEntry, aM as ChartLegendSwatch, aN as ChartRange, aO as ChartReferenceLine, aP as ChartRevealDirection, aQ as ChartSkeleton, aR as ChartSkeletonProps, aS as ChartStatusTone, aT as ChartStrokeVariant, aU as ChartTooltip, aV as ChartTooltipProps, aW as ChartTooltipRow, aX as ChatTemplate, aY as Checkbox, aZ as CheckboxProps, a_ as CheckoutTemplate, a$ as ChordChart, b0 as ChordChartProps, b1 as ColorPicker, b2 as ColorPickerPanel, b3 as ColorPickerPanelProps, b4 as ColorPickerProps, b5 as ColorPreset, b6 as ColorSwatch, b7 as ColorSwatchProps, b8 as ColorSwatchSize, b9 as ColoredBadge, ba as ColoredBadgeProps, bb as ColumnChart, bc as ColumnChartProps, C as ColumnDef, bd as ColumnSeries, be as ColumnShares, bf as ComposerAttachments, bg as ComposerAttachmentsProps, bh as ConfirmProvider, bi as ContainerFillChart, bj as ContainerFillChartProps, bk as ContainerFillItem, bl as ContextMenu, bm as ContextMenuPoint, bn as ContextMenuProps, bo as ContextMenuState, bp as ControlSize, bq as CornerOption, br as Corners, bs as CornersInput, bt as CornersInputProps, bu as CountBadge, bv as CountBadgeProps, bw as CountBadgeTone, bx as Curve, by as DAY_MS, bz as DashboardTemplate, bA as DataTable, bB as DataTableColumn, bC as DataTableColumnGroup, bD as DataTableHeader, bE as DataTablePage, bF as DataTableProps, bG as DataTableRowLink, bH as DataTableRowProps, bI as DatePicker, bJ as DatePickerProps, bK as DateRangePicker, bL as DateRangePickerProps, bM as DateTimePicker, bN as DateTimePickerProps, bO as DescriptionColumns, bP as DescriptionItem, bQ as DescriptionList, bR as DescriptionListProps, bS as Dialog, bT as DialogProps, bU as DialogSize, bV as DisplayChipItem, bW as DisplayChips, bX as DisplayChipsProps, bY as Divider, bZ as DividerProps, b_ as DividerSpacing, b$ as Drawer, c0 as DrawerProps, c1 as DrawerSide, c2 as DrawerSize, c3 as DropdownMenu, c4 as DropdownMenuAlign, c5 as DropdownMenuCheckboxItem, c6 as DropdownMenuDividerItem, c7 as DropdownMenuEntry, c8 as DropdownMenuItem, c9 as DropdownMenuLabelItem, ca as DropdownMenuLinkItem, cb as DropdownMenuProps, cc as DropdownMenuRadioItem, cd as DropdownMenuSide, ce as DropdownPositionOptions, cf as ELEVATION_LEVELS, cg as ENGLISH, ch as ENTER, ci as EditableGrid, cj as EditableGridProps, ck as ElevationLevel, cl as EmailTemplate, cm as EmptyState, cn as EmptyStateProps, co as EmptyValue, cp as EmptyValueProps, cq as ErrorBoundary, cr as ErrorBoundaryProps, cs as ErrorPage, ct as ErrorPageProps, cu as FONT_WEIGHTS, cv as FileIntake, cw as FilePicker, cx as FilePickerProps, cy as FillVariant, cz as FontWeightRole, cA as FormError, cB as FormErrorSummary, cC as FormErrorSummaryProps, cD as FormField, cE as FormFieldProps, cF as FormLayoutPage, cG as FunnelChart, cH as FunnelChartProps, cI as FunnelStage, cJ as GLASS_DIVIDER, cL as GROUP_COLORS, cM as GROUP_COLORS_SOLID, cN as GalleryTemplate, cO as Gap, cP as GlassOptions, cQ as GlobalSearch, cR as GlobalSearchProps, cS as Grid, cT as GridCols, cU as GridColumn, cV as GridProps, cW as HeatmapChart, cX as HeatmapChartProps, cY as HelpCenter, cZ as HelpCenterDoc, c_ as HelpCenterProps, c$ as HexInput, d0 as HistogramBin, d1 as HistogramChart, d2 as HistogramChartProps, d3 as Hsv, d4 as INPUT_BASE, d5 as INPUT_SIZES, d6 as IconButton, d7 as IconButtonClassesOptions, d8 as IconButtonProps, d9 as IconRail, da as IconRailButton, db as IconRailButtonProps, dc as IconRailLabels, dd as IconRailLabelsShown, de as IconRailOrientation, df as IconRailProps, dg as ImageFocusPoint, dh as ImageFocusPointProps, di as Inline, dj as InlineProps, dk as Input, dl as InputNumber, dm as InputNumberProps, dn as InputProps, dp as InputSize, dq as Justify, dr as Kanban, ds as KanbanColumn, dt as KanbanProps, du as Kbd, dv as KbdProps, dw as KbdSize, dx as KbdTone, dy as Label, dz as LabelClassesOptions, dA as LabelProps, dB as LadderScale, dC as LanguagePanel, dD as LanguagePanelProps, dE as LanguageSelect, dF as LanguageSelectProps, dG as LinearScale, dH as LinkFilter, dI as LinkFilterField, dJ as LinkKindChoice, dK as LinkOption, dL as LinkOptionGroup, dM as LinkPicker, dN as LinkPickerFieldProps, dO as LinkPickerProps, dP as LinkPickerWindowProps, dQ as LinkRules, dR as LinkTarget, dS as ListDrop, dT as ListFooter, dU as ListLoadError, dV as ListLoadErrorProps, dW as ListMove, dX as ListRow, dY as ListRowProps, dZ as LoadingSpinner, d_ as LoadingSpinnerProps, d$ as MAX_FRACTION_DIGITS, e0 as MENU_MAX_HEIGHT, e1 as MOD, e2 as MOTION, e3 as MOTION_DURATIONS, e4 as Markdown, e4 as MarkdownLite, e5 as MarkdownLiteProps, e5 as MarkdownProps, e6 as MediaUploadField, e7 as MediaUploadFieldProps, e8 as MediaUploadGrid, e9 as MediaUploadGridItem, ea as MediaUploadGridProps, eb as MenuPos, ec as Meter, ed as MeterProps, ee as MetricBar, ef as MetricBarProps, eg as Milestone, eh as MilestoneKind, ei as MilestoneTimeline, ej as MilestoneTimelineProps, ek as MotionSpeed, em as NEXT_CHUNK_PATH_PREFIX, en as NativeSelect, eo as NiceAxis, ep as NumericKeypad, eq as NumericKeypadProps, er as OVERLAY_OPEN_EVENT, es as POPUP_MAX_WIDTH, et as POST_PRODUCTION_STATUSES, eu as PageHeader, ev as PageHeaderProps, P as PaginatedResponse, ew as Pagination, ex as PaginationProps, ey as PaperclipGlyph, ez as Paragraph, eA as ParagraphProps, eB as PieChart, eC as PieChartProps, eD as PieSegment, eE as PlotGeometry, eF as Point, eG as Popover, eH as PopoverAlign, eI as PopoverProps, eJ as PopoverRenderProps, eK as PopoverSide, eL as PopupMenu, eM as PopupMenuDivider, eN as PopupMenuItem, eO as PopupMenuItemProps, eP as PopupMenuLabel, eQ as PopupMenuProps, eR as PopupSubmenu, eS as PopupSubmenuProps, eT as PortalBrandingContextValue, eU as PortalBrandingProvider, eV as PortalBrandingProviderProps, eW as ProductionTimeline, eX as ProductionTimelineProps, eY as ProductionTimelineSnapshot, eZ as ProgressItem, e_ as PublicPortal, e$ as PublicPortalBranding, f0 as RADAR_SERIES_CAP, f1 as RADIUS_ROLES, f2 as ROW_HEIGHTS, f3 as RadarAxis, f4 as RadarChart, f5 as RadarChartProps, f6 as RadarSeries, f7 as RadialBarChart, f8 as RadialBarChartProps, f9 as RadialBarRow, fa as Radio, fb as RadioGroup, fc as RadioGroupOption, fd as RadioGroupOrientation, fe as RadioGroupProps, ff as RadioProps, fg as RadiusRole, fh as Range, fi as RangeChart, fj as RangeChartProps, fk as RangeRow, fl as RankedBars, fm as RankedBarsProps, fn as RankedBarsRow, fo as ResizeHandle, fp as ResizeHandleOrientation, fq as ResizeHandleProps, fr as ResizeHandleSide, fs as ResizeHandleStackSide, ft as ResolvedPortalBrandAsset, fu as Result, fv as ResultProps, fw as ResultStatus, fx as RevealDirection, fy as SCATTER_SERIES_CAP, fz as SERIES_SLOT_COUNT, fA as SERIES_VARS, fB as SHELL_LANGUAGE_STORAGE_KEY, fC as SHIFT, fD as SPACING_ROLES, fE as SPACING_SCALE, fF as STAGES, fG as STALE_CHUNK_RELOAD_COOLDOWN_MS, fH as STALE_CHUNK_RELOAD_KEY, fI as STATUS_VARS, fJ as SankeyChart, fK as SankeyChartProps, fL as SankeyLink, fM as SankeyNode, fN as ScatterChart, fO as ScatterChartProps, fP as ScatterPoint, fQ as ScatterSeries, S as SearchConfig, fR as SearchListRoute, fS as SearchProvider, fT as SearchQuickAction, fU as SearchResponse, fV as SearchResult, fW as SearchableItem, fX as SearchableOption, fY as SearchableOptionGroup, fZ as SearchableSelect, f_ as SearchableSelectBaseProps, f$ as SearchableSelectMultipleProps, g0 as SearchableSelectProps, g1 as Segmented, g2 as SegmentedOption, g3 as SegmentedProps, g4 as SegmentedSize, g5 as Select, g6 as SelectBaseProps, g7 as SelectItem, g8 as SelectMultipleProps, g9 as SelectOption, ga as SelectOptionGroup, gb as SelectProps, gc as SemanticGroup, gd as SeriesSlots, ge as SettingRow, gf as SettingRowProps, gg as SeverityTone, gj as ShellLanguage, gk as ShellLanguageProvider, gl as ShellLanguageState, gm as ShellPrefsAdapter, gn as ShellPrefsProvider, go as SidebarActionButton, gp as SidebarActionButtonProps, gq as SidebarGroupLabel, gr as SidebarGroupLabelProps, gs as SidebarLayout, gt as SidebarLayoutProps, gu as SidebarNavGroup, gv as SidebarNavGroupProps, gw as SidebarNavItem, gx as SidebarNavItemProps, gy as Skeleton, gz as SkeletonProps, gA as SkeletonVariant, gB as Slider, gC as SliderProps, gD as SliderSize, gE as Snippet, gF as SnippetProps, gG as SnippetSize, gH as SnippetVariant, a as SortState, gI as SortableList, gJ as SortableListProps, gK as SortableListSpacing, gL as SpacingRole, gM as SpacingStep, gN as Sparkline, gO as SparklineProps, gP as Stack, gQ as StackProps, gR as StaleChunkReloadOptions, gS as StatCard, gT as StatCardProps, gU as StatTile, gV as StatTileProps, gW as Statistic, gX as StatisticProps, gY as StatisticSize, gZ as StatisticTone, g_ as StatusBadge, g$ as StatusBadgeProvider, h0 as StatusEmphasis, h1 as StepItem, h2 as Stepper, h3 as StepperProps, h4 as StrokeVariant, h5 as SunburstChart, h6 as SunburstChartProps, h7 as SunburstNode, h8 as Switch, h9 as SwitchProps, ha as SwitchSize, hb as TYPE_SCALE, hc as TabItem, hd as Tabs, he as TabsProps, hf as TagInput, hg as TagInputOption, hh as TagInputProps, hi as TagInputTone, hj as Text, hk as TextLinkField, hl as TextLinkFieldProps, hm as TextProps, hn as TextSize, ho as TextTone, hp as TextWeight, hq as Textarea, hr as TextareaProps, hs as Theme, ht as TileButton, hu as TileButtonProps, hv as TileSize, hw as TimeAgo, hx as TimeAgoProps, hy as TimePicker, hz as TimePickerProps, hA as TimeSeriesChart, hB as TimeSeriesChartProps, hC as TimeSeriesSeries, hD as TimelineMarker, hE as TimelineMarkerKind, hF as TimelineReport, hG as TimelineScrubProgress, hH as TimelineTrack, hI as TimelineTrackItem, hJ as TimelineTrackKind, hK as TimelineTrackPending, hL as TimelineTrackPhase, hM as TimelineTrackPlayback, hN as TimelineTrackProps, hO as TimelineTrackThumb, hP as Title, hQ as TitleLevel, hR as TitleProps, hS as ToastOptions, hT as ToastPlacement, hU as Tooltip, hV as TooltipProps, hW as TopNav, hX as TopNavItem, hY as TopNavProps, hZ as Tree, h_ as TreeDrop, h$ as TreeEmptySlot, i0 as TreeEmptySlotProps, i1 as TreeGroup, i2 as TreeGroupLabel, i3 as TreeGroupProps, i4 as TreeMove, i5 as TreeProps, i6 as TreeRow, i7 as TreeRowProps, i8 as TreeSeam, i9 as TreeSeamProps, ia as TreemapChart, ib as TreemapChartProps, ic as TreemapItem, id as TreemapTile, ie as TypeStep, ig as UseAppUpdateOptions, ih as UseContextMenu, ii as UseProductionTimelineOpts, ij as VERSION, ik as VITE_PRELOAD_ERROR_EVENT, il as WaterfallChart, im as WaterfallChartProps, io as WaterfallStep, ip as WidthsBar, iq as WidthsBarProps, ir as ZLayer, is as Z_LAYERS, it as angleScale, iu as appendKey, iv as applyCorners, iw as applyIconSet, ix as applyThemePrefs, iy as arcPath, iz as areaBetween, iA as areaFrom, iB as assignSeriesSlots, iC as autoHighlightIndex, iD as backspace, iE as bandScale, iF as binValues, iG as budgetState, iH as bumpPath, iI as buttonClasses, iJ as calcOverall, iK as calcReportOverall, iL as colorFill, iM as colorSwatchClasses, iN as columnSharesWidths, iO as confirm, iP as confirmDestructive, iQ as curvePath, iR as dashFor, iT as dismissPopups, iU as fillFor, iV as fillId, iW as fmtSliderDate, iX as fromDateKey, iY as glassStyle, iZ as glowId, i_ as groundId, i$ as groupColors, j0 as hexToHsv, j1 as highlightOpacity, j2 as hsvToHex, j3 as iconButtonClasses, j4 as inputClasses, j5 as installStaleChunkReload, j6 as isMac, j7 as isSeverityTone, j8 as isSpacingStep, j9 as isStaleChunkError, jb as labelClasses, jc as ladderScale, jd as languageSelectWidth, je as leavesContextMenuAlone, jf as linearPath, jg as linearScale, jh as logScale, ji as maskId, jj as matchShellLanguage, jk as mediaFileName, jl as monotonePath, jm as niceAxis, jn as niceMax, jo as openGlobalSearch, jp as parseHexColor, jq as polygonPoints, jr as popupBounds, js as prompt, jt as pushRecentSearch, ju as radiusScale, jv as readSavedShellLanguage, jw as registerModalEscapeInterceptor, jx as resolveBrandMarkTreatment, jy as resolveColumnShares, jz as resolveColumnWidths, jA as resolveCorners, jB as resolvePortalBrandAsset, jC as resolveSeriesColor, jD as resolveSeriesColorWithin, jE as resolveShellLanguage, jF as resolveTheme, jG as sanitizeRecentSearches, jH as saveShellLanguage, jI as seriesColor, jJ as severityOf, jK as splinePath, jL as squarify, jM as stagger, jN as stepPath, jO as tabButtonId, jP as tabPanelId, jQ as toDateKey, jR as toDayMs, jS as toISODate, jT as toast, jU as toggleSeriesSlot, jV as useAppUpdate, jW as useClickOutside, jX as useConfirm, jY as useContextMenu, jZ as useDebouncedValue, j_ as useDropdownPosition, j$ as useFocusTrap, k0 as useHighlight, k1 as useIsMobile, k2 as useLocalStoragePrefs, k3 as usePlotWidth, k4 as usePortalBranding, k5 as useProductionTimeline, k6 as useScrollLock, k7 as useShellLanguage, k8 as useShellPrefs, k9 as useStatusLabel, ka as useTheme } from '../index-Cevszdp8.js';
2
2
  export { C as CurrencyFormat, D as DATE_FORMAT_OPTIONS, a as DateFormatKey, E as EMPTY_VALUE, F as FOCAL_DEFAULT, b as FOCAL_NUDGE_COARSE, c as FOCAL_NUDGE_STEP, d as FocalPoint, e as FormatDateOptions, f as FormatMoneyOptions, T as TZ_AUTO, g as TimeAgoOptions, h as currencyDecimals, i as currencySymbol, j as firstDayOfWeek, k as focalFromRect, l as formatBytes, m as formatDate, n as formatDateTime, o as formatFocal, p as formatMoney, q as formatTime, r as getUserDateFormat, s as getUserTimezone, t as nudgeFocal, u as parseFocal, v as setCurrencyFormats, w as setUserDateFormat, x as setUserTimezone, y as syncTimezoneFromProfile, z as timeAgo } from '../index-CHufemKB.js';
3
3
  export { isSafeLinkHref } from '../markup/index.js';
4
4
  export { FileIntakeAlert, FileIntakeLimits, FileIntakeOptions, FileRejection, FileRejectionReason, acceptsFile, useFileIntake } from '../file-intake/index.js';
5
5
  export { ICON_NAMES, Icon, IconName, IconProps, IconTone, isIconName } from '../icons/index.js';
6
6
  export { a as IconDrawing, I as IconSet, b as activeIconSet, i as iconSets, c as iconsVersion, r as registerIconSet, d as registerIcons, e as resolveIcon, s as setDefaultIconSet, f as setIconSet, g as subscribeIcons } from '../registry-Dw6QO2Ch.js';
7
- export { D as DEFAULT_SHELL_STRINGS, a as ShellStrings, S as ShellStringsOverride, b as ShellStringsProvider, u as useShellLocale, c as useShellStrings } from '../strings-fYzxZPn4.js';
7
+ export { D as DEFAULT_SHELL_STRINGS, a as ShellStrings, S as ShellStringsOverride, b as ShellStringsProvider, u as useShellLocale, c as useShellStrings } from '../strings-BQtq9300.js';
8
8
  import 'react';
9
9
  import 'react/jsx-runtime';
package/dist/ui/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{APP_UPDATE_POLL_MS,Accordion,AlignmentGrid,AppUpdateBanner,AttachButton,AttachmentDropZone,AttachmentList,AuthScreen,Avatar,AvatarGroup,BORDER_WIDTHS,Banner,BarChart,BoxPlotChart,BrandAssetEditor,BudgetBar,CHART_INK,COLUMN_COUNT_MAX,COLUMN_COUNT_WIDTHS,COLUMN_SHARES_EQUAL,COLUMN_SHARE_MIN,CONTROL_HEIGHTS,CORNERS,Calendar,CandlestickChart,Card,CartesianPlot,ChartBrush,ChartDefs,ChartDot,ChartFrame,ChartHighlightProvider,ChartSkeleton,ChartTooltip,ChatTemplate,Checkbox_default as Checkbox,CheckoutTemplate,ChordChart,ColorPicker,ColorPickerPanel,ColorSwatch,ColoredBadge,ColumnChart,ComposerAttachments,ContainerFillChart,ContextMenu,CornersInput,CountBadge,DAY_MS,DashboardTemplate,DataTable,DataTablePage,DatePicker_default as DatePicker,DateRangePicker,DateTimePicker_default as DateTimePicker,DescriptionList,DisplayChips,Divider,DonutChart,Drawer,DropdownMenu,ELEVATION_LEVELS,EmailTemplate,EmptyState,EmptyValue,ErrorBoundary,ErrorPage,FONT_WEIGHTS,FilePicker_default as FilePicker,FormErrorSummary,FormField,FormLayoutPage,FunnelChart,GROUP_COLORS,GROUP_COLORS_SOLID,GalleryTemplate,Grid,HeatmapChart,HelpCenter,HexInput,HistogramChart,INPUT_BASE,INPUT_SIZES,IconButton_default as IconButton,IconRail,IconRailButton,ImageFocusPoint,Inline,Input_default as Input,InputNumber_default as InputNumber,Kanban,Label,LanguagePanel,LanguageSelect,LineChart,LinkPicker,ListFooter,ListLoadError,ListRow,MAX_FRACTION_DIGITS,MOTION,MOTION_DURATIONS,Markdown,Markdown as MarkdownLite,MediaUploadField,MediaUploadGrid,Meter,MetricBar,MilestoneTimeline,NativeSelect,NumericKeypad,POST_PRODUCTION_STATUSES,PageHeader,Pagination,PaperclipGlyph,Paragraph,PieChart,Popover,PortalBrandingProvider,ProductionTimeline,RADAR_SERIES_CAP,RADIUS_ROLES,RadarChart,RadialBarChart,Radio_default as Radio,RadioGroup,RangeChart,RankedBars,SCATTER_SERIES_CAP,SERIES_SLOT_COUNT,SERIES_VARS,SPACING_ROLES,SPACING_SCALE,STAGES,STATUS_VARS,SankeyChart,ScatterChart,SearchableSelect,Segmented,Select_default as Select,SettingRow,SidebarActionButton,SidebarGroupLabel,SidebarNavGroup,SidebarNavItem,Skeleton,Slider,Snippet,SortableList,Sparkline,Stack,StatCard,StatTile,Statistic,StatusBadge,StatusBadgeProvider,Stepper,SunburstChart,Switch_default as Switch,TYPE_SCALE,Tabs,TagInput,Text,TextLinkField,Textarea_default as Textarea,TileButton_default as TileButton,TimeAgo,TimePicker_default as TimePicker,TimeSeriesChart,TimelineTrack,Title,TopNav,Tree,TreeEmptySlot,TreeGroup,TreeGroupLabel,TreeRow,TreeSeam,TreemapChart,WaterfallChart,WidthsBar,angleScale,appendKey,applyCorners,applyIconSet,applyThemePrefs,arcPath,areaBetween,areaFrom,autoHighlightIndex,backspace,bandScale,binValues,budgetState,bumpPath,calcOverall,calcReportOverall,colorFill,colorSwatchClasses,columnSharesWidths,curvePath,dashFor,fillFor,fillId,fmtSliderDate,fromKey as fromDateKey,glowId,groundId,groupColors,hexToHsv,highlightOpacity,hsvToHex,inputClasses,isSeverityTone,isSpacingStep,labelClasses,ladderScale,languageSelectWidth,linearPath,linearScale,logScale,maskId,mediaFileName,monotonePath,niceMax,parseHexColor,polygonPoints,radiusScale,resolveColumnShares,resolveColumnWidths,resolveCorners,resolvePortalBrandAsset,resolveSeriesColor,resolveTheme,seriesColor,severityOf,splinePath,squarify,stagger,stepPath,tabButtonId,tabPanelId,toKey as toDateKey,toDayMs,toISODate,useAppUpdate,useClickOutside,useContextMenu,useDebouncedValue,useHighlight,usePlotWidth,usePortalBranding,useProductionTimeline,useStatusLabel,useTheme}from"../chunk-PFKMIPZH.js";export{Breadcrumbs}from"../chunk-Q5O5UMJY.js";export{ResizeHandle,SidebarLayout}from"../chunk-5LUN632W.js";export{BrandMark,GlobalSearch,openGlobalSearch,pushRecent as pushRecentSearch,resolveBrandMarkTreatment,sanitizeRecent as sanitizeRecentSearches}from"../chunk-7PGHRG6J.js";export{EditableGrid}from"../chunk-YX2IMURA.js";import"../chunk-BR22X7E5.js";export{isSafeLinkHref}from"../chunk-PJPK2ADX.js";export{ENGLISH,SHELL_LANGUAGE_STORAGE_KEY,ShellLanguageProvider,matchShellLanguage,readSavedShellLanguage,resolveShellLanguage,saveShellLanguage,useShellLanguage}from"../chunk-5K76RQML.js";export{toast_default as toast}from"../chunk-GJ37JCC2.js";export{ALT,ALT_SHIFT_D,ALT_SHIFT_E,ALT_SHIFT_N,CMD_A,CMD_DOT,CMD_ENTER,CMD_K,CMD_S,ENTER,Kbd,LoadingSpinner,MOD,NEXT_CHUNK_PATH_PREFIX,Result,SHIFT,STALE_CHUNK_RELOAD_COOLDOWN_MS,STALE_CHUNK_RELOAD_KEY,ShellPrefsProvider,VITE_PRELOAD_ERROR_EVENT,installStaleChunkReload,isMac,isStaleChunkError,useIsMobile,useLocalStoragePrefs,useShellPrefs}from"../chunk-HQLAISFX.js";import"../chunk-5A7MWTXX.js";export{Button_default as Button,MENU_MAX_HEIGHT,POPUP_MAX_WIDTH,Tooltip,buttonClasses,iconButtonClasses,popupBounds,useDropdownPosition}from"../chunk-S3LGKIZ3.js";export{ConfirmProvider,Dialog,confirm,confirmDestructive,prompt,useConfirm,useFocusTrap,useScrollLock}from"../chunk-DBXZS7OA.js";export{PopupMenu,PopupMenuDivider,PopupMenuItem,PopupMenuLabel,PopupSubmenu,leavesContextMenuAlone}from"../chunk-ZEIKSMFR.js";import"../chunk-UVBK6YSR.js";export{GLASS_DIVIDER,glassStyle}from"../chunk-7IQ3B77H.js";export{OVERLAY_OPEN_EVENT,Z_LAYERS,dismissPopups,registerModalEscapeInterceptor}from"../chunk-FIEA5CGB.js";import"../chunk-D65T4H6J.js";export{VERSION}from"../chunk-SBF5A6XV.js";import"../chunk-KNUR2UEG.js";export{FOCAL_DEFAULT,FOCAL_NUDGE_COARSE,FOCAL_NUDGE_STEP,focalFromRect,formatFocal,nudgeFocal,parseFocal}from"../chunk-AP2QEJXQ.js";export{DATE_FORMAT_OPTIONS,EMPTY_VALUE,TZ_AUTO,currencyDecimals,currencySymbol,firstDayOfWeek,formatBytes,formatDate,formatDateTime,formatMoney,formatTime,getUserDateFormat,getUserTimezone,setCurrencyFormats,setUserDateFormat,setUserTimezone,syncTimezoneFromProfile,timeAgo}from"../chunk-W32SKK3D.js";export{FileIntakeAlert,acceptsFile,useFileIntake}from"../chunk-UUYPUKP7.js";export{DEFAULT_SHELL_STRINGS,ShellStringsProvider,useShellLocale,useShellStrings}from"../chunk-K6DKX55N.js";import"../chunk-C3QOHMR6.js";export{ICON_NAMES,isIconName}from"../chunk-WOEFPBQF.js";export{Icon,activeIconSet,iconSets,iconsVersion,registerIconSet,registerIcons,resolveIcon,setDefaultIconSet,setIconSet,subscribeIcons}from"../chunk-2SSRFEOZ.js";
2
+ export{APP_UPDATE_POLL_MS,Accordion,AlignmentGrid,AppUpdateBanner,AttachButton,AttachmentDropZone,AttachmentList,AuthScreen,Avatar,AvatarGroup,BORDER_WIDTHS,Banner,BoxPlotChart,BrandAssetEditor,BudgetBar,CHART_INK,COLUMN_COUNT_MAX,COLUMN_COUNT_WIDTHS,COLUMN_SHARES_EQUAL,COLUMN_SHARE_MIN,CONTROL_HEIGHTS,CORNERS,Calendar,CandlestickChart,Card,CartesianPlot,ChartBrush,ChartDefs,ChartDot,ChartFrame,ChartHighlightProvider,ChartSkeleton,ChartTooltip,ChatTemplate,Checkbox_default as Checkbox,CheckoutTemplate,ChordChart,ColorPicker,ColorPickerPanel,ColorSwatch,ColoredBadge,ColumnChart,ComposerAttachments,ContainerFillChart,ContextMenu,CornersInput,CountBadge,DAY_MS,DashboardTemplate,DataTable,DataTablePage,DatePicker_default as DatePicker,DateRangePicker,DateTimePicker_default as DateTimePicker,DescriptionList,DisplayChips,Divider,Drawer,DropdownMenu,ELEVATION_LEVELS,EmailTemplate,EmptyState,EmptyValue,ErrorBoundary,ErrorPage,FONT_WEIGHTS,FilePicker_default as FilePicker,FormErrorSummary,FormField,FormLayoutPage,FunnelChart,GROUP_COLORS,GROUP_COLORS_SOLID,GalleryTemplate,Grid,HeatmapChart,HelpCenter,HexInput,HistogramChart,INPUT_BASE,INPUT_SIZES,IconButton_default as IconButton,IconRail,IconRailButton,ImageFocusPoint,Inline,Input_default as Input,InputNumber_default as InputNumber,Kanban,Label,LanguagePanel,LanguageSelect,LinkPicker,ListFooter,ListLoadError,ListRow,MAX_FRACTION_DIGITS,MOTION,MOTION_DURATIONS,Markdown,Markdown as MarkdownLite,MediaUploadField,MediaUploadGrid,Meter,MetricBar,MilestoneTimeline,NativeSelect,NumericKeypad,POST_PRODUCTION_STATUSES,PageHeader,Pagination,PaperclipGlyph,Paragraph,PieChart,Popover,PortalBrandingProvider,ProductionTimeline,RADAR_SERIES_CAP,RADIUS_ROLES,ROW_HEIGHTS,RadarChart,RadialBarChart,Radio_default as Radio,RadioGroup,RangeChart,RankedBars,SCATTER_SERIES_CAP,SERIES_SLOT_COUNT,SERIES_VARS,SPACING_ROLES,SPACING_SCALE,STAGES,STATUS_VARS,SankeyChart,ScatterChart,SearchableSelect,Segmented,Select_default as Select,SettingRow,SidebarActionButton,SidebarGroupLabel,SidebarNavGroup,SidebarNavItem,Skeleton,Slider,Snippet,SortableList,Sparkline,Stack,StatCard,StatTile,Statistic,StatusBadge,StatusBadgeProvider,Stepper,SunburstChart,Switch_default as Switch,TYPE_SCALE,Tabs,TagInput,Text,TextLinkField,Textarea_default as Textarea,TileButton_default as TileButton,TimeAgo,TimePicker_default as TimePicker,TimeSeriesChart,TimelineTrack,Title,TopNav,Tree,TreeEmptySlot,TreeGroup,TreeGroupLabel,TreeRow,TreeSeam,TreemapChart,WaterfallChart,WidthsBar,angleScale,appendKey,applyCorners,applyIconSet,applyThemePrefs,arcPath,areaBetween,areaFrom,assignSeriesSlots,autoHighlightIndex,backspace,bandScale,binValues,budgetState,bumpPath,calcOverall,calcReportOverall,colorFill,colorSwatchClasses,columnSharesWidths,curvePath,dashFor,fillFor,fillId,fmtSliderDate,fromKey as fromDateKey,glowId,groundId,groupColors,hexToHsv,highlightOpacity,hsvToHex,inputClasses,isSeverityTone,isSpacingStep,labelClasses,ladderScale,languageSelectWidth,linearPath,linearScale,logScale,maskId,mediaFileName,monotonePath,niceAxis,niceMax,parseHexColor,polygonPoints,radiusScale,resolveColumnShares,resolveColumnWidths,resolveCorners,resolvePortalBrandAsset,resolveSeriesColor,resolveSeriesColorWithin,resolveTheme,seriesColor,severityOf,splinePath,squarify,stagger,stepPath,tabButtonId,tabPanelId,toKey as toDateKey,toDayMs,toISODate,toggleSeriesSlot,useAppUpdate,useClickOutside,useContextMenu,useDebouncedValue,useHighlight,usePlotWidth,usePortalBranding,useProductionTimeline,useStatusLabel,useTheme}from"../chunk-W6BQVATM.js";export{Breadcrumbs}from"../chunk-Z2TTHY7G.js";export{ResizeHandle,SidebarLayout}from"../chunk-UJL5J7GX.js";export{BrandMark,GlobalSearch,openGlobalSearch,pushRecent as pushRecentSearch,resolveBrandMarkTreatment,sanitizeRecent as sanitizeRecentSearches}from"../chunk-BQ7GR7H6.js";export{EditableGrid}from"../chunk-7BX3JQBP.js";import"../chunk-BR22X7E5.js";export{isSafeLinkHref}from"../chunk-PJPK2ADX.js";export{ENGLISH,SHELL_LANGUAGE_STORAGE_KEY,ShellLanguageProvider,matchShellLanguage,readSavedShellLanguage,resolveShellLanguage,saveShellLanguage,useShellLanguage}from"../chunk-RBKIYZ7H.js";export{toast_default as toast}from"../chunk-RUHUTZN4.js";export{ALT,ALT_SHIFT_D,ALT_SHIFT_E,ALT_SHIFT_N,CMD_A,CMD_DOT,CMD_ENTER,CMD_K,CMD_S,ENTER,Kbd,LoadingSpinner,MOD,NEXT_CHUNK_PATH_PREFIX,Result,SHIFT,STALE_CHUNK_RELOAD_COOLDOWN_MS,STALE_CHUNK_RELOAD_KEY,ShellPrefsProvider,VITE_PRELOAD_ERROR_EVENT,installStaleChunkReload,isMac,isStaleChunkError,useIsMobile,useLocalStoragePrefs,useShellPrefs}from"../chunk-ZRU5F2XT.js";import"../chunk-5A7MWTXX.js";export{Button_default as Button,MENU_MAX_HEIGHT,POPUP_MAX_WIDTH,Tooltip,popupBounds,useDropdownPosition}from"../chunk-YMWCZKUN.js";export{ConfirmProvider,Dialog,confirm,confirmDestructive,prompt,useConfirm,useFocusTrap,useScrollLock}from"../chunk-KSLOSQKN.js";export{PopupMenu,PopupMenuDivider,PopupMenuItem,PopupMenuLabel,PopupSubmenu,leavesContextMenuAlone}from"../chunk-ICN533ML.js";import"../chunk-UVBK6YSR.js";export{buttonClasses,iconButtonClasses}from"../chunk-NGUH7T5V.js";export{GLASS_DIVIDER,glassStyle}from"../chunk-7IQ3B77H.js";export{OVERLAY_OPEN_EVENT,Z_LAYERS,dismissPopups,registerModalEscapeInterceptor}from"../chunk-FIEA5CGB.js";import"../chunk-D65T4H6J.js";export{VERSION}from"../chunk-B4XGJA3N.js";import"../chunk-KNUR2UEG.js";export{FileIntakeAlert,acceptsFile,useFileIntake}from"../chunk-M4TRVJTO.js";export{DEFAULT_SHELL_STRINGS,ShellStringsProvider,useShellLocale,useShellStrings}from"../chunk-QRCDQPJA.js";import"../chunk-C3QOHMR6.js";export{FOCAL_DEFAULT,FOCAL_NUDGE_COARSE,FOCAL_NUDGE_STEP,focalFromRect,formatFocal,nudgeFocal,parseFocal}from"../chunk-AP2QEJXQ.js";export{DATE_FORMAT_OPTIONS,EMPTY_VALUE,TZ_AUTO,currencyDecimals,currencySymbol,firstDayOfWeek,formatBytes,formatDate,formatDateTime,formatMoney,formatTime,getUserDateFormat,getUserTimezone,setCurrencyFormats,setUserDateFormat,setUserTimezone,syncTimezoneFromProfile,timeAgo}from"../chunk-W32SKK3D.js";export{ICON_NAMES,isIconName}from"../chunk-KBOYLXAT.js";export{Icon,activeIconSet,iconSets,iconsVersion,registerIconSet,registerIcons,resolveIcon,setDefaultIconSet,setIconSet,subscribeIcons}from"../chunk-ZGUQLVY4.js";
package/dist/ui.css CHANGED
@@ -257,6 +257,14 @@
257
257
  --control-height-sm: 1.5rem;
258
258
  --control-height-md: 2rem;
259
259
  --control-height-lg: 2.5rem;
260
+
261
+ /* Row heights (Lewis, 2026-10-13): menu, list and sidebar rows, and the
262
+ main window bar. An exception to the control ladder; controls stay on
263
+ it. The compact app bar is a different, smaller bar Lewis did not pick:
264
+ it stays 32. */
265
+ --row-height-menu: 2.25rem;
266
+ --row-height-window-bar: 2.75rem;
267
+ --row-height-compact-bar: 2rem;
260
268
  }
261
269
 
262
270
  /* The default `utils/glass.ts` already assumes at `getMenuOpacity()`'s
@@ -816,22 +824,6 @@ html.rosh-reduce-transparency *::after {
816
824
  /* SidebarLayout's resize handle under the pointer, when no custom accent is
817
825
  set — the custom accent's `--accent-500` still wins, read where it is set. */
818
826
  --rosh-resize-handle: #3b82f6;
819
-
820
- /* DonutChart's default segment colours, in assignment order, and its track.
821
- NOT the `--viz-series-*` palette above: the donut predates it and its
822
- callers have been showing these hues, so this is the same eight in the
823
- same order. A host that wants one palette across every chart points these
824
- at the series tokens. The track is a translucent slate, read over either
825
- theme, which is why nothing here has a dark step. */
826
- --rosh-donut-1: #3b82f6;
827
- --rosh-donut-2: #22c55e;
828
- --rosh-donut-3: #f59e0b;
829
- --rosh-donut-4: #ef4444;
830
- --rosh-donut-5: #6366f1;
831
- --rosh-donut-6: #14b8a6;
832
- --rosh-donut-7: #a855f7;
833
- --rosh-donut-8: #64748b;
834
- --rosh-donut-track: rgba(148, 163, 184, 0.25);
835
827
  }
836
828
 
837
829
  /* ── Kit colours, dark ──────────────────────────────────────────────────────
@@ -1530,11 +1522,11 @@ html.rosh-reduce-transparency *::after {
1530
1522
  }
1531
1523
  .rosh-tl-ico { flex: none; width: 15px; height: 15px; align-self: center; margin-right: -3px; }
1532
1524
  .rosh-tl-ico svg { width: 15px; height: 15px; }
1533
- .rosh-tl-title { margin: 0; font-size: 13px; font-weight: 600; letter-spacing: -0.005em; }
1525
+ .rosh-tl-title { margin: 0; font-size: var(--text-sm); font-weight: 600; letter-spacing: -0.005em; }
1534
1526
  /* `min-width: 0` is what lets a long meta line WRAP rather than push the
1535
1527
  actions onto a row of their own: a flex item's default minimum is its
1536
1528
  content, and five facts about a production order are wider than a card. */
1537
- .rosh-tl-meta { margin: 0; font-size: 12px; font-variant-numeric: tabular-nums; min-width: 0; }
1529
+ .rosh-tl-meta { margin: 0; font-size: var(--text-xs); font-variant-numeric: tabular-nums; min-width: 0; }
1538
1530
  .rosh-tl-meta b { font-weight: 500; }
1539
1531
  .rosh-tl-head-actions {
1540
1532
  display: inline-flex; align-items: center; gap: 10px; margin-left: auto; flex: none;
@@ -1545,7 +1537,7 @@ html.rosh-reduce-transparency *::after {
1545
1537
  .rosh-tl-play {
1546
1538
  display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 12px 0 10px;
1547
1539
  border-radius: 14px; cursor: pointer; white-space: nowrap;
1548
- font: inherit; font-size: 11.5px; font-weight: 500;
1540
+ font: inherit; font-size: var(--text-xs); font-weight: 500;
1549
1541
  background: var(--surface-raised); border-width: 1px; border-style: solid;
1550
1542
  transition: color 160ms ease-out, border-color 160ms ease-out;
1551
1543
  }
@@ -1556,12 +1548,12 @@ html.rosh-reduce-transparency *::after {
1556
1548
  margin-top: 14px; padding-top: 12px;
1557
1549
  border-top-width: 1px; border-top-style: solid;
1558
1550
  }
1559
- .rosh-tl-status { margin: 0; font-size: 12px; font-variant-numeric: tabular-nums; }
1551
+ .rosh-tl-status { margin: 0; font-size: var(--text-xs); font-variant-numeric: tabular-nums; }
1560
1552
  .rosh-tl-legend { display: flex; gap: 6px; flex-wrap: wrap; margin-left: auto; }
1561
1553
  .rosh-tl-legend > span {
1562
1554
  display: inline-flex; align-items: center; gap: 6px; height: 22px; padding: 0 9px 0 7px;
1563
1555
  border-width: 1px; border-style: solid; border-radius: 11px;
1564
- font-size: 10.5px; background: var(--surface-raised);
1556
+ font-size: var(--text-2xs); background: var(--surface-raised);
1565
1557
  }
1566
1558
  /* The legend's glyphs are the track's glyphs at legend size, so a chip can
1567
1559
  never describe a shape the rail no longer draws. */
@@ -1586,7 +1578,7 @@ html.rosh-reduce-transparency *::after {
1586
1578
  .rosh-tl-edge {
1587
1579
  position: absolute; white-space: nowrap;
1588
1580
  font-family: var(--font-mono); font-variant-numeric: tabular-nums;
1589
- font-size: 10px; line-height: 1.3; color: var(--ink-muted);
1581
+ font-size: var(--text-2xs); line-height: 1.3; color: var(--ink-muted);
1590
1582
  }
1591
1583
  .rosh-tl-edge.is-end { transform: translateX(-100%); }
1592
1584
 
@@ -1623,7 +1615,7 @@ html.rosh-reduce-transparency *::after {
1623
1615
  .rosh-tl-tick.is-week { opacity: 0.5; }
1624
1616
  .rosh-tl-month, .rosh-tl-rulercut span {
1625
1617
  font-family: var(--font-mono); font-variant-numeric: tabular-nums;
1626
- font-size: 10px; line-height: 1.1; color: var(--ink-faint);
1618
+ font-size: var(--text-2xs); line-height: 1.1; color: var(--ink-faint);
1627
1619
  }
1628
1620
  .rosh-tl-month { position: absolute; white-space: nowrap; }
1629
1621
  .rosh-tl-rulercut {
@@ -1640,7 +1632,7 @@ html.rosh-reduce-transparency *::after {
1640
1632
  }
1641
1633
  .rosh-tl-todaytag {
1642
1634
  position: absolute; white-space: nowrap; border-radius: 5px; padding: 1px 6px;
1643
- font-size: 10px; font-weight: 500; letter-spacing: 0.02em;
1635
+ font-size: var(--text-2xs); font-weight: 500; letter-spacing: 0.02em;
1644
1636
  color: var(--ink-muted); background: var(--surface-raised);
1645
1637
  }
1646
1638
 
@@ -1699,7 +1691,7 @@ html.rosh-reduce-transparency *::after {
1699
1691
  text over the rail is a mark's caption, and the undated things are a dashed
1700
1692
  cap at the end of a dashed tail. */
1701
1693
  .rosh-tl-flank {
1702
- flex: none; white-space: nowrap; font-size: 11px; font-weight: 500; line-height: 1;
1694
+ flex: none; white-space: nowrap; font-size: var(--text-2xs); font-weight: 500; line-height: 1;
1703
1695
  color: var(--ink-muted);
1704
1696
  }
1705
1697
  /* The caption over a mark — `v3` over a revision. Mono, like every other
@@ -1707,7 +1699,7 @@ html.rosh-reduce-transparency *::after {
1707
1699
  .rosh-tl-caption {
1708
1700
  position: absolute; transform: translateX(-50%); white-space: nowrap; pointer-events: none;
1709
1701
  font-family: var(--font-mono); font-variant-numeric: tabular-nums;
1710
- font-size: 10px; line-height: 1.1; color: var(--ink-muted);
1702
+ font-size: var(--text-2xs); line-height: 1.1; color: var(--ink-muted);
1711
1703
  }
1712
1704
  /* The tail: from the end of the axis to the cap. Dashed, because it is not
1713
1705
  time — it is the distance to a date nobody has. */
@@ -1750,7 +1742,7 @@ html.rosh-reduce-transparency *::after {
1750
1742
  .rosh-tl-count {
1751
1743
  position: absolute; transform: translate(9px, -14px);
1752
1744
  font-family: var(--font-mono); font-variant-numeric: tabular-nums;
1753
- font-size: 9px; font-weight: 600; line-height: 1; letter-spacing: -0.02em;
1745
+ font-size: var(--text-3xs); font-weight: 600; line-height: 1; letter-spacing: -0.02em;
1754
1746
  color: var(--tl-accent); pointer-events: none;
1755
1747
  padding: 1px 2px; border-radius: 4px; background: var(--surface-sunken);
1756
1748
  }
@@ -1762,7 +1754,7 @@ html.rosh-reduce-transparency *::after {
1762
1754
  }
1763
1755
  .rosh-tl-foldnum {
1764
1756
  font-family: var(--font-mono); font-variant-numeric: tabular-nums;
1765
- font-size: 9px; font-weight: 600; line-height: 1; letter-spacing: -0.02em;
1757
+ font-size: var(--text-3xs); font-weight: 600; line-height: 1; letter-spacing: -0.02em;
1766
1758
  }
1767
1759
  .rosh-tl-node.is-active { box-shadow: 0 0 0 2px var(--surface-sunken), 0 0 0 5px var(--line); }
1768
1760
  /* The flash as the scrubber's thumb crosses a mark. It rides the same 160ms
@@ -1791,12 +1783,12 @@ html.rosh-reduce-transparency *::after {
1791
1783
  background: var(--surface-raised); border: 1px solid var(--line);
1792
1784
  }
1793
1785
  .rosh-tl-name {
1794
- font-size: 11px; font-weight: 500; line-height: 1.25; color: var(--ink-strong);
1786
+ font-size: var(--text-2xs); font-weight: 500; line-height: 1.25; color: var(--ink-strong);
1795
1787
  transition: color 160ms cubic-bezier(0, 0, 0.2, 1);
1796
1788
  }
1797
1789
  .rosh-tl-date, .rosh-tl-detail {
1798
1790
  font-family: var(--font-mono); font-variant-numeric: tabular-nums;
1799
- font-size: 10px; line-height: 1.3; color: var(--ink-faint);
1791
+ font-size: var(--text-2xs); line-height: 1.3; color: var(--ink-faint);
1800
1792
  }
1801
1793
  .rosh-tl-detail { font-family: inherit; color: var(--ink-muted); margin-top: 2px; }
1802
1794
  .rosh-tl-label.is-current .rosh-tl-name { font-weight: 600; }
@@ -1815,7 +1807,7 @@ html.rosh-reduce-transparency *::after {
1815
1807
  }
1816
1808
  .rosh-tl-phase-label {
1817
1809
  position: absolute; transform: translateX(-50%); white-space: nowrap;
1818
- font-size: 9px; line-height: 1.2; pointer-events: none;
1810
+ font-size: var(--text-3xs); line-height: 1.2; pointer-events: none;
1819
1811
  }
1820
1812
 
1821
1813
  .rosh-tl-lead, .rosh-tl-cspan {
@@ -1826,7 +1818,7 @@ html.rosh-reduce-transparency *::after {
1826
1818
  .rosh-tl-pill {
1827
1819
  position: absolute; display: inline-flex; align-items: center; gap: 4px;
1828
1820
  height: 19px; padding: 0 7px; border-radius: 10px; cursor: pointer; white-space: nowrap;
1829
- font: inherit; font-size: 10px; font-weight: 500;
1821
+ font: inherit; font-size: var(--text-2xs); font-weight: 500;
1830
1822
  color: var(--ink); background: var(--surface); border: 1px solid currentColor;
1831
1823
  transition: box-shadow 160ms cubic-bezier(0, 0, 0.2, 1);
1832
1824
  }
@@ -1853,30 +1845,30 @@ html.rosh-reduce-transparency *::after {
1853
1845
  .rosh-tl-bubble.is-preview { max-width: 280px; min-width: 180px; }
1854
1846
  .rosh-tl-preview {
1855
1847
  display: flex; flex-direction: column; gap: 3px;
1856
- margin-top: 5px; font-size: 11px; color: var(--ink-muted);
1848
+ margin-top: 5px; font-size: var(--text-2xs); color: var(--ink-muted);
1857
1849
  }
1858
1850
  /* The way out of the popover and into the thing it is previewing. */
1859
1851
  .rosh-tl-bubble-open {
1860
1852
  margin-top: 6px; padding: 5px 0 0; width: 100%; text-align: left; cursor: pointer;
1861
1853
  background: none; border: 0; border-top-width: 1px; border-top-style: solid;
1862
1854
  border-top-color: var(--line);
1863
- font: inherit; font-size: 11px; font-weight: 500;
1855
+ font: inherit; font-size: var(--text-2xs); font-weight: 500;
1864
1856
  }
1865
1857
  .rosh-tl-bubble-open:hover { text-decoration: underline; }
1866
1858
  .rosh-tl-bubble-open:focus-visible:not(.rosh-host-focus *) { outline: 2px solid var(--tl-focus); outline-offset: 2px; }
1867
1859
 
1868
1860
  .rosh-tl-popover-head {
1869
- margin: 0 0 5px; font-size: 10px; font-weight: 500; letter-spacing: 0.06em;
1861
+ margin: 0 0 5px; font-size: var(--text-3xs); font-weight: 500; letter-spacing: 0.06em;
1870
1862
  text-transform: uppercase; color: var(--ink-faint);
1871
1863
  }
1872
1864
  .rosh-tl-popover ol { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 3px; }
1873
- .rosh-tl-popover li { display: flex; gap: 8px; justify-content: space-between; font-size: 11px; }
1865
+ .rosh-tl-popover li { display: flex; gap: 8px; justify-content: space-between; font-size: var(--text-2xs); }
1874
1866
  /* What a FOLD says, which is the same list plus each member's own card: a run
1875
1867
  that is all one date can never be opened, so this is the only place those
1876
1868
  members exist. A column, because a preview under a row is a paragraph and not
1877
1869
  a third column. */
1878
1870
  .rosh-tl-fold-list ol { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
1879
- .rosh-tl-fold-list li { display: flex; flex-direction: column; font-size: 11px; }
1871
+ .rosh-tl-fold-list li { display: flex; flex-direction: column; font-size: var(--text-2xs); }
1880
1872
  .rosh-tl-foldrow { display: flex; gap: 8px; justify-content: space-between; margin: 0; }
1881
1873
  .rosh-tl-fold-list .rosh-tl-preview { margin-top: 2px; }
1882
1874
 
@@ -1915,7 +1907,7 @@ html.rosh-reduce-transparency *::after {
1915
1907
  reads as the link it is. */
1916
1908
  .rosh-tl-open {
1917
1909
  padding: 0; border: 0; background: none; cursor: pointer; text-align: left;
1918
- font: inherit; font-size: 11px; font-weight: 500; line-height: 1.25;
1910
+ font: inherit; font-size: var(--text-2xs); font-weight: 500; line-height: 1.25;
1919
1911
  }
1920
1912
  .rosh-tl-open:hover { text-decoration: underline; }
1921
1913
  /* The radius shapes whichever outline is drawn, the host's included, so it is
@@ -1928,7 +1920,7 @@ html.rosh-reduce-transparency *::after {
1928
1920
  position: absolute; transform: translateX(-50%); z-index: 5; white-space: nowrap;
1929
1921
  transition: left 120ms cubic-bezier(0.22, 1, 0.36, 1);
1930
1922
  font-family: var(--font-mono); font-variant-numeric: tabular-nums;
1931
- font-size: 10.5px; font-weight: 500; padding: 3px 8px; border-radius: 7px;
1923
+ font-size: var(--text-2xs); font-weight: 500; padding: 3px 8px; border-radius: 7px;
1932
1924
  background: var(--ink-strongest); color: var(--surface);
1933
1925
  }
1934
1926
  .rosh-tl-chip::after {
@@ -1937,12 +1929,12 @@ html.rosh-reduce-transparency *::after {
1937
1929
  }
1938
1930
 
1939
1931
  .rosh-tl-pending { padding-top: 16px; }
1940
- .rosh-tl-pending-head { margin: 0 0 8px; font-size: 10px; font-weight: 500; color: var(--ink-faint); }
1932
+ .rosh-tl-pending-head { margin: 0 0 8px; font-size: var(--text-2xs); font-weight: 500; color: var(--ink-faint); }
1941
1933
  .rosh-tl-ghosts { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
1942
- .rosh-tl-ghosts li { display: flex; align-items: center; gap: 9px; font-size: 11px; color: var(--ink-muted); }
1934
+ .rosh-tl-ghosts li { display: flex; align-items: center; gap: 9px; font-size: var(--text-2xs); color: var(--ink-muted); }
1943
1935
  .rosh-tl-ghosts .rosh-tl-node { position: relative; --rosh-tl-shift: translate(0, 0); flex: none; }
1944
1936
  .rosh-tl-ghosts b { font-weight: 500; color: var(--ink-faint); }
1945
- .rosh-tl-more { margin-top: 9px; font-size: 11px; text-decoration: underline; cursor: pointer; }
1937
+ .rosh-tl-more { margin-top: 9px; font-size: var(--text-2xs); text-decoration: underline; cursor: pointer; }
1946
1938
 
1947
1939
  /* The vertical variant: under a 320px track the axis is abandoned rather than
1948
1940
  squeezed, and the connector carries the fill. */
@@ -1966,7 +1958,7 @@ html.rosh-reduce-transparency *::after {
1966
1958
  .rosh-tl-v > li[aria-current] .rosh-tl-name { font-weight: 600; }
1967
1959
  .rosh-tl-vgap {
1968
1960
  position: relative; margin: 0; padding: 0 0 14px 26px; min-height: 20px;
1969
- font-family: var(--font-mono); font-size: 10px; color: var(--ink-faint);
1961
+ font-family: var(--font-mono); font-size: var(--text-2xs); color: var(--ink-faint);
1970
1962
  }
1971
1963
 
1972
1964
  /* ── Timeline motion ────────────────────────────────────────────────────────
@@ -2067,13 +2059,17 @@ html.rosh-reduce-transparency *::after {
2067
2059
  :is([data-theme="dark"], .dark) .bg-gray-50 { background-color: var(--surface-sunken) !important; }
2068
2060
  :is([data-theme="dark"], .dark) .bg-gray-100 { background-color: var(--surface) !important; }
2069
2061
  :is([data-theme="dark"], .dark) .bg-gray-200 { background-color: var(--surface-raised) !important; }
2070
- /* Segmented's chosen option. The track is bg-gray-100 and the chosen option
2071
- bg-white, and the two remaps above send BOTH to --surface: in dark the chosen
2072
- option was the colour of its own track, told apart only by a faint shadow and
2073
- ink a step brighter than the others'. Raised instead, as the light theme's
2074
- white pill is raised off its grey track. After the remaps on purpose: the
2075
- same weight, so the later rule wins. */
2076
- :is([data-theme="dark"], .dark) .rosh-segmented-on { background-color: var(--surface-raised) !important; }
2062
+ /* Segmented's chosen option has no rule here. It was a white chip, which the
2063
+ remaps above sent to the same --surface as its bg-gray-100 track, so a rule
2064
+ raised it. Since 2026-10-12 (owner) it is the solid blue chip pill Tabs
2065
+ draw, and blue-600 is not remapped: the same chip in both themes, 3.1:1 on
2066
+ the dark track (tests/choiceStrip.test.tsx). */
2067
+ /* The choice strip's track (Segmented, pill Tabs) keeps the --surface fill
2068
+ above in dark, so the chip stays 3:1 on it, and gets its frame from a 1px
2069
+ INSET ring in --line-strong instead: a lighter fill would drop the chip to
2070
+ 2.4:1. Inset, so no size changes. Dark only; light has no edge (owner,
2071
+ 2026-10-13: the strip floated with no frame in dark). */
2072
+ :is([data-theme="dark"], .dark) .rosh-choice-track { box-shadow: inset 0 0 0 1px var(--line-strong) !important; }
2077
2073
 
2078
2074
  /* Text */
2079
2075
  :is([data-theme="dark"], .dark) .text-gray-900 { color: var(--ink-strongest) !important; }
@@ -2559,7 +2555,7 @@ input.rosh-field-shows-choice::placeholder { color: inherit; opacity: 1; }
2559
2555
  transition: opacity 300ms ease, transform 300ms ease;
2560
2556
  align-items: center;
2561
2557
  gap: 8px;
2562
- font-size: 13px;
2558
+ font-size: var(--text-sm);
2563
2559
  font-weight: 500;
2564
2560
  color: var(--rosh-toast-ink);
2565
2561
  max-width: min(90vw, 460px);
@@ -2594,7 +2590,7 @@ input.rosh-field-shows-choice::placeholder { color: inherit; opacity: 1; }
2594
2590
  }
2595
2591
  .rosh-notif-body { flex: 1; min-width: 0; }
2596
2592
  .rosh-notif-title {
2597
- font-size: 11px;
2593
+ font-size: var(--text-2xs);
2598
2594
  font-weight: 600;
2599
2595
  color: var(--rosh-toast-info);
2600
2596
  text-transform: uppercase;
@@ -2602,7 +2598,7 @@ input.rosh-field-shows-choice::placeholder { color: inherit; opacity: 1; }
2602
2598
  margin-bottom: 2px;
2603
2599
  }
2604
2600
  .rosh-notif-msg {
2605
- font-size: 13px;
2601
+ font-size: var(--text-sm);
2606
2602
  font-weight: 500;
2607
2603
  color: var(--rosh-toast-ink);
2608
2604
  line-height: 1.4;
@@ -2611,7 +2607,7 @@ input.rosh-field-shows-choice::placeholder { color: inherit; opacity: 1; }
2611
2607
  flex-shrink: 0;
2612
2608
  padding: 4px;
2613
2609
  color: var(--rosh-toast-dismiss);
2614
- font-size: 18px;
2610
+ font-size: var(--text-lg);
2615
2611
  line-height: 1;
2616
2612
  transition: color 0.2s;
2617
2613
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efficient-shell",
3
- "version": "6.4.0",
3
+ "version": "7.10.0",
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",
@@ -1,43 +0,0 @@
1
- import{peekBrowserStartUrl as e,claimBrowserStartUrl as t}from"./chunk-LWLCNQY7.js";import{AboutApp as o}from"./chunk-5MDQNFOG.js";import{WindowTitle as r}from"./chunk-QJHWLDEN.js";import"./chunk-DSSLOQDW.js";import"./chunk-I2H2CKID.js";import"./chunk-HQLAISFX.js";import"./chunk-5A7MWTXX.js";import"./chunk-S3LGKIZ3.js";import{confirm as a}from"./chunk-DBXZS7OA.js";import"./chunk-ZEIKSMFR.js";import"./chunk-UVBK6YSR.js";import"./chunk-7IQ3B77H.js";import"./chunk-FIEA5CGB.js";import"./chunk-D65T4H6J.js";import"./chunk-SBF5A6XV.js";import"./chunk-KNUR2UEG.js";import"./chunk-K6DKX55N.js";import"./chunk-C3QOHMR6.js";import{Icon as n}from"./chunk-2SSRFEOZ.js";import{useRef as s,useEffect as l,useState as i}from"react";import{jsxs as c,jsx as m,Fragment as d}from"react/jsx-runtime";var u="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 f(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 k=["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(u);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 d=s(void 0);void 0===d.current&&(d.current=e()),l(()=>{null!=d.current&&t(d.current)},[]);const p=d.current?f(d.current.url):"",[g,b]=i(w),[k,y]=i(p||g),[j,C]=i(k),[z,S]=i([k]),[R,W]=i(0),[L,D]=i(0),[E,H]=i(x),[I,O]=i(!1),[F,K]=i(null),U=s(null),A=s(null);l(()=>{try{localStorage.setItem(u,JSON.stringify(E))}catch{}},[E]);const B=e=>{const t=f(e);t&&(y(t),C(t),S(e=>{const o=e.slice(0,R+1);return o.push(t),o}),W(e=>e+1),O(!1))},M=()=>{"undefined"!=typeof window&&window.open(k,"_blank","noopener,noreferrer")},T=()=>{const e=F?.trim();e?(H(t=>[...t,{label:e,url:k}]),K(null)):K(null)};l(()=>{if(null===F)return;U.current?.focus(),U.current?.select();const e=e=>{const t=e.target;t?.closest("[data-bookmark-popover]")||K(null)},t=setTimeout(()=>document.addEventListener("mousedown",e),0);return()=>{clearTimeout(t),document.removeEventListener("mousedown",e)}},[null!==F]);const X=e=>{H(t=>t.filter((t,o)=>o!==e))},G=R>0,Q=R<z.length-1,q=E.some(e=>e.url===k),P="p-1.5 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(k)}`}),
4
- /* @__PURE__ */m(o,{app:"browser"}),
5
- /* @__PURE__ */c("div",{className:"flex items-center gap-1 px-2 py-1.5 border-b border-gray-200 bg-gray-50 shrink-0",children:[
6
- /* @__PURE__ */m("button",{onClick:()=>{if(R>0){const e=R-1;W(e),y(z[e]),C(z[e]),O(!1)}},disabled:!G,className:P,title:"Back",children:/* @__PURE__ */m(n,{name:"chevron-left",className:"h-4 w-4",strokeWidth:2})}),
7
- /* @__PURE__ */m("button",{onClick:()=>{if(R<z.length-1){const e=R+1;W(e),y(z[e]),C(z[e]),O(!1)}},disabled:!Q,className:P,title:"Forward",children:/* @__PURE__ */m(n,{name:"chevron-right",className:"h-4 w-4",strokeWidth:2})}),
8
- /* @__PURE__ */m("button",{onClick:()=>D(e=>e+1),className:P,title:"Refresh",children:/* @__PURE__ */m(n,{name:"refresh",className:"h-4 w-4",strokeWidth:1.8})}),
9
- /* @__PURE__ */m("button",{onClick:()=>B(g),className:P,title:"Home",children:/* @__PURE__ */m(n,{name:"home",className:"h-4 w-4",strokeWidth:1.8})}),
10
- /* @__PURE__ */m("form",{onSubmit:e=>{e.preventDefault(),B(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:k.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…"}),k!==j&&/* @__PURE__ */m("button",{type:"button",onClick:()=>C(k),className:"px-1.5 text-[10px] text-gray-400 hover:text-gray-700",title:"Reset to current URL",children:"×"})]})}),
13
- /* @__PURE__ */m("button",{"data-bookmark-popover":!0,onClick:()=>q?X(E.findIndex(e=>e.url===k)):void K(v(k)),className:P+" "+(q?"text-yellow-500":""),title:q?"Remove bookmark":"Add bookmark",children:/* @__PURE__ */m(n,{name:"star",className:"h-4 w-4",fill:q?"currentColor":"none",strokeWidth:1.5})}),
14
- /* @__PURE__ */m("button",{onClick:M,className:P,title:"Open in new tab",children:/* @__PURE__ */m(n,{name:"external",className:"h-4 w-4",strokeWidth:1.5})}),
15
- /* @__PURE__ */m("button",{onClick:()=>O(e=>!e),className:P,title:"Embedding help",children:/* @__PURE__ */m(n,{name:"help",className:"h-4 w-4",strokeWidth:1.5})})]}),null!==F&&/* @__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-[11px] font-semibold uppercase tracking-wide text-gray-500 mb-1",children:"Bookmark this page"}),
17
- /* @__PURE__ */m("div",{className:"text-[11px] text-gray-400 truncate mb-2 font-mono",title:k,children:k}),
18
- /* @__PURE__ */m("input",{ref:U,type:"text",value:F,onChange:e=>K(e.target.value),onKeyDown:e=>{"Enter"===e.key?T():"Escape"===e.key&&K(null)},placeholder:"Name",className:"w-full text-sm px-2 py-1.5 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:()=>K(null),className:"px-2 py-1 text-xs text-gray-600 hover:bg-gray-100 rounded",children:"Cancel"}),
21
- /* @__PURE__ */m("button",{onClick:T,disabled:!F.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===E.length&&/* @__PURE__ */m("span",{className:"text-[11px] text-gray-400 italic px-2",children:"No bookmarks yet — star the address bar to add one."}),E.map((e,t)=>/* @__PURE__ */c("button",{onClick:()=>B(e.url),onContextMenu:async o=>{o.preventDefault();await a({title:"Remove bookmark",message:`"${e.label}" will be removed from your bookmarks.`,confirmLabel:"Remove",variant:"danger"})&&X(t)},className:"flex items-center gap-1.5 px-2 py-0.5 rounded text-[12px] 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(k);try{localStorage.setItem(h,k)}catch{}},className:"px-2 py-0.5 text-[11px] 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:k,iframeKey:L,iframeRef:A,openExternal:M,showHelp:I,dismissHelp:()=>O(!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:a,dismissHelp:s}){const[u,h]=i(!1);l(()=>{h(!1)},[e]);return function(e){try{const t=new URL(e).hostname.toLowerCase();return k.some(e=>t===e||t.endsWith("."+e))}catch{return!1}}(e)&&!u?/* @__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(n,{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(n,{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(d,{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),a&&/* @__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-[11px] 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-XO2AMGVU.js";import{useWidgetSettings as n}from"./chunk-QJHWLDEN.js";import"./chunk-DSSLOQDW.js";import"./chunk-I2H2CKID.js";import"./chunk-HQLAISFX.js";import"./chunk-5A7MWTXX.js";import"./chunk-S3LGKIZ3.js";import"./chunk-DBXZS7OA.js";import"./chunk-ZEIKSMFR.js";import"./chunk-UVBK6YSR.js";import"./chunk-7IQ3B77H.js";import"./chunk-FIEA5CGB.js";import"./chunk-D65T4H6J.js";import"./chunk-KNUR2UEG.js";import"./chunk-K6DKX55N.js";import"./chunk-C3QOHMR6.js";import{Icon as l}from"./chunk-2SSRFEOZ.js";import{useState as r,useRef as c,useCallback as i,useEffect as a}from"react";import{jsxs as o,Fragment as s,jsx as u}from"react/jsx-runtime";var d="calc_appearance";function h(){const[h,m]=r("0"),[b,k]=r(null),[p,g]=r(null),[y,N]=r(!1),[x,f]=r(""),[v,C]=r([]),[$,j]=r(!1),[S,E]=r(()=>e(d)),[w,A]=r(!1),[D,F]=r(S),I=c(null);n(i(()=>{F({...S}),A(!0)},[S]));const T=i(e=>{f(""),m(t=>y||"0"===t?(N(!1),"."===e?"0.":e):"."===e&&t.includes(".")?t:t+e)},[y]),W=i(()=>{m("0"),k(null),g(null),N(!1)},[]),B=i((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}},[]),K=i(e=>{const t=parseFloat(h);if(null!==b&&p&&!y){const e=B(b,t,p);m(String(e)),k(e),C(n=>[`${b} ${p} ${t} = ${e}`,...n].slice(0,20))}else k(t);g(e),N(!0)},[h,b,p,y,B]),L=i(()=>{if(null===b||!p)return;const e=parseFloat(h),t=B(b,e,p),n=`${b} ${p} ${e} =`;C(e=>[`${n} ${t}`,...e].slice(0,20)),f(n),m(String(t)),k(null),g(null),N(!0)},[h,b,p,B]),O=i(()=>{m(e=>String(parseFloat(e)/100))},[]),X=i(()=>{m(e=>e.startsWith("-")?e.slice(1):"0"===e?e:"-"+e)},[]);a(()=>{const e=e=>{const t=e.target.tagName;"INPUT"!==t&&"TEXTAREA"!==t&&"SELECT"!==t&&(e.key>="0"&&e.key<="9"?T(e.key):"."===e.key?T("."):"+"===e.key?K("+"):"-"===e.key?K("-"):"*"===e.key?K("×"):"/"===e.key?(e.preventDefault(),K("÷")):"Enter"===e.key||"="===e.key?("Enter"===e.key&&e.target instanceof Node&&I.current?.contains(e.target)&&e.preventDefault(),L()):"Escape"===e.key?W():"Backspace"===e.key?m(e=>e.length>1?e.slice(0,-1):"0"):"%"===e.key&&O())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[T,K,L,W,O]);const H="flex items-center justify-center rounded-lg text-sm font-medium transition-colors",R=`${H} bg-white border border-gray-200 text-gray-900 hover:bg-gray-50 active:bg-gray-100`,M=`${H} bg-blue-50 border border-blue-200 text-blue-700 hover:bg-blue-100 active:bg-blue-200`,Q=`${H} bg-gray-100 border border-gray-200 text-gray-600 hover:bg-gray-200 active:bg-gray-300`,U=`${H} bg-blue-600 text-white hover:bg-blue-700 active:bg-blue-800`;/* @__PURE__ */
2
- return o(s,{children:[
3
- /* @__PURE__ */o("div",{ref:I,className:"flex flex-col h-full",style:{opacity:S.activeOpacity/100,backdropFilter:S.activeBlur>0?`blur(${S.activeBlur}px)`:void 0},children:[
4
- /* @__PURE__ */o("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:v.slice(0,3).reverse().map((e,t)=>/* @__PURE__ */u("div",{className:"text-[11px] text-slate-400 text-right font-mono truncate",children:e},t))}),(x||p&&null!==b)&&/* @__PURE__ */u("div",{className:"text-base text-slate-600 text-right font-mono",children:x||`${b} ${p} ${y?"":h}`}),
6
- /* @__PURE__ */o("div",{className:"flex items-center gap-2",children:[
7
- /* @__PURE__ */u("button",{onClick:()=>{navigator.clipboard.writeText(h),j(!0),setTimeout(()=>j(!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(l,$?{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)})(h)})]})]}),
9
- /* @__PURE__ */o("div",{className:"grid grid-cols-4 grid-rows-5 gap-1.5 flex-1 min-h-0 p-2",children:[
10
- /* @__PURE__ */u("button",{onClick:W,className:Q,children:"AC"}),
11
- /* @__PURE__ */u("button",{onClick:X,className:Q,children:"+/−"}),
12
- /* @__PURE__ */u("button",{onClick:O,className:Q,children:"%"}),
13
- /* @__PURE__ */u("button",{onClick:()=>K("÷"),className:`${M} ${"÷"===p?"ring-2 ring-blue-400":""}`,children:"÷"}),
14
- /* @__PURE__ */u("button",{onClick:()=>T("7"),className:R,children:"7"}),
15
- /* @__PURE__ */u("button",{onClick:()=>T("8"),className:R,children:"8"}),
16
- /* @__PURE__ */u("button",{onClick:()=>T("9"),className:R,children:"9"}),
17
- /* @__PURE__ */u("button",{onClick:()=>K("×"),className:`${M} ${"×"===p?"ring-2 ring-blue-400":""}`,children:"×"}),
18
- /* @__PURE__ */u("button",{onClick:()=>T("4"),className:R,children:"4"}),
19
- /* @__PURE__ */u("button",{onClick:()=>T("5"),className:R,children:"5"}),
20
- /* @__PURE__ */u("button",{onClick:()=>T("6"),className:R,children:"6"}),
21
- /* @__PURE__ */u("button",{onClick:()=>K("-"),className:`${M} ${"-"===p?"ring-2 ring-blue-400":""}`,children:"−"}),
22
- /* @__PURE__ */u("button",{onClick:()=>T("1"),className:R,children:"1"}),
23
- /* @__PURE__ */u("button",{onClick:()=>T("2"),className:R,children:"2"}),
24
- /* @__PURE__ */u("button",{onClick:()=>T("3"),className:R,children:"3"}),
25
- /* @__PURE__ */u("button",{onClick:()=>K("+"),className:`${M} ${"+"===p?"ring-2 ring-blue-400":""}`,children:"+"}),
26
- /* @__PURE__ */u("button",{onClick:()=>T("0"),className:`${R} col-span-2`,children:"0"}),
27
- /* @__PURE__ */u("button",{onClick:()=>T("."),className:R,children:"."}),
28
- /* @__PURE__ */u("button",{onClick:L,className:U,children:"="})]})]}),
29
- /* @__PURE__ */u(t,{open:w,onClose:()=>A(!1),title:"Calculator Settings",appearance:D,onAppearanceChange:F,onSave:()=>{E(D),localStorage.setItem(d,JSON.stringify(D)),A(!1)}})]})}export{h as default};
@@ -1 +0,0 @@
1
- export{ConfirmProvider,confirm,confirmDestructive,prompt,useConfirm}from"./chunk-DBXZS7OA.js";import"./chunk-UVBK6YSR.js";import"./chunk-FIEA5CGB.js";import"./chunk-K6DKX55N.js";import"./chunk-C3QOHMR6.js";import"./chunk-2SSRFEOZ.js";
@@ -1,21 +0,0 @@
1
- import{loadAppearance as e,WidgetSettingsModal as t}from"./chunk-XO2AMGVU.js";import{useWidgetSettings as r}from"./chunk-QJHWLDEN.js";import"./chunk-DSSLOQDW.js";import"./chunk-I2H2CKID.js";import"./chunk-HQLAISFX.js";import"./chunk-5A7MWTXX.js";import"./chunk-S3LGKIZ3.js";import"./chunk-DBXZS7OA.js";import"./chunk-ZEIKSMFR.js";import"./chunk-UVBK6YSR.js";import"./chunk-7IQ3B77H.js";import"./chunk-FIEA5CGB.js";import"./chunk-D65T4H6J.js";import"./chunk-KNUR2UEG.js";import"./chunk-K6DKX55N.js";import"./chunk-C3QOHMR6.js";import"./chunk-2SSRFEOZ.js";import{useState as n,useCallback as a,useEffect as s}from"react";import{jsxs as c,Fragment as o,jsx as i}from"react/jsx-runtime";var l=["USD","CNY","AUD","GBP","EUR","JPY","CAD","THB","NZD","SGD","HKD","CHF","KRW","INR","MXN","BRL"],m=[["USD","CNY"],["USD","AUD"],["GBP","USD"],["USD","JPY"]],u="currency_pairs",p="currency_appearance",d="currency_rates_cache";function h(e){try{const t=JSON.parse(localStorage.getItem(d)||"{}")[e];if(t&&Date.now()-t.timestamp<36e5)return t.rates}catch{}return null}function g(e,t){try{const r=JSON.parse(localStorage.getItem(d)||"{}");r[e]={rates:t,timestamp:Date.now()},localStorage.setItem(d,JSON.stringify(r))}catch{}}function x(){try{const e=JSON.parse(localStorage.getItem(u)||"");if(Array.isArray(e)&&e.length)return e.slice(0,4)}catch{}return m}var y={USD:"🇺🇸",CNY:"🇨🇳",AUD:"🇦🇺",GBP:"🇬🇧",JPY:"🇯🇵",CAD:"🇨🇦",EUR:"🇪🇺",THB:"🇹🇭",NZD:"🇳🇿",SGD:"🇸🇬",HKD:"🇭🇰",CHF:"🇨🇭",KRW:"🇰🇷",INR:"🇮🇳",MXN:"🇲🇽",BRL:"🇧🇷"};function f(){const[m,d]=n(x),[f,N]=n(()=>e(p)),[b,S]=n({}),[v,D]=n(!1),[k,j]=n(!1),[C,I]=n([]),[U,A]=n(f),[B,O]=n("USD"),[R,H]=n("CNY");r(a(()=>{I([...m]),A({...f}),j(!0)},[m,f])),s(()=>{const e=[...new Set(m.map(([e])=>e))];let t=!0;return async function(){D(!0);const r={};for(const t of e){const e=h(t);if(e)r[t]=e;else try{const e=await fetch(`https://open.er-api.com/v6/latest/${t}`),n=await e.json();n.rates&&(r[t]=n.rates,g(t,n.rates))}catch{}}t&&(S(r),D(!1))}(),()=>{t=!1}},[m]);/* @__PURE__ */
2
- return c(o,{children:[
3
- /* @__PURE__ */i("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:[v&&/* @__PURE__ */i("div",{className:"text-xs text-gray-400 text-center py-4",children:"Loading rates..."}),m.map(([e,t],r)=>{const n=b[e]?.[t];/* @__PURE__ */
4
- return c("button",{onClick:()=>{const e=m.map((e,t)=>t===r?[e[1],e[0]]:e);d(e),localStorage.setItem(u,JSON.stringify(e))},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-1.5",children:[
6
- /* @__PURE__ */i("span",{className:"text-base",children:y[e]||""}),
7
- /* @__PURE__ */i("span",{className:"text-sm font-semibold text-gray-700",children:e}),
8
- /* @__PURE__ */i("svg",{className:"h-3 w-3 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:/* @__PURE__ */i("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4"})}),
9
- /* @__PURE__ */i("span",{className:"text-base",children:y[t]||""}),
10
- /* @__PURE__ */i("span",{className:"text-sm font-semibold text-gray-700",children:t})]}),
11
- /* @__PURE__ */i("div",{className:"text-base font-mono font-semibold text-gray-900 tabular-nums",children:null!=n?n.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:4}):"—"})]},`${e}-${t}-${r}`)})]})}),
12
- /* @__PURE__ */i(t,{open:k,onClose:()=>j(!1),title:"Currency Settings",appearance:U,onAppearanceChange:A,onSave:()=>{if(0===C.length)return;const e=C.slice(0,4);d(e),N(U),localStorage.setItem(u,JSON.stringify(e)),localStorage.setItem(p,JSON.stringify(U)),j(!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-[11px] font-normal text-gray-400",children:["(",C.length,"/",4,")"]})]}),
15
- /* @__PURE__ */i("div",{className:"space-y-1 mb-2",children:C.map(([e,t],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:[y[e]||""," ",e," → ",y[t]||""," ",t]}),
17
- /* @__PURE__ */i("button",{onClick:()=>I(e=>e.filter((e,t)=>t!==r)),className:"text-red-400 hover:text-red-600",children:"×"})]},r))}),C.length<4?/* @__PURE__ */c("div",{className:"flex items-center gap-2",children:[
18
- /* @__PURE__ */i("select",{value:B,onChange:e=>O(e.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:l.map(e=>/* @__PURE__ */i("option",{children:e},e))}),
19
- /* @__PURE__ */i("span",{className:"text-gray-400",children:"→"}),
20
- /* @__PURE__ */i("select",{value:R,onChange:e=>H(e.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:l.map(e=>/* @__PURE__ */i("option",{children:e},e))}),
21
- /* @__PURE__ */i("button",{onClick:()=>{B!==R&&C.length<4&&I(e=>[...e,[B,R]])},className:"text-sm font-medium text-blue-600 hover:text-blue-800 px-2",children:"+ Add"})]}):/* @__PURE__ */c("p",{className:"text-[11px] text-gray-400 italic",children:["Max ",4," pairs — remove one to add another."]})]})})]})}export{f as default};