react-os-shell 4.54.0 → 4.63.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 (46) hide show
  1. package/README.md +8 -4
  2. package/dist/{Browser-5NHZNED2.js → Browser-SPTNLEMR.js} +5 -5
  3. package/dist/{Browser-5NHZNED2.js.map → Browser-SPTNLEMR.js.map} +1 -1
  4. package/dist/{Calculator-PHKNMRLX.js → Calculator-XMOPPCK3.js} +4 -4
  5. package/dist/{Calculator-PHKNMRLX.js.map → Calculator-XMOPPCK3.js.map} +1 -1
  6. package/dist/{CurrencyConverter-MEG7RHEK.js → CurrencyConverter-24HNX6C6.js} +4 -4
  7. package/dist/{CurrencyConverter-MEG7RHEK.js.map → CurrencyConverter-24HNX6C6.js.map} +1 -1
  8. package/dist/{Documents-YOUMLERR.js → Documents-GMRVVCH7.js} +5 -5
  9. package/dist/{Documents-YOUMLERR.js.map → Documents-GMRVVCH7.js.map} +1 -1
  10. package/dist/{Files-4NQ5IFUE.js → Files-ITH4SVML.js} +5 -5
  11. package/dist/{Files-4NQ5IFUE.js.map → Files-ITH4SVML.js.map} +1 -1
  12. package/dist/{Notepad-UHTEKEEM.js → Notepad-GE5P55TL.js} +5 -5
  13. package/dist/{Notepad-UHTEKEEM.js.map → Notepad-GE5P55TL.js.map} +1 -1
  14. package/dist/{PomodoroTimer-5B5AFXQH.js → PomodoroTimer-ER5STVKM.js} +4 -4
  15. package/dist/{PomodoroTimer-5B5AFXQH.js.map → PomodoroTimer-ER5STVKM.js.map} +1 -1
  16. package/dist/{Preview-2CCBN25S.js → Preview-UXVDXCDJ.js} +5 -5
  17. package/dist/{Preview-2CCBN25S.js.map → Preview-UXVDXCDJ.js.map} +1 -1
  18. package/dist/{Spreadsheet-2N6TMVQU.js → Spreadsheet-B32JQVX4.js} +5 -5
  19. package/dist/{Spreadsheet-2N6TMVQU.js.map → Spreadsheet-B32JQVX4.js.map} +1 -1
  20. package/dist/{Stock-KTWRNBI6.js → Stock-FSFPFDQT.js} +4 -4
  21. package/dist/{Stock-KTWRNBI6.js.map → Stock-FSFPFDQT.js.map} +1 -1
  22. package/dist/{Weather-B7MO7N4N.js → Weather-HXOERJJV.js} +4 -4
  23. package/dist/{Weather-B7MO7N4N.js.map → Weather-HXOERJJV.js.map} +1 -1
  24. package/dist/{WorldClock-M5MEV74F.js → WorldClock-2FUGLIUZ.js} +4 -4
  25. package/dist/{WorldClock-M5MEV74F.js.map → WorldClock-2FUGLIUZ.js.map} +1 -1
  26. package/dist/apps/index.js +15 -15
  27. package/dist/{chunk-3SUSQHOW.js → chunk-CWA27IGB.js} +547 -96
  28. package/dist/chunk-CWA27IGB.js.map +1 -0
  29. package/dist/{chunk-5S65ZC5W.js → chunk-JMESET3G.js} +81 -7
  30. package/dist/chunk-JMESET3G.js.map +1 -0
  31. package/dist/{chunk-FHPPPDHL.js → chunk-LYQVLRWQ.js} +3 -3
  32. package/dist/{chunk-FHPPPDHL.js.map → chunk-LYQVLRWQ.js.map} +1 -1
  33. package/dist/{chunk-BIZJ7RLC.js → chunk-TO6ZZHJK.js} +4 -4
  34. package/dist/{chunk-BIZJ7RLC.js.map → chunk-TO6ZZHJK.js.map} +1 -1
  35. package/dist/chunk-WCGHIJZR.js +7 -0
  36. package/dist/{chunk-XVXEYKMT.js.map → chunk-WCGHIJZR.js.map} +1 -1
  37. package/dist/{index-B6QGa8SJ.d.ts → index-Ka32s3Ij.d.ts} +181 -3
  38. package/dist/index.d.ts +29 -8
  39. package/dist/index.js +56 -18
  40. package/dist/index.js.map +1 -1
  41. package/dist/ui/index.d.ts +1 -1
  42. package/dist/ui/index.js +2 -2
  43. package/package.json +1 -1
  44. package/dist/chunk-3SUSQHOW.js.map +0 -1
  45. package/dist/chunk-5S65ZC5W.js.map +0 -1
  46. package/dist/chunk-XVXEYKMT.js +0 -7
@@ -1,4 +1,4 @@
1
- import { Modal } from './chunk-5S65ZC5W.js';
1
+ import { Modal } from './chunk-JMESET3G.js';
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
3
 
4
4
  var DEFAULT_APPEARANCE = { activeOpacity: 70, inactiveOpacity: 50, activeBlur: 0, inactiveBlur: 0 };
@@ -138,5 +138,5 @@ function WidgetSettingsModal({ open, onClose, title, appearance, onAppearanceCha
138
138
  }
139
139
 
140
140
  export { WidgetSettingsModal, loadAppearance };
141
- //# sourceMappingURL=chunk-FHPPPDHL.js.map
142
- //# sourceMappingURL=chunk-FHPPPDHL.js.map
141
+ //# sourceMappingURL=chunk-LYQVLRWQ.js.map
142
+ //# sourceMappingURL=chunk-LYQVLRWQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/shell/WidgetSettingsModal.tsx"],"names":[],"mappings":";;;AASO,IAAM,kBAAA,GAAuC,EAAE,aAAA,EAAe,EAAA,EAAI,iBAAiB,EAAA,EAAI,UAAA,EAAY,CAAA,EAAG,YAAA,EAAc,CAAA,EAAE;AAEtH,SAAS,eAAe,GAAA,EAA+B;AAC5D,EAAA,IAAI;AACF,IAAA,MAAM,QAAQ,IAAA,CAAK,KAAA,CAAM,aAAa,OAAA,CAAQ,GAAG,KAAK,EAAE,CAAA;AAExD,IAAA,IAAI,KAAA,CAAM,IAAA,IAAQ,IAAA,IAAQ,KAAA,CAAM,cAAc,IAAA,EAAM;AAClD,MAAA,KAAA,CAAM,aAAa,KAAA,CAAM,IAAA;AACzB,MAAA,KAAA,CAAM,eAAe,KAAA,CAAM,IAAA;AAC3B,MAAA,OAAO,KAAA,CAAM,IAAA;AAAA,IACf;AACA,IAAA,OAAO,EAAE,GAAG,kBAAA,EAAoB,GAAG,KAAA,EAAM;AAAA,EAC3C,CAAA,CAAA,MACM;AAAE,IAAA,OAAO,kBAAA;AAAA,EAAoB;AACrC;AAGe,SAAR,mBAAA,CAAqC,EAAE,IAAA,EAAM,OAAA,EAAS,OAAO,UAAA,EAAY,kBAAA,EAAoB,MAAA,EAAQ,QAAA,EAAS,EAQlH;AACD,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,MAAM,GAAA,GAAM,sFAAA;AACZ,EAAA,MAAM,GAAA,GAAM,yDAAA;AAEZ,EAAA,uBACE,GAAA,CAAC,SAAI,aAAA,EAAe,CAAA,CAAA,KAAK,EAAE,eAAA,EAAgB,EAAG,aAAA,EAAe,CAAA,CAAA,KAAK,CAAA,CAAE,eAAA,IACpE,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,MAAY,OAAA,EAAkB,KAAA,EAAc,MAAK,IAAA,EACtD,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACZ,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,yBAGA,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,0CAAA,EAA2C,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBACnE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,QAAA,EAAM,CAAA;AAAA,0BAC9D,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAW,GAAA,EAAK,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,UAAK,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,qCAAQ,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,kBAAA,UAAA,CAAW,aAAA;AAAA,kBAAc;AAAA,iBAAA,EAAC;AAAA,eAAA,EAAO,CAAA;AAAA,8BACjF,GAAA;AAAA,gBAAC,OAAA;AAAA,gBAAA;AAAA,kBAAM,IAAA,EAAK,OAAA;AAAA,kBAAQ,GAAA,EAAK,EAAA;AAAA,kBAAI,GAAA,EAAK,GAAA;AAAA,kBAAK,OAAO,UAAA,CAAW,aAAA;AAAA,kBACvD,QAAA,EAAU,CAAA,CAAA,KAAK,kBAAA,CAAmB,EAAE,GAAG,UAAA,EAAY,aAAA,EAAe,CAAC,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,kBAAG,SAAA,EAAW;AAAA;AAAA;AAAK,aAAA,EAC1G,CAAA;AAAA,iCACC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAW,GAAA,EAAK,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,UAAK,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,qCAAQ,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,kBAAA,UAAA,CAAW,UAAA;AAAA,kBAAW;AAAA,iBAAA,EAAE;AAAA,eAAA,EAAO,CAAA;AAAA,8BAC5E,GAAA;AAAA,gBAAC,OAAA;AAAA,gBAAA;AAAA,kBAAM,IAAA,EAAK,OAAA;AAAA,kBAAQ,GAAA,EAAK,CAAA;AAAA,kBAAG,GAAA,EAAK,EAAA;AAAA,kBAAI,OAAO,UAAA,CAAW,UAAA;AAAA,kBACrD,QAAA,EAAU,CAAA,CAAA,KAAK,kBAAA,CAAmB,EAAE,GAAG,UAAA,EAAY,UAAA,EAAY,CAAC,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,kBAAG,SAAA,EAAW;AAAA;AAAA;AAAK,aAAA,EACvG;AAAA,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,6BACC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,0BAChE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAW,GAAA,EAAK,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,UAAK,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,qCAAQ,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,kBAAA,UAAA,CAAW,eAAA;AAAA,kBAAgB;AAAA,iBAAA,EAAC;AAAA,eAAA,EAAO,CAAA;AAAA,8BACnF,GAAA;AAAA,gBAAC,OAAA;AAAA,gBAAA;AAAA,kBAAM,IAAA,EAAK,OAAA;AAAA,kBAAQ,GAAA,EAAK,EAAA;AAAA,kBAAI,GAAA,EAAK,GAAA;AAAA,kBAAK,OAAO,UAAA,CAAW,eAAA;AAAA,kBACvD,QAAA,EAAU,CAAA,CAAA,KAAK,kBAAA,CAAmB,EAAE,GAAG,UAAA,EAAY,eAAA,EAAiB,CAAC,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,kBAAG,SAAA,EAAW;AAAA;AAAA;AAAK,aAAA,EAC5G,CAAA;AAAA,iCACC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAW,GAAA,EAAK,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,UAAK,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,qCAAQ,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,kBAAA,UAAA,CAAW,YAAA;AAAA,kBAAa;AAAA,iBAAA,EAAE;AAAA,eAAA,EAAO,CAAA;AAAA,8BAC9E,GAAA;AAAA,gBAAC,OAAA;AAAA,gBAAA;AAAA,kBAAM,IAAA,EAAK,OAAA;AAAA,kBAAQ,GAAA,EAAK,CAAA;AAAA,kBAAG,GAAA,EAAK,EAAA;AAAA,kBAAI,OAAO,UAAA,CAAW,YAAA;AAAA,kBACrD,QAAA,EAAU,CAAA,CAAA,KAAK,kBAAA,CAAmB,EAAE,GAAG,UAAA,EAAY,YAAA,EAAc,CAAC,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,kBAAG,SAAA,EAAW;AAAA;AAAA;AAAK,aAAA,EACzG;AAAA,WAAA,EACF;AAAA,SAAA,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAGA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAAO,OAAA,EAAS,MAAA;AAAA,UACf,SAAA,EAAU,gGAAA;AAAA,UAAiG,QAAA,EAAA;AAAA;AAAA,OAAI;AAAA,sBACjH,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAAO,OAAA,EAAS,OAAA;AAAA,UACf,SAAA,EAAU,6GAAA;AAAA,UAA8G,QAAA,EAAA;AAAA;AAAA;AAAM,KAAA,EAClI;AAAA,GAAA,EACF,GACF,CAAA,EACA,CAAA;AAEJ","file":"chunk-FHPPPDHL.js","sourcesContent":["import Modal from './Modal';\n\nexport interface WidgetAppearance {\n activeOpacity: number;\n inactiveOpacity: number;\n activeBlur: number;\n inactiveBlur: number;\n}\n\nexport const DEFAULT_APPEARANCE: WidgetAppearance = { activeOpacity: 70, inactiveOpacity: 50, activeBlur: 0, inactiveBlur: 0 };\n\nexport function loadAppearance(key: string): WidgetAppearance {\n try {\n const saved = JSON.parse(localStorage.getItem(key) || '');\n // Migrate old single `blur` field to activeBlur/inactiveBlur\n if (saved.blur != null && saved.activeBlur == null) {\n saved.activeBlur = saved.blur;\n saved.inactiveBlur = saved.blur;\n delete saved.blur;\n }\n return { ...DEFAULT_APPEARANCE, ...saved };\n }\n catch { return DEFAULT_APPEARANCE; }\n}\n\n/** Reusable settings modal for widgets — renders appearance sliders + optional extra content above */\nexport default function WidgetSettingsModal({ open, onClose, title, appearance, onAppearanceChange, onSave, children }: {\n open: boolean;\n onClose: () => void;\n title: string;\n appearance: WidgetAppearance;\n onAppearanceChange: (a: WidgetAppearance) => void;\n onSave: () => void;\n children?: React.ReactNode;\n}) {\n if (!open) return null;\n\n const inp = 'w-full h-1.5 rounded-full appearance-none bg-gray-200 cursor-pointer accent-blue-500';\n const lbl = 'flex items-center justify-between text-xs text-gray-500';\n\n return (\n <div onPointerDown={e => e.stopPropagation()} onContextMenu={e => e.stopPropagation()}>\n <Modal open={open} onClose={onClose} title={title} size=\"sm\">\n <div className=\"space-y-4\">\n {children}\n\n {/* Appearance */}\n <div>\n <h3 className=\"text-sm font-semibold text-gray-700 mb-3\">Appearance</h3>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <div className=\"text-xs font-medium text-gray-600 mb-2\">Active</div>\n <div className=\"space-y-2\">\n <div>\n <div className={lbl}><span>Opacity</span><span>{appearance.activeOpacity}%</span></div>\n <input type=\"range\" min={20} max={100} value={appearance.activeOpacity}\n onChange={e => onAppearanceChange({ ...appearance, activeOpacity: +e.target.value })} className={inp} />\n </div>\n <div>\n <div className={lbl}><span>Blur</span><span>{appearance.activeBlur}px</span></div>\n <input type=\"range\" min={0} max={20} value={appearance.activeBlur}\n onChange={e => onAppearanceChange({ ...appearance, activeBlur: +e.target.value })} className={inp} />\n </div>\n </div>\n </div>\n <div>\n <div className=\"text-xs font-medium text-gray-600 mb-2\">Inactive</div>\n <div className=\"space-y-2\">\n <div>\n <div className={lbl}><span>Opacity</span><span>{appearance.inactiveOpacity}%</span></div>\n <input type=\"range\" min={20} max={100} value={appearance.inactiveOpacity}\n onChange={e => onAppearanceChange({ ...appearance, inactiveOpacity: +e.target.value })} className={inp} />\n </div>\n <div>\n <div className={lbl}><span>Blur</span><span>{appearance.inactiveBlur}px</span></div>\n <input type=\"range\" min={0} max={20} value={appearance.inactiveBlur}\n onChange={e => onAppearanceChange({ ...appearance, inactiveBlur: +e.target.value })} className={inp} />\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {/* Actions */}\n <div className=\"flex gap-2 pt-2\">\n <button onClick={onSave}\n className=\"flex-1 text-sm font-medium py-2 rounded-lg bg-blue-600 text-white hover:bg-blue-700 transition\">Save</button>\n <button onClick={onClose}\n className=\"flex-1 text-sm font-medium py-2 rounded-lg border border-gray-300 text-gray-600 hover:bg-gray-50 transition\">Cancel</button>\n </div>\n </div>\n </Modal>\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/shell/WidgetSettingsModal.tsx"],"names":[],"mappings":"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","file":"chunk-LYQVLRWQ.js","sourcesContent":["import Modal from './Modal';\n\nexport interface WidgetAppearance {\n activeOpacity: number;\n inactiveOpacity: number;\n activeBlur: number;\n inactiveBlur: number;\n}\n\nexport const DEFAULT_APPEARANCE: WidgetAppearance = { activeOpacity: 70, inactiveOpacity: 50, activeBlur: 0, inactiveBlur: 0 };\n\nexport function loadAppearance(key: string): WidgetAppearance {\n try {\n const saved = JSON.parse(localStorage.getItem(key) || '');\n // Migrate old single `blur` field to activeBlur/inactiveBlur\n if (saved.blur != null && saved.activeBlur == null) {\n saved.activeBlur = saved.blur;\n saved.inactiveBlur = saved.blur;\n delete saved.blur;\n }\n return { ...DEFAULT_APPEARANCE, ...saved };\n }\n catch { return DEFAULT_APPEARANCE; }\n}\n\n/** Reusable settings modal for widgets — renders appearance sliders + optional extra content above */\nexport default function WidgetSettingsModal({ open, onClose, title, appearance, onAppearanceChange, onSave, children }: {\n open: boolean;\n onClose: () => void;\n title: string;\n appearance: WidgetAppearance;\n onAppearanceChange: (a: WidgetAppearance) => void;\n onSave: () => void;\n children?: React.ReactNode;\n}) {\n if (!open) return null;\n\n const inp = 'w-full h-1.5 rounded-full appearance-none bg-gray-200 cursor-pointer accent-blue-500';\n const lbl = 'flex items-center justify-between text-xs text-gray-500';\n\n return (\n <div onPointerDown={e => e.stopPropagation()} onContextMenu={e => e.stopPropagation()}>\n <Modal open={open} onClose={onClose} title={title} size=\"sm\">\n <div className=\"space-y-4\">\n {children}\n\n {/* Appearance */}\n <div>\n <h3 className=\"text-sm font-semibold text-gray-700 mb-3\">Appearance</h3>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <div className=\"text-xs font-medium text-gray-600 mb-2\">Active</div>\n <div className=\"space-y-2\">\n <div>\n <div className={lbl}><span>Opacity</span><span>{appearance.activeOpacity}%</span></div>\n <input type=\"range\" min={20} max={100} value={appearance.activeOpacity}\n onChange={e => onAppearanceChange({ ...appearance, activeOpacity: +e.target.value })} className={inp} />\n </div>\n <div>\n <div className={lbl}><span>Blur</span><span>{appearance.activeBlur}px</span></div>\n <input type=\"range\" min={0} max={20} value={appearance.activeBlur}\n onChange={e => onAppearanceChange({ ...appearance, activeBlur: +e.target.value })} className={inp} />\n </div>\n </div>\n </div>\n <div>\n <div className=\"text-xs font-medium text-gray-600 mb-2\">Inactive</div>\n <div className=\"space-y-2\">\n <div>\n <div className={lbl}><span>Opacity</span><span>{appearance.inactiveOpacity}%</span></div>\n <input type=\"range\" min={20} max={100} value={appearance.inactiveOpacity}\n onChange={e => onAppearanceChange({ ...appearance, inactiveOpacity: +e.target.value })} className={inp} />\n </div>\n <div>\n <div className={lbl}><span>Blur</span><span>{appearance.inactiveBlur}px</span></div>\n <input type=\"range\" min={0} max={20} value={appearance.inactiveBlur}\n onChange={e => onAppearanceChange({ ...appearance, inactiveBlur: +e.target.value })} className={inp} />\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {/* Actions */}\n <div className=\"flex gap-2 pt-2\">\n <button onClick={onSave}\n className=\"flex-1 text-sm font-medium py-2 rounded-lg bg-blue-600 text-white hover:bg-blue-700 transition\">Save</button>\n <button onClick={onClose}\n className=\"flex-1 text-sm font-medium py-2 rounded-lg border border-gray-300 text-gray-600 hover:bg-gray-50 transition\">Cancel</button>\n </div>\n </div>\n </Modal>\n </div>\n );\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { VERSION } from './chunk-XVXEYKMT.js';
2
- import { useWindowMenuItem, Modal } from './chunk-5S65ZC5W.js';
1
+ import { VERSION } from './chunk-WCGHIJZR.js';
2
+ import { useWindowMenuItem, Modal } from './chunk-JMESET3G.js';
3
3
  import { navIcons } from './chunk-WNLPTLT6.js';
4
4
  import { useState, useCallback, isValidElement, cloneElement } from 'react';
5
5
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -75,5 +75,5 @@ function AboutApp({ app }) {
75
75
  }
76
76
 
77
77
  export { AboutApp, BUILTIN_APP_INFO };
78
- //# sourceMappingURL=chunk-BIZJ7RLC.js.map
79
- //# sourceMappingURL=chunk-BIZJ7RLC.js.map
78
+ //# sourceMappingURL=chunk-TO6ZZHJK.js.map
79
+ //# sourceMappingURL=chunk-TO6ZZHJK.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/apps/_about.tsx"],"names":[],"mappings":"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","file":"chunk-BIZJ7RLC.js","sourcesContent":["/**\n * Shared \"About\" dialog for the bundled apps.\n *\n * Each bundled app carries its own version (independent of the package\n * version) so app-level changes can be tracked without bumping every app at\n * once. `<AboutApp app=\"…\" />` registers an \"About <Name>\" item in the\n * window title menu and renders the dialog: app icon, name, app version and\n * the react-os-shell attribution + shell version.\n *\n * Bump an app's version in `BUILTIN_APP_INFO` whenever that app's behaviour\n * changes, alongside the package-level CHANGELOG entry.\n */\nimport { useCallback, useState, isValidElement, cloneElement, type ReactElement } from 'react';\nimport Modal, { useWindowMenuItem } from '../shell/Modal';\nimport { navIcons } from '../shell-config/nav';\nimport { VERSION } from '../version';\n\nexport interface BuiltinAppInfo {\n /** Display name — matches the window-registry label. */\n name: string;\n /** App version, independent of the package version. */\n version: string;\n /** One-line summary shown in the About dialog. */\n description: string;\n /** Registry route — used to look up the consumer-registered nav icon. */\n route: string;\n}\n\nexport const BUILTIN_APP_INFO = {\n spreadsheet: {\n name: 'Spreadsheets',\n version: '1.1.1',\n route: '/spreadsheet',\n description: 'Multi-sheet spreadsheet editor with CSV / TSV import and export.',\n },\n notepad: {\n name: 'Notepad',\n version: '1.0.0',\n route: '/notepad',\n description: 'Color-coded notes with checklists, desktop stickies and entity autolinking.',\n },\n documents: {\n name: 'Documents',\n version: '1.1.0',\n route: '/documents',\n description: 'Letter-page editor for Word documents and plain-text files — images, lists, alignment.',\n },\n preview: {\n name: 'Preview',\n version: '1.2.1',\n route: '/preview',\n description: 'Viewer for PDF documents, images, DXF drawings and 3D models — CAD-style measuring with object snap and an AutoCAD-like command bar.',\n },\n files: {\n name: 'Files',\n version: '1.1.0',\n route: '/files',\n description: 'Personal file manager with folders, uploads, quota, trash and desktop shortcut folders.',\n },\n browser: {\n name: 'Browser',\n version: '1.0.1',\n route: '/browser',\n description: 'Minimal web browser with bookmarks, history and navigation bar.',\n },\n} satisfies Record<string, BuiltinAppInfo>;\n\nexport type BuiltinAppId = keyof typeof BUILTIN_APP_INFO;\n\nconst ABOUT_MENU_ICON = (\n <svg className=\"h-4 w-4 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z\" />\n </svg>\n);\n\n// Generic window glyph shown when the consumer hasn't registered a nav icon\n// for the app's route (same fallback shape as the Modal title bar).\nconst FALLBACK_APP_ICON = (\n <svg className=\"h-9 w-9\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3.75 6.75A2.25 2.25 0 016 4.5h12a2.25 2.25 0 012.25 2.25v10.5A2.25 2.25 0 0118 19.5H6a2.25 2.25 0 01-2.25-2.25V6.75z M3.75 9h16.5\" />\n </svg>\n);\n\n/** Registers \"About <Name>\" in the window title menu and renders the dialog.\n * Render anywhere inside the app's window. */\nexport default function AboutApp({ app }: { app: BuiltinAppId }) {\n const info = BUILTIN_APP_INFO[app];\n const [open, setOpen] = useState(false);\n const openDialog = useCallback(() => setOpen(true), []);\n useWindowMenuItem(`About ${info.name}`, openDialog, ABOUT_MENU_ICON);\n\n if (!open) return null;\n\n const registered = navIcons[info.route];\n const appIcon = isValidElement(registered)\n ? cloneElement(registered as ReactElement, { className: 'h-9 w-9' } as any)\n : FALLBACK_APP_ICON;\n\n return (\n <Modal open onClose={() => setOpen(false)} title={`About ${info.name}`} size=\"sm\" compact bodyScroll={false} autoHeight dimensions={[320, 320]}>\n <div className=\"flex flex-col items-center text-center px-5 pt-5 pb-4\">\n <div className=\"flex h-16 w-16 items-center justify-center rounded-2xl bg-gray-100 text-gray-600 shrink-0\">\n {appIcon}\n </div>\n <h2 className=\"mt-3 text-lg font-bold text-gray-900\">{info.name}</h2>\n <p className=\"text-[11px] font-mono text-gray-400\">Version {info.version}</p>\n <p className=\"mt-2 text-xs text-gray-500 leading-relaxed\">{info.description}</p>\n <div className=\"mt-4 pt-3 border-t border-gray-200 w-full\">\n <p className=\"text-[11px] text-gray-500\">\n Part of the <span className=\"font-medium text-gray-700\">react-os-shell</span> desktop environment\n </p>\n {VERSION && <p className=\"mt-0.5 text-[10px] font-mono text-gray-400\">shell v{VERSION}</p>}\n </div>\n </div>\n </Modal>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/apps/_about.tsx"],"names":[],"mappings":";;;;;;AA4BO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,cAAA;AAAA,IACN,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,cAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,UAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,WAAA;AAAA,IACN,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,YAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,UAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,QAAA;AAAA,IACP,WAAA,EAAa;AAAA,GACf;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,UAAA;AAAA,IACP,WAAA,EAAa;AAAA;AAEjB;AAIA,IAAM,eAAA,uBACH,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAwB,IAAA,EAAK,MAAA,EAAO,SAAQ,WAAA,EAAY,MAAA,EAAO,gBAAe,WAAA,EAAa,GAAA,EACxG,8BAAC,MAAA,EAAA,EAAK,aAAA,EAAc,SAAQ,cAAA,EAAe,OAAA,EAAQ,CAAA,EAAE,oJAAA,EAAqJ,CAAA,EAC5M,CAAA;AAKF,IAAM,iBAAA,uBACH,KAAA,EAAA,EAAI,SAAA,EAAU,WAAU,IAAA,EAAK,MAAA,EAAO,SAAQ,WAAA,EAAY,MAAA,EAAO,gBAAe,WAAA,EAAa,GAAA,EAC1F,8BAAC,MAAA,EAAA,EAAK,aAAA,EAAc,SAAQ,cAAA,EAAe,OAAA,EAAQ,CAAA,EAAE,oIAAA,EAAqI,CAAA,EAC5L,CAAA;AAKa,SAAR,QAAA,CAA0B,EAAE,GAAA,EAAI,EAA0B;AAC/D,EAAA,MAAM,IAAA,GAAO,iBAAiB,GAAG,CAAA;AACjC,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,aAAa,WAAA,CAAY,MAAM,QAAQ,IAAI,CAAA,EAAG,EAAE,CAAA;AACtD,EAAA,iBAAA,CAAkB,CAAA,MAAA,EAAS,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,YAAY,eAAe,CAAA;AAEnE,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,MAAM,UAAA,GAAa,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AACtC,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,UAAU,CAAA,GACrC,YAAA,CAAa,YAA4B,EAAE,SAAA,EAAW,SAAA,EAAkB,CAAA,GACxE,iBAAA;AAEJ,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAM,IAAA,EAAI,IAAA,EAAC,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA,EAAG,KAAA,EAAO,CAAA,MAAA,EAAS,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,IAAA,EAAK,IAAA,EAAK,OAAA,EAAO,IAAA,EAAC,UAAA,EAAY,KAAA,EAAO,UAAA,EAAU,IAAA,EAAC,UAAA,EAAY,CAAC,GAAA,EAAK,GAAG,CAAA,EAC3I,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uDAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACZ,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,oBACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,sCAAA,EAAwC,eAAK,IAAA,EAAK,CAAA;AAAA,oBAChE,IAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qCAAA,EAAsC,QAAA,EAAA;AAAA,MAAA,UAAA;AAAA,MAAS,IAAA,CAAK;AAAA,KAAA,EAAQ,CAAA;AAAA,oBACzE,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4CAAA,EAA8C,eAAK,WAAA,EAAY,CAAA;AAAA,oBAC5E,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,GAAA,EAAA,EAAE,WAAU,2BAAA,EAA4B,QAAA,EAAA;AAAA,QAAA,cAAA;AAAA,wBAC3B,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EAA4B,QAAA,EAAA,gBAAA,EAAc,CAAA;AAAA,QAAO;AAAA,OAAA,EAC/E,CAAA;AAAA,MACC,OAAA,oBAAW,IAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4CAAA,EAA6C,QAAA,EAAA;AAAA,QAAA,SAAA;AAAA,QAAQ;AAAA,OAAA,EAAQ;AAAA,KAAA,EACxF;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ","file":"chunk-TO6ZZHJK.js","sourcesContent":["/**\n * Shared \"About\" dialog for the bundled apps.\n *\n * Each bundled app carries its own version (independent of the package\n * version) so app-level changes can be tracked without bumping every app at\n * once. `<AboutApp app=\"…\" />` registers an \"About <Name>\" item in the\n * window title menu and renders the dialog: app icon, name, app version and\n * the react-os-shell attribution + shell version.\n *\n * Bump an app's version in `BUILTIN_APP_INFO` whenever that app's behaviour\n * changes, alongside the package-level CHANGELOG entry.\n */\nimport { useCallback, useState, isValidElement, cloneElement, type ReactElement } from 'react';\nimport Modal, { useWindowMenuItem } from '../shell/Modal';\nimport { navIcons } from '../shell-config/nav';\nimport { VERSION } from '../version';\n\nexport interface BuiltinAppInfo {\n /** Display name — matches the window-registry label. */\n name: string;\n /** App version, independent of the package version. */\n version: string;\n /** One-line summary shown in the About dialog. */\n description: string;\n /** Registry route — used to look up the consumer-registered nav icon. */\n route: string;\n}\n\nexport const BUILTIN_APP_INFO = {\n spreadsheet: {\n name: 'Spreadsheets',\n version: '1.1.1',\n route: '/spreadsheet',\n description: 'Multi-sheet spreadsheet editor with CSV / TSV import and export.',\n },\n notepad: {\n name: 'Notepad',\n version: '1.0.0',\n route: '/notepad',\n description: 'Color-coded notes with checklists, desktop stickies and entity autolinking.',\n },\n documents: {\n name: 'Documents',\n version: '1.1.0',\n route: '/documents',\n description: 'Letter-page editor for Word documents and plain-text files — images, lists, alignment.',\n },\n preview: {\n name: 'Preview',\n version: '1.2.1',\n route: '/preview',\n description: 'Viewer for PDF documents, images, DXF drawings and 3D models — CAD-style measuring with object snap and an AutoCAD-like command bar.',\n },\n files: {\n name: 'Files',\n version: '1.1.0',\n route: '/files',\n description: 'Personal file manager with folders, uploads, quota, trash and desktop shortcut folders.',\n },\n browser: {\n name: 'Browser',\n version: '1.0.1',\n route: '/browser',\n description: 'Minimal web browser with bookmarks, history and navigation bar.',\n },\n} satisfies Record<string, BuiltinAppInfo>;\n\nexport type BuiltinAppId = keyof typeof BUILTIN_APP_INFO;\n\nconst ABOUT_MENU_ICON = (\n <svg className=\"h-4 w-4 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z\" />\n </svg>\n);\n\n// Generic window glyph shown when the consumer hasn't registered a nav icon\n// for the app's route (same fallback shape as the Modal title bar).\nconst FALLBACK_APP_ICON = (\n <svg className=\"h-9 w-9\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3.75 6.75A2.25 2.25 0 016 4.5h12a2.25 2.25 0 012.25 2.25v10.5A2.25 2.25 0 0118 19.5H6a2.25 2.25 0 01-2.25-2.25V6.75z M3.75 9h16.5\" />\n </svg>\n);\n\n/** Registers \"About <Name>\" in the window title menu and renders the dialog.\n * Render anywhere inside the app's window. */\nexport default function AboutApp({ app }: { app: BuiltinAppId }) {\n const info = BUILTIN_APP_INFO[app];\n const [open, setOpen] = useState(false);\n const openDialog = useCallback(() => setOpen(true), []);\n useWindowMenuItem(`About ${info.name}`, openDialog, ABOUT_MENU_ICON);\n\n if (!open) return null;\n\n const registered = navIcons[info.route];\n const appIcon = isValidElement(registered)\n ? cloneElement(registered as ReactElement, { className: 'h-9 w-9' } as any)\n : FALLBACK_APP_ICON;\n\n return (\n <Modal open onClose={() => setOpen(false)} title={`About ${info.name}`} size=\"sm\" compact bodyScroll={false} autoHeight dimensions={[320, 320]}>\n <div className=\"flex flex-col items-center text-center px-5 pt-5 pb-4\">\n <div className=\"flex h-16 w-16 items-center justify-center rounded-2xl bg-gray-100 text-gray-600 shrink-0\">\n {appIcon}\n </div>\n <h2 className=\"mt-3 text-lg font-bold text-gray-900\">{info.name}</h2>\n <p className=\"text-[11px] font-mono text-gray-400\">Version {info.version}</p>\n <p className=\"mt-2 text-xs text-gray-500 leading-relaxed\">{info.description}</p>\n <div className=\"mt-4 pt-3 border-t border-gray-200 w-full\">\n <p className=\"text-[11px] text-gray-500\">\n Part of the <span className=\"font-medium text-gray-700\">react-os-shell</span> desktop environment\n </p>\n {VERSION && <p className=\"mt-0.5 text-[10px] font-mono text-gray-400\">shell v{VERSION}</p>}\n </div>\n </div>\n </Modal>\n );\n}\n"]}
@@ -0,0 +1,7 @@
1
+ // src/version.ts
2
+ var VERSION = "4.63.0" ;
3
+ var APP_VERSION = VERSION;
4
+
5
+ export { APP_VERSION, VERSION };
6
+ //# sourceMappingURL=chunk-WCGHIJZR.js.map
7
+ //# sourceMappingURL=chunk-WCGHIJZR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts"],"names":[],"mappings":";AAIO,IAAM,OAAA,GAAwD,QAAA;AAG9D,IAAM,WAAA,GAAc","file":"chunk-XVXEYKMT.js","sourcesContent":["declare const __PKG_VERSION__: string | undefined;\n\n/** Package version, injected by tsup at build time. Stays as an empty\n * string when the source is consumed without a build (e.g. tests). */\nexport const VERSION: string = typeof __PKG_VERSION__ === 'string' ? __PKG_VERSION__ : '';\n\n/** Legacy alias kept so existing consumers do not break. */\nexport const APP_VERSION = VERSION;\n"]}
1
+ {"version":3,"sources":["../src/version.ts"],"names":[],"mappings":";AAIO,IAAM,OAAA,GAAwD,QAAA;AAG9D,IAAM,WAAA,GAAc","file":"chunk-WCGHIJZR.js","sourcesContent":["declare const __PKG_VERSION__: string | undefined;\n\n/** Package version, injected by tsup at build time. Stays as an empty\n * string when the source is consumed without a build (e.g. tests). */\nexport const VERSION: string = typeof __PKG_VERSION__ === 'string' ? __PKG_VERSION__ : '';\n\n/** Legacy alias kept so existing consumers do not break. */\nexport const APP_VERSION = VERSION;\n"]}
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, TextareaHTMLAttributes, SelectHTMLAttributes, LabelHTMLAttributes, CSSProperties, ElementType, MouseEvent, RefObject } from 'react';
2
+ import { ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, TextareaHTMLAttributes, SelectHTMLAttributes, LabelHTMLAttributes, CSSProperties, ElementType, MouseEvent, RefObject, Component, ErrorInfo } from 'react';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
 
5
5
  /**
@@ -408,6 +408,46 @@ interface DatePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'c
408
408
  }
409
409
  declare const DatePicker: react.ForwardRefExoticComponent<DatePickerProps & react.RefAttributes<HTMLInputElement>>;
410
410
 
411
+ interface TimePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'size' | 'type' | 'value' | 'onChange' | 'min' | 'max'> {
412
+ /** An `HH:MM` / `HH:MM:SS` string, a Date (local wall-clock time is read), or nothing. */
413
+ value?: Date | string | null;
414
+ /**
415
+ * The chosen time as `HH:MM` (`HH:MM:SS` when `step` asks for seconds), or
416
+ * `null` when the field is empty or mid-entry — same contract as DatePicker.
417
+ */
418
+ onChange?: (value: string | null) => void;
419
+ /** Earliest selectable time. */
420
+ min?: Date | string | null;
421
+ /** Latest selectable time. */
422
+ max?: Date | string | null;
423
+ /** Error state — red border + ring, matching Input. */
424
+ invalid?: boolean;
425
+ /** `touch` gives a 56px field for a finger. Defaults to the desktop size. */
426
+ size?: InputSize;
427
+ className?: string;
428
+ }
429
+ declare const TimePicker: react.ForwardRefExoticComponent<TimePickerProps & react.RefAttributes<HTMLInputElement>>;
430
+
431
+ interface DateTimePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'size' | 'type' | 'value' | 'onChange' | 'min' | 'max'> {
432
+ /** A Date, a local `YYYY-MM-DDTHH:MM` string, or nothing. */
433
+ value?: Date | string | null;
434
+ /**
435
+ * The chosen moment as a local Date, or `null` when the field is empty or
436
+ * mid-entry — same contract as DatePicker.
437
+ */
438
+ onChange?: (value: Date | null) => void;
439
+ /** Earliest selectable moment. */
440
+ min?: Date | string | null;
441
+ /** Latest selectable moment. */
442
+ max?: Date | string | null;
443
+ /** Error state — red border + ring, matching Input. */
444
+ invalid?: boolean;
445
+ /** `touch` gives a 56px field for a finger. Defaults to the desktop size. */
446
+ size?: InputSize;
447
+ className?: string;
448
+ }
449
+ declare const DateTimePicker: react.ForwardRefExoticComponent<DateTimePickerProps & react.RefAttributes<HTMLInputElement>>;
450
+
411
451
  interface NumericKeypadProps {
412
452
  value: string;
413
453
  onChange: (next: string) => void;
@@ -585,6 +625,29 @@ interface SearchableSelectProps {
585
625
  }
586
626
  declare function SearchableSelect({ value, onChange, options, placeholder, emptyOptionLabel, className, disabled, id, allowFreeText, onSearchChange, rightAdornment, }: SearchableSelectProps): react_jsx_runtime.JSX.Element;
587
627
 
628
+ interface TagInputOption {
629
+ value: string;
630
+ label: string;
631
+ }
632
+ interface TagInputProps {
633
+ value: string[];
634
+ onChange: (value: string[]) => void;
635
+ /** The pickable list. Omit it for a pure free-text tag field (with
636
+ * `allowFreeText`), where the dropdown never renders. */
637
+ options?: TagInputOption[];
638
+ placeholder?: string;
639
+ /** When true, Enter / comma / Tab / clicking away commits the typed text as
640
+ * a tag of its own. Default false: only listed options can be picked. */
641
+ allowFreeText?: boolean;
642
+ /** Error state — red border + ring, matching Input. */
643
+ invalid?: boolean;
644
+ disabled?: boolean;
645
+ /** Optional id for label-for wiring, applied to the inner text input. */
646
+ id?: string;
647
+ className?: string;
648
+ }
649
+ declare function TagInput({ value, onChange, options, placeholder, allowFreeText, invalid, disabled, id, className, }: TagInputProps): react_jsx_runtime.JSX.Element;
650
+
588
651
  /** How much room the card gives its contents. `md` is the desktop default;
589
652
  * `lg` suits a touch layout, where the same density reads as cramped. */
590
653
  type CardPadding = 'none' | 'sm' | 'md' | 'lg';
@@ -941,6 +1004,27 @@ interface TabsProps {
941
1004
  }
942
1005
  declare function Tabs({ items, value, onChange, variant, idPrefix, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, }: TabsProps): react_jsx_runtime.JSX.Element;
943
1006
 
1007
+ interface StepItem {
1008
+ id: string;
1009
+ label: ReactNode;
1010
+ /** Short line under the label. */
1011
+ description?: ReactNode;
1012
+ }
1013
+ interface StepperProps {
1014
+ items: StepItem[];
1015
+ /** The current step's id. Controlled — the consumer owns the wizard state. */
1016
+ value: string;
1017
+ /**
1018
+ * Lets the user return to a COMPLETED step by clicking it. Omitted, the
1019
+ * strip is purely an indicator and renders no controls at all.
1020
+ */
1021
+ onChange?: (id: string) => void;
1022
+ /** Names the strip for assistive technology, e.g. "Checkout steps". */
1023
+ 'aria-label'?: string;
1024
+ className?: string;
1025
+ }
1026
+ declare function Stepper({ items, value, onChange, 'aria-label': ariaLabel, className, }: StepperProps): react_jsx_runtime.JSX.Element;
1027
+
944
1028
  interface AccordionItem {
945
1029
  id: string;
946
1030
  title: ReactNode;
@@ -2109,9 +2193,28 @@ interface DataTableProps<T> {
2109
2193
  emptyText?: ReactNode;
2110
2194
  /** Rendered under the rows — an infinite-scroll sentinel, a totals strip. */
2111
2195
  footer?: ReactNode;
2196
+ /**
2197
+ * Windowed rendering for large LOADED datasets. Pagination and infinite
2198
+ * scroll bound what is fetched; this bounds what is RENDERED — a few
2199
+ * thousand loaded rows otherwise all get DOM, and every sort or filter
2200
+ * re-lays-out the lot. The wrapper becomes a vertical scroll container of
2201
+ * `height` px, only the rows near the viewport exist in the DOM (padded to
2202
+ * the full scroll height by two spacer rows), and the header pins to the
2203
+ * top of the scroll.
2204
+ *
2205
+ * `rowHeight` is a promise, not a measurement: every row is rendered at
2206
+ * exactly that height (the scroll math depends on it), so `ellipsis` your
2207
+ * long columns rather than letting them wrap. Off-screen rows are absent
2208
+ * for assistive technology too — same trade every windowed list makes.
2209
+ */
2210
+ virtualized?: {
2211
+ height: number;
2212
+ rowHeight: number;
2213
+ overscan?: number;
2214
+ };
2112
2215
  className?: string;
2113
2216
  }
2114
- declare function DataTable<T>({ columns, data, rowKey, sort, onSortChange, pagination, caption, loading, bordered, size, minWidth, rowClassName, onRow, emptyText, footer, className, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
2217
+ declare function DataTable<T>({ columns, data, rowKey, sort, onSortChange, pagination, caption, loading, bordered, size, minWidth, rowClassName, onRow, emptyText, footer, virtualized, className, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
2115
2218
 
2116
2219
  interface ListFooterProps {
2117
2220
  selectedCount: number;
@@ -2185,6 +2288,34 @@ interface BarChartProps {
2185
2288
  className?: string;
2186
2289
  style?: CSSProperties;
2187
2290
  }
2291
+ interface LineChartSeries {
2292
+ data: number[];
2293
+ /** Shown in the legend (`showLegend`) and in point tooltips. */
2294
+ label?: string;
2295
+ /** Line color. Defaults to `currentColor`. */
2296
+ color?: string;
2297
+ /** Area fill under this line. Omit for a bare line. */
2298
+ fill?: string;
2299
+ }
2300
+ interface LineChartProps {
2301
+ /** One or more series drawn over the same x positions. */
2302
+ series: LineChartSeries[];
2303
+ /** X-axis labels rendered under the plot, one per data point. */
2304
+ labels?: string[];
2305
+ height?: number;
2306
+ strokeWidth?: number;
2307
+ showDots?: boolean;
2308
+ /** Value at the top of the plot. Defaults to the max across all series. */
2309
+ max?: number;
2310
+ /** Value at the bottom of the plot. Defaults to the min across all series. */
2311
+ min?: number;
2312
+ /** Max / mid / min values in a left gutter, with faint reference lines. */
2313
+ showScale?: boolean;
2314
+ /** Color-dot legend above the plot, from the series' `label`s. */
2315
+ showLegend?: boolean;
2316
+ className?: string;
2317
+ style?: CSSProperties;
2318
+ }
2188
2319
  interface DonutSegment {
2189
2320
  label: string;
2190
2321
  value: number;
@@ -2206,6 +2337,8 @@ declare function BarChart({ data, labels, height, color, colors, max, gap, class
2206
2337
 
2207
2338
  declare function DonutChart({ segments, size, thickness, centerLabel, className, style }: DonutChartProps): react_jsx_runtime.JSX.Element;
2208
2339
 
2340
+ declare function LineChart({ series, labels, height, strokeWidth, showDots, max, min, showScale, showLegend, className, style, }: LineChartProps): react_jsx_runtime.JSX.Element | null;
2341
+
2209
2342
  declare function DashboardTemplate(): react_jsx_runtime.JSX.Element;
2210
2343
 
2211
2344
  declare function DataTablePage(): react_jsx_runtime.JSX.Element;
@@ -2225,6 +2358,51 @@ interface AuthScreenProps {
2225
2358
  }
2226
2359
  declare function AuthScreen({ mode }: AuthScreenProps): react_jsx_runtime.JSX.Element;
2227
2360
 
2361
+ interface ErrorBoundaryProps {
2362
+ children: ReactNode;
2363
+ /**
2364
+ * Replaces the default page. `reset` clears the caught error so the children
2365
+ * mount again — worth offering when the cause may have been transient.
2366
+ */
2367
+ fallback?: (error: Error, reset: () => void) => ReactNode;
2368
+ /**
2369
+ * What the user can do about it, rendered under the default page. The kit has
2370
+ * no router, so a link home has to come from the consumer — the same reason
2371
+ * {@link ErrorPage} takes its actions rather than inventing them.
2372
+ */
2373
+ actions?: ReactNode;
2374
+ /**
2375
+ * Called with the caught error. This is where a consumer reports to Sentry or
2376
+ * its own logger; without it a crash is only ever a `console.error` in a
2377
+ * browser nobody is looking at.
2378
+ */
2379
+ onError?: (error: Error, info: ErrorInfo) => void;
2380
+ /**
2381
+ * Show the message and stack on the page. Defaults to OFF. Pass
2382
+ * `import.meta.env.DEV` to get the detail while developing and nothing in
2383
+ * production — the value is the consumer's because the kit is built once and
2384
+ * cannot read the app's mode.
2385
+ */
2386
+ showDetails?: boolean;
2387
+ /**
2388
+ * Clears the error when any entry changes — typically the current path, so
2389
+ * navigating away from a crashed page recovers instead of holding the
2390
+ * fallback until a full reload.
2391
+ */
2392
+ resetKeys?: unknown[];
2393
+ }
2394
+ interface State {
2395
+ error: Error | null;
2396
+ }
2397
+ declare class ErrorBoundary extends Component<ErrorBoundaryProps, State> {
2398
+ state: State;
2399
+ static getDerivedStateFromError(error: Error): State;
2400
+ componentDidCatch(error: Error, info: ErrorInfo): void;
2401
+ componentDidUpdate(prev: ErrorBoundaryProps): void;
2402
+ reset: () => void;
2403
+ render(): string | number | boolean | Iterable<ReactNode> | react_jsx_runtime.JSX.Element | null | undefined;
2404
+ }
2405
+
2228
2406
  interface ErrorPageProps {
2229
2407
  code?: 403 | 404 | 500;
2230
2408
  /**
@@ -2331,4 +2509,4 @@ declare const ALT_SHIFT_N: string;
2331
2509
  * string when the source is consumed without a build (e.g. tests). */
2332
2510
  declare const VERSION: string;
2333
2511
 
2334
- export { type CountBadgeProps as $, ALT as A, Banner as B, type ColumnDef as C, type ButtonSize as D, type ButtonVariant as E, CMD_A as F, CMD_DOT as G, CMD_ENTER as H, CMD_K as I, CMD_S as J, Card as K, type CardPadding as L, type CardProps as M, type CellStyle as N, ChatTemplate as O, type PaginatedResponse as P, Checkbox as Q, type CheckboxProps as R, type SearchConfig as S, CheckoutTemplate as T, ColoredBadge as U, type ColoredBadgeProps as V, ConfirmProvider as W, ContainerFillChart as X, type ContainerFillChartProps as Y, type ContainerFillItem as Z, CountBadge as _, type SortState as a, type IconButtonProps as a$, type CountBadgeTone as a0, DashboardTemplate as a1, DataTable as a2, type DataTableColumn as a3, type DataTableColumnGroup as a4, type DataTableHeader as a5, DataTablePage as a6, type DataTableProps as a7, DatePicker as a8, type DatePickerProps as a9, EmailTemplate as aA, EmptyState as aB, type EmptyStateProps as aC, ErrorPage as aD, type ErrorPageProps as aE, FilePicker as aF, type FilePickerProps as aG, FormField as aH, type FormFieldProps as aI, FormLayoutPage as aJ, GLASS_DIVIDER as aK, GLASS_INPUT_BG as aL, GROUP_COLORS as aM, GalleryTemplate as aN, type Gap as aO, GlobalSearch as aP, type GlobalSearchProps as aQ, Grid as aR, type GridCols as aS, type GridColumn as aT, type GridProps as aU, HelpCenter as aV, type HelpCenterDoc as aW, type HelpCenterProps as aX, INPUT_BASE as aY, INPUT_SIZES as aZ, IconButton as a_, DateRangePicker as aa, type DateRangePickerProps as ab, type DescriptionColumns as ac, type DescriptionItem as ad, DescriptionList as ae, type DescriptionListProps as af, Dialog as ag, type DialogProps as ah, type DialogSize as ai, Divider as aj, type DividerProps as ak, type DividerSpacing as al, DonutChart as am, type DonutChartProps as an, type DonutSegment as ao, Drawer as ap, type DrawerProps as aq, type DrawerSide as ar, type DrawerSize as as, DropdownMenu as at, type DropdownMenuAlign as au, type DropdownMenuItem as av, type DropdownMenuProps as aw, ENTER as ax, EditableGrid as ay, type EditableGridProps as az, ALT_SHIFT_D as b, type SelectProps as b$, Inline as b0, type InlineProps as b1, Input as b2, InputNumber as b3, type InputNumberProps as b4, type InputProps as b5, type InputSize as b6, type Justify as b7, Kanban as b8, type KanbanColumn as b9, PageHeader as bA, type PageHeaderProps as bB, Pagination as bC, type PaginationProps as bD, Paragraph as bE, type ParagraphProps as bF, PopupMenu as bG, PopupMenuDivider as bH, PopupMenuItem as bI, PopupMenuLabel as bJ, Radio as bK, type RadioProps as bL, Result as bM, type ResultProps as bN, type ResultStatus as bO, SHIFT as bP, type SearchProvider as bQ, type SearchResult as bR, type SearchableOption as bS, SearchableSelect as bT, type SearchableSelectProps as bU, Segmented as bV, type SegmentedOption as bW, type SegmentedProps as bX, type SegmentedSize as bY, Select as bZ, type SelectOption as b_, type KanbanProps as ba, Label as bb, type LabelProps as bc, ListFooter as bd, ListLoadError as be, type ListLoadErrorProps as bf, LoadingSpinner as bg, type LoadingSpinnerProps as bh, MAX_FRACTION_DIGITS as bi, MOD as bj, Markdown as bk, type MarkdownProps as bl, MediaUploadField as bm, type MediaUploadFieldProps as bn, MediaUploadGrid as bo, type MediaUploadGridItem as bp, type MediaUploadGridProps as bq, MetricBar as br, type MetricBarProps as bs, type Milestone as bt, type MilestoneKind as bu, MilestoneTimeline as bv, type MilestoneTimelineProps as bw, NativeSelect as bx, NumericKeypad as by, type NumericKeypadProps as bz, ALT_SHIFT_E as c, mediaFileName as c$, type SemanticGroup as c0, type SeverityTone as c1, type ShellPrefsAdapter as c2, ShellPrefsProvider as c3, SidebarActionButton as c4, type SidebarActionButtonProps as c5, SidebarGroupLabel as c6, SidebarLayout as c7, type SidebarLayoutProps as c8, SidebarNavItem as c9, Textarea as cA, type TextareaProps as cB, type Theme as cC, TileButton as cD, type TileButtonProps as cE, type TileSize as cF, Title as cG, type TitleLevel as cH, type TitleProps as cI, type ToastOptions as cJ, type ToastPlacement as cK, Tooltip as cL, type TooltipProps as cM, TopNav as cN, type TopNavItem as cO, type TopNavProps as cP, VERSION as cQ, appendKey as cR, applyThemePrefs as cS, backspace as cT, confirm as cU, confirmDestructive as cV, formatDate as cW, glassStyle as cX, inputClasses as cY, isMac as cZ, isSeverityTone as c_, Skeleton as ca, type SkeletonProps as cb, type SkeletonVariant as cc, Sparkline as cd, type SparklineProps as ce, Stack as cf, type StackProps as cg, StatCard as ch, type StatCardProps as ci, Statistic as cj, type StatisticProps as ck, type StatisticSize as cl, type StatisticTone as cm, StatusBadge as cn, StatusBadgeProvider as co, Switch as cp, type SwitchProps as cq, type SwitchSize as cr, type TabItem as cs, Tabs as ct, type TabsProps as cu, Text as cv, type TextProps as cw, type TextSize as cx, type TextTone as cy, type TextWeight as cz, ALT_SHIFT_N as d, prompt as d0, resolveTheme as d1, severityOf as d2, tabButtonId as d3, tabPanelId as d4, toISODate as d5, toast as d6, useClickOutside as d7, useConfirm as d8, useFocusTrap as d9, useIsMobile as da, useLocalStoragePrefs as db, useScrollLock as dc, useShellPrefs as dd, useTheme as de, Accordion as e, type AccordionItem as f, type AccordionProps as g, type Align as h, AuthScreen as i, type AuthScreenProps as j, Avatar as k, AvatarGroup as l, type AvatarGroupProps as m, type AvatarProps as n, type AvatarSize as o, type AvatarStatus as p, type BannerEmphasis as q, type BannerProps as r, type BannerTone as s, BarChart as t, type BarChartProps as u, type BreadcrumbItem as v, Breadcrumbs as w, type BreadcrumbsProps as x, Button as y, type ButtonProps as z };
2512
+ export { type CountBadgeProps as $, ALT as A, Banner as B, type ColumnDef as C, type ButtonSize as D, type ButtonVariant as E, CMD_A as F, CMD_DOT as G, CMD_ENTER as H, CMD_K as I, CMD_S as J, Card as K, type CardPadding as L, type CardProps as M, type CellStyle as N, ChatTemplate as O, type PaginatedResponse as P, Checkbox as Q, type CheckboxProps as R, type SearchConfig as S, CheckoutTemplate as T, ColoredBadge as U, type ColoredBadgeProps as V, ConfirmProvider as W, ContainerFillChart as X, type ContainerFillChartProps as Y, type ContainerFillItem as Z, CountBadge as _, type SortState as a, type HelpCenterProps as a$, type CountBadgeTone as a0, DashboardTemplate as a1, DataTable as a2, type DataTableColumn as a3, type DataTableColumnGroup as a4, type DataTableHeader as a5, DataTablePage as a6, type DataTableProps as a7, DatePicker as a8, type DatePickerProps as a9, EditableGrid as aA, type EditableGridProps as aB, EmailTemplate as aC, EmptyState as aD, type EmptyStateProps as aE, ErrorBoundary as aF, type ErrorBoundaryProps as aG, ErrorPage as aH, type ErrorPageProps as aI, FilePicker as aJ, type FilePickerProps as aK, FormField as aL, type FormFieldProps as aM, FormLayoutPage as aN, GLASS_DIVIDER as aO, GLASS_INPUT_BG as aP, GROUP_COLORS as aQ, GalleryTemplate as aR, type Gap as aS, GlobalSearch as aT, type GlobalSearchProps as aU, Grid as aV, type GridCols as aW, type GridColumn as aX, type GridProps as aY, HelpCenter as aZ, type HelpCenterDoc as a_, DateRangePicker as aa, type DateRangePickerProps as ab, DateTimePicker as ac, type DateTimePickerProps as ad, type DescriptionColumns as ae, type DescriptionItem as af, DescriptionList as ag, type DescriptionListProps as ah, Dialog as ai, type DialogProps as aj, type DialogSize as ak, Divider as al, type DividerProps as am, type DividerSpacing as an, DonutChart as ao, type DonutChartProps as ap, type DonutSegment as aq, Drawer as ar, type DrawerProps as as, type DrawerSide as at, type DrawerSize as au, DropdownMenu as av, type DropdownMenuAlign as aw, type DropdownMenuItem as ax, type DropdownMenuProps as ay, ENTER as az, ALT_SHIFT_D as b, type SearchableSelectProps as b$, INPUT_BASE as b0, INPUT_SIZES as b1, IconButton as b2, type IconButtonProps as b3, Inline as b4, type InlineProps as b5, Input as b6, InputNumber as b7, type InputNumberProps as b8, type InputProps as b9, type Milestone as bA, type MilestoneKind as bB, MilestoneTimeline as bC, type MilestoneTimelineProps as bD, NativeSelect as bE, NumericKeypad as bF, type NumericKeypadProps as bG, PageHeader as bH, type PageHeaderProps as bI, Pagination as bJ, type PaginationProps as bK, Paragraph as bL, type ParagraphProps as bM, PopupMenu as bN, PopupMenuDivider as bO, PopupMenuItem as bP, PopupMenuLabel as bQ, Radio as bR, type RadioProps as bS, Result as bT, type ResultProps as bU, type ResultStatus as bV, SHIFT as bW, type SearchProvider as bX, type SearchResult as bY, type SearchableOption as bZ, SearchableSelect as b_, type InputSize as ba, type Justify as bb, Kanban as bc, type KanbanColumn as bd, type KanbanProps as be, Label as bf, type LabelProps as bg, LineChart as bh, type LineChartProps as bi, type LineChartSeries as bj, ListFooter as bk, ListLoadError as bl, type ListLoadErrorProps as bm, LoadingSpinner as bn, type LoadingSpinnerProps as bo, MAX_FRACTION_DIGITS as bp, MOD as bq, Markdown as br, type MarkdownProps as bs, MediaUploadField as bt, type MediaUploadFieldProps as bu, MediaUploadGrid as bv, type MediaUploadGridItem as bw, type MediaUploadGridProps as bx, MetricBar as by, type MetricBarProps as bz, ALT_SHIFT_E as c, type TooltipProps as c$, Segmented as c0, type SegmentedOption as c1, type SegmentedProps as c2, type SegmentedSize as c3, Select as c4, type SelectOption as c5, type SelectProps as c6, type SemanticGroup as c7, type SeverityTone as c8, type ShellPrefsAdapter as c9, type SwitchProps as cA, type SwitchSize as cB, type TabItem as cC, Tabs as cD, type TabsProps as cE, TagInput as cF, type TagInputOption as cG, type TagInputProps as cH, Text as cI, type TextProps as cJ, type TextSize as cK, type TextTone as cL, type TextWeight as cM, Textarea as cN, type TextareaProps as cO, type Theme as cP, TileButton as cQ, type TileButtonProps as cR, type TileSize as cS, TimePicker as cT, type TimePickerProps as cU, Title as cV, type TitleLevel as cW, type TitleProps as cX, type ToastOptions as cY, type ToastPlacement as cZ, Tooltip as c_, ShellPrefsProvider as ca, SidebarActionButton as cb, type SidebarActionButtonProps as cc, SidebarGroupLabel as cd, SidebarLayout as ce, type SidebarLayoutProps as cf, SidebarNavItem as cg, Skeleton as ch, type SkeletonProps as ci, type SkeletonVariant as cj, Sparkline as ck, type SparklineProps as cl, Stack as cm, type StackProps as cn, StatCard as co, type StatCardProps as cp, Statistic as cq, type StatisticProps as cr, type StatisticSize as cs, type StatisticTone as ct, StatusBadge as cu, StatusBadgeProvider as cv, type StepItem as cw, Stepper as cx, type StepperProps as cy, Switch as cz, ALT_SHIFT_N as d, TopNav as d0, type TopNavItem as d1, type TopNavProps as d2, VERSION as d3, appendKey as d4, applyThemePrefs as d5, backspace as d6, confirm as d7, confirmDestructive as d8, formatDate as d9, glassStyle as da, inputClasses as db, isMac as dc, isSeverityTone as dd, mediaFileName as de, prompt as df, resolveTheme as dg, severityOf as dh, tabButtonId as di, tabPanelId as dj, toISODate as dk, toast as dl, useClickOutside as dm, useConfirm as dn, useFocusTrap as dp, useIsMobile as dq, useLocalStoragePrefs as dr, useScrollLock as ds, useShellPrefs as dt, useTheme as du, Accordion as e, type AccordionItem as f, type AccordionProps as g, type Align as h, AuthScreen as i, type AuthScreenProps as j, Avatar as k, AvatarGroup as l, type AvatarGroupProps as m, type AvatarProps as n, type AvatarSize as o, type AvatarStatus as p, type BannerEmphasis as q, type BannerProps as r, type BannerTone as s, BarChart as t, type BarChartProps as u, type BreadcrumbItem as v, Breadcrumbs as w, type BreadcrumbsProps as x, Button as y, type ButtonProps as z };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { S as SearchConfig, C as ColumnDef, a as SortState, P as PaginatedResponse } from './index-B6QGa8SJ.js';
2
- export { A as ALT, b as ALT_SHIFT_D, c as ALT_SHIFT_E, d as ALT_SHIFT_N, e as Accordion, f as AccordionItem, g as AccordionProps, h as Align, i as AuthScreen, j as AuthScreenProps, k as Avatar, l as AvatarGroup, m as AvatarGroupProps, n as AvatarProps, o as AvatarSize, p as AvatarStatus, B as Banner, q as BannerEmphasis, r as BannerProps, s as BannerTone, t as BarChart, u as BarChartProps, v as BreadcrumbItem, w as Breadcrumbs, x as BreadcrumbsProps, y as Button, z as ButtonProps, D as ButtonSize, E as ButtonVariant, F as CMD_A, G as CMD_DOT, H as CMD_ENTER, I as CMD_K, J as CMD_S, K as Card, L as CardPadding, M as CardProps, N as CellStyle, O as ChatTemplate, Q as Checkbox, R as CheckboxProps, T as CheckoutTemplate, U as ColoredBadge, V as ColoredBadgeProps, W as ConfirmProvider, X as ContainerFillChart, Y as ContainerFillChartProps, Z as ContainerFillItem, _ as CountBadge, $ as CountBadgeProps, a0 as CountBadgeTone, a1 as DashboardTemplate, a2 as DataTable, a3 as DataTableColumn, a4 as DataTableColumnGroup, a5 as DataTableHeader, a6 as DataTablePage, a7 as DataTableProps, a8 as DatePicker, a9 as DatePickerProps, aa as DateRangePicker, ab as DateRangePickerProps, ac as DescriptionColumns, ad as DescriptionItem, ae as DescriptionList, af as DescriptionListProps, ag as Dialog, ah as DialogProps, ai as DialogSize, aj as Divider, ak as DividerProps, al as DividerSpacing, am as DonutChart, an as DonutChartProps, ao as DonutSegment, ap as Drawer, aq as DrawerProps, ar as DrawerSide, as as DrawerSize, at as DropdownMenu, au as DropdownMenuAlign, av as DropdownMenuItem, aw as DropdownMenuProps, ax as ENTER, ay as EditableGrid, az as EditableGridProps, aA as EmailTemplate, aB as EmptyState, aC as EmptyStateProps, aD as ErrorPage, aE as ErrorPageProps, aF as FilePicker, aG as FilePickerProps, aH as FormField, aI as FormFieldProps, aJ as FormLayoutPage, aK as GLASS_DIVIDER, aL as GLASS_INPUT_BG, aM as GROUP_COLORS, aN as GalleryTemplate, aO as Gap, aP as GlobalSearch, aQ as GlobalSearchProps, aR as Grid, aS as GridCols, aT as GridColumn, aU as GridProps, aV as HelpCenter, aW as HelpCenterDoc, aX as HelpCenterProps, aY as INPUT_BASE, aZ as INPUT_SIZES, a_ as IconButton, a$ as IconButtonProps, b0 as Inline, b1 as InlineProps, b2 as Input, b3 as InputNumber, b4 as InputNumberProps, b5 as InputProps, b6 as InputSize, b7 as Justify, b8 as Kanban, b9 as KanbanColumn, ba as KanbanProps, bb as Label, bc as LabelProps, bd as ListFooter, be as ListLoadError, bf as ListLoadErrorProps, bg as LoadingSpinner, bh as LoadingSpinnerProps, bi as MAX_FRACTION_DIGITS, bj as MOD, bk as Markdown, bl as MarkdownProps, bm as MediaUploadField, bn as MediaUploadFieldProps, bo as MediaUploadGrid, bp as MediaUploadGridItem, bq as MediaUploadGridProps, br as MetricBar, bs as MetricBarProps, bt as Milestone, bu as MilestoneKind, bv as MilestoneTimeline, bw as MilestoneTimelineProps, bx as NativeSelect, by as NumericKeypad, bz as NumericKeypadProps, bA as PageHeader, bB as PageHeaderProps, bC as Pagination, bD as PaginationProps, bE as Paragraph, bF as ParagraphProps, bG as PopupMenu, bH as PopupMenuDivider, bI as PopupMenuItem, bJ as PopupMenuLabel, bK as Radio, bL as RadioProps, bM as Result, bN as ResultProps, bO as ResultStatus, bP as SHIFT, bQ as SearchProvider, bR as SearchResult, bS as SearchableOption, bT as SearchableSelect, bU as SearchableSelectProps, bV as Segmented, bW as SegmentedOption, bX as SegmentedProps, bY as SegmentedSize, bZ as Select, b_ as SelectOption, b$ as SelectProps, c0 as SemanticGroup, c1 as SeverityTone, c2 as ShellPrefsAdapter, c3 as ShellPrefsProvider, c4 as SidebarActionButton, c5 as SidebarActionButtonProps, c6 as SidebarGroupLabel, c7 as SidebarLayout, c8 as SidebarLayoutProps, c9 as SidebarNavItem, ca as Skeleton, cb as SkeletonProps, cc as SkeletonVariant, cd as Sparkline, ce as SparklineProps, cf as Stack, cg as StackProps, ch as StatCard, ci as StatCardProps, cj as Statistic, ck as StatisticProps, cl as StatisticSize, cm as StatisticTone, cn as StatusBadge, co as StatusBadgeProvider, cp as Switch, cq as SwitchProps, cr as SwitchSize, cs as TabItem, ct as Tabs, cu as TabsProps, cv as Text, cw as TextProps, cx as TextSize, cy as TextTone, cz as TextWeight, cA as Textarea, cB as TextareaProps, cC as Theme, cD as TileButton, cE as TileButtonProps, cF as TileSize, cG as Title, cH as TitleLevel, cI as TitleProps, cJ as ToastOptions, cK as ToastPlacement, cL as Tooltip, cM as TooltipProps, cN as TopNav, cO as TopNavItem, cP as TopNavProps, cQ as VERSION, cR as appendKey, cS as applyThemePrefs, cT as backspace, cU as confirm, cV as confirmDestructive, cW as formatDate, cX as glassStyle, cY as inputClasses, cZ as isMac, c_ as isSeverityTone, c$ as mediaFileName, d0 as prompt, d1 as resolveTheme, d2 as severityOf, d3 as tabButtonId, d4 as tabPanelId, d5 as toISODate, d6 as toast, d7 as useClickOutside, d8 as useConfirm, d9 as useFocusTrap, da as useIsMobile, db as useLocalStoragePrefs, dc as useScrollLock, dd as useShellPrefs, de as useTheme } from './index-B6QGa8SJ.js';
1
+ import { S as SearchConfig, C as ColumnDef, a as SortState, P as PaginatedResponse } from './index-Ka32s3Ij.js';
2
+ export { A as ALT, b as ALT_SHIFT_D, c as ALT_SHIFT_E, d as ALT_SHIFT_N, e as Accordion, f as AccordionItem, g as AccordionProps, h as Align, i as AuthScreen, j as AuthScreenProps, k as Avatar, l as AvatarGroup, m as AvatarGroupProps, n as AvatarProps, o as AvatarSize, p as AvatarStatus, B as Banner, q as BannerEmphasis, r as BannerProps, s as BannerTone, t as BarChart, u as BarChartProps, v as BreadcrumbItem, w as Breadcrumbs, x as BreadcrumbsProps, y as Button, z as ButtonProps, D as ButtonSize, E as ButtonVariant, F as CMD_A, G as CMD_DOT, H as CMD_ENTER, I as CMD_K, J as CMD_S, K as Card, L as CardPadding, M as CardProps, N as CellStyle, O as ChatTemplate, Q as Checkbox, R as CheckboxProps, T as CheckoutTemplate, U as ColoredBadge, V as ColoredBadgeProps, W as ConfirmProvider, X as ContainerFillChart, Y as ContainerFillChartProps, Z as ContainerFillItem, _ as CountBadge, $ as CountBadgeProps, a0 as CountBadgeTone, a1 as DashboardTemplate, a2 as DataTable, a3 as DataTableColumn, a4 as DataTableColumnGroup, a5 as DataTableHeader, a6 as DataTablePage, a7 as DataTableProps, a8 as DatePicker, a9 as DatePickerProps, aa as DateRangePicker, ab as DateRangePickerProps, ac as DateTimePicker, ad as DateTimePickerProps, ae as DescriptionColumns, af as DescriptionItem, ag as DescriptionList, ah as DescriptionListProps, ai as Dialog, aj as DialogProps, ak as DialogSize, al as Divider, am as DividerProps, an as DividerSpacing, ao as DonutChart, ap as DonutChartProps, aq as DonutSegment, ar as Drawer, as as DrawerProps, at as DrawerSide, au as DrawerSize, av as DropdownMenu, aw as DropdownMenuAlign, ax as DropdownMenuItem, ay as DropdownMenuProps, az as ENTER, aA as EditableGrid, aB as EditableGridProps, aC as EmailTemplate, aD as EmptyState, aE as EmptyStateProps, aF as ErrorBoundary, aG as ErrorBoundaryProps, aH as ErrorPage, aI as ErrorPageProps, aJ as FilePicker, aK as FilePickerProps, aL as FormField, aM as FormFieldProps, aN as FormLayoutPage, aO as GLASS_DIVIDER, aP as GLASS_INPUT_BG, aQ as GROUP_COLORS, aR as GalleryTemplate, aS as Gap, aT as GlobalSearch, aU as GlobalSearchProps, aV as Grid, aW as GridCols, aX as GridColumn, aY as GridProps, aZ as HelpCenter, a_ as HelpCenterDoc, a$ as HelpCenterProps, b0 as INPUT_BASE, b1 as INPUT_SIZES, b2 as IconButton, b3 as IconButtonProps, b4 as Inline, b5 as InlineProps, b6 as Input, b7 as InputNumber, b8 as InputNumberProps, b9 as InputProps, ba as InputSize, bb as Justify, bc as Kanban, bd as KanbanColumn, be as KanbanProps, bf as Label, bg as LabelProps, bh as LineChart, bi as LineChartProps, bj as LineChartSeries, bk as ListFooter, bl as ListLoadError, bm as ListLoadErrorProps, bn as LoadingSpinner, bo as LoadingSpinnerProps, bp as MAX_FRACTION_DIGITS, bq as MOD, br as Markdown, bs as MarkdownProps, bt as MediaUploadField, bu as MediaUploadFieldProps, bv as MediaUploadGrid, bw as MediaUploadGridItem, bx as MediaUploadGridProps, by as MetricBar, bz as MetricBarProps, bA as Milestone, bB as MilestoneKind, bC as MilestoneTimeline, bD as MilestoneTimelineProps, bE as NativeSelect, bF as NumericKeypad, bG as NumericKeypadProps, bH as PageHeader, bI as PageHeaderProps, bJ as Pagination, bK as PaginationProps, bL as Paragraph, bM as ParagraphProps, bN as PopupMenu, bO as PopupMenuDivider, bP as PopupMenuItem, bQ as PopupMenuLabel, bR as Radio, bS as RadioProps, bT as Result, bU as ResultProps, bV as ResultStatus, bW as SHIFT, bX as SearchProvider, bY as SearchResult, bZ as SearchableOption, b_ as SearchableSelect, b$ as SearchableSelectProps, c0 as Segmented, c1 as SegmentedOption, c2 as SegmentedProps, c3 as SegmentedSize, c4 as Select, c5 as SelectOption, c6 as SelectProps, c7 as SemanticGroup, c8 as SeverityTone, c9 as ShellPrefsAdapter, ca as ShellPrefsProvider, cb as SidebarActionButton, cc as SidebarActionButtonProps, cd as SidebarGroupLabel, ce as SidebarLayout, cf as SidebarLayoutProps, cg as SidebarNavItem, ch as Skeleton, ci as SkeletonProps, cj as SkeletonVariant, ck as Sparkline, cl as SparklineProps, cm as Stack, cn as StackProps, co as StatCard, cp as StatCardProps, cq as Statistic, cr as StatisticProps, cs as StatisticSize, ct as StatisticTone, cu as StatusBadge, cv as StatusBadgeProvider, cw as StepItem, cx as Stepper, cy as StepperProps, cz as Switch, cA as SwitchProps, cB as SwitchSize, cC as TabItem, cD as Tabs, cE as TabsProps, cF as TagInput, cG as TagInputOption, cH as TagInputProps, cI as Text, cJ as TextProps, cK as TextSize, cL as TextTone, cM as TextWeight, cN as Textarea, cO as TextareaProps, cP as Theme, cQ as TileButton, cR as TileButtonProps, cS as TileSize, cT as TimePicker, cU as TimePickerProps, cV as Title, cW as TitleLevel, cX as TitleProps, cY as ToastOptions, cZ as ToastPlacement, c_ as Tooltip, c$ as TooltipProps, d0 as TopNav, d1 as TopNavItem, d2 as TopNavProps, d3 as VERSION, d4 as appendKey, d5 as applyThemePrefs, d6 as backspace, d7 as confirm, d8 as confirmDestructive, d9 as formatDate, da as glassStyle, db as inputClasses, dc as isMac, dd as isSeverityTone, de as mediaFileName, df as prompt, dg as resolveTheme, dh as severityOf, di as tabButtonId, dj as tabPanelId, dk as toISODate, dl as toast, dm as useClickOutside, dn as useConfirm, dp as useFocusTrap, dq as useIsMobile, dr as useLocalStoragePrefs, ds as useScrollLock, dt as useShellPrefs, du as useTheme } from './index-Ka32s3Ij.js';
3
3
  import { W as WindowRegistry } from './types-BHVq95fp.js';
4
4
  export { M as ModalRegistryEntry, P as PageRegistryEntry, a as WindowRegistryEntry, i as isEntityEntry, b as isPageEntry, s as setShellWindowRegistry } from './types-BHVq95fp.js';
5
5
  import * as react from 'react';
@@ -959,10 +959,12 @@ interface PerfStatsProps {
959
959
  declare function PerfStats({ onClose, onSubmit, className }: PerfStatsProps): react_jsx_runtime.JSX.Element;
960
960
 
961
961
  /**
962
- * INTERNAL stub — Desktop's About modal references the consumer-side
963
- * changelog. The package ships no built-in changelog; consumer wires their
964
- * own through the eventual `branding` prop (TODO). Default = empty array
965
- * keeps the import compiling.
962
+ * INTERNAL stub — Desktop's What's New modal references the consumer-side
963
+ * changelog. The package ships no built-in changelog; the consumer wires
964
+ * their own through `DesktopHostConfig.productChangelog` (the What's New
965
+ * dialog reads it first, and this empty default keeps the import compiling
966
+ * when they don't). Layout's `branding` prop carries the rest of the visual
967
+ * identity — name, logo, tagline.
966
968
  */
967
969
  interface ChangelogEntry {
968
970
  version: string;
@@ -1075,7 +1077,26 @@ interface MobileAppConfig {
1075
1077
  description?: string;
1076
1078
  }
1077
1079
 
1080
+ /**
1081
+ * The product's visual identity, in one object: the start-menu button, the
1082
+ * startup splash, the logout cover and the mobile landing all read from it.
1083
+ * The About dialog and What's New changelog belong to `DesktopHostConfig`
1084
+ * (`productName`, `productIcon`, `productChangelog`, …), which configures the
1085
+ * desktop; this configures the chrome around it.
1086
+ */
1087
+ interface ShellBranding {
1088
+ /** Product name — start-menu button, startup splash, mobile landing. */
1089
+ productName?: string;
1090
+ /** Logo URL — start-menu button, splash and logout covers. Defaults to `/favicon.svg`. */
1091
+ logo?: string;
1092
+ /** Line under the product name on the splash and logout covers —
1093
+ * typically the company name. */
1094
+ tagline?: string;
1095
+ }
1078
1096
  interface LayoutProps {
1097
+ /** One-object form of the brand fields below; its fields win over them, so
1098
+ * a consumer can move over field by field. */
1099
+ branding?: ShellBranding;
1079
1100
  /** Brand label rendered on the start-menu button. */
1080
1101
  productName?: string;
1081
1102
  /** Icon URL rendered next to the brand label. Defaults to `/favicon.svg`. */
@@ -1128,7 +1149,7 @@ interface ClockCalendarConfig {
1128
1149
  close: () => void;
1129
1150
  }) => ReactNode;
1130
1151
  }
1131
- declare function Layout({ productName, productIcon, wallpapers, navSections, navIcons, sectionIcons, categories, notifications, search, taskbarTrayLeft, clockCalendar, mobileApp, }?: LayoutProps): react_jsx_runtime.JSX.Element;
1152
+ declare function Layout({ branding, productName, productIcon, wallpapers, navSections, navIcons, sectionIcons, categories, notifications, search, taskbarTrayLeft, clockCalendar, mobileApp, }?: LayoutProps): react_jsx_runtime.JSX.Element;
1132
1153
 
1133
1154
  interface StartMenuProps {
1134
1155
  open: boolean;
@@ -2164,4 +2185,4 @@ interface UndoState {
2164
2185
  future: UndoStep[];
2165
2186
  }
2166
2187
 
2167
- export { type ActivityKind, type AsyncEnvironment, BLOCKED_PCT_CPU, type BatteryInfo, BehaviorPanel, type BottleneckKind, type BulkColumn, type BulkColumnKind, BulkImportGrid, type BulkImportGridProps, type BulkRow, CancelButton, ChangePasswordForm, type ChangePasswordFormProps, type ChangelogEntry, type ClockCalendarConfig, ColumnDef, CopyButton, Customization, type CustomizationOmitSection, type CustomizationProps, type CustomizationSection, DEV_BANNER_TEXT, Desktop, type DesktopContextMenuItem, type DesktopHostConfig, DesktopHostProvider, DevIndicator, DocFavStar, type DuplicateGroup, type EntityFetcher, EntityList, type EntityListColumn, type EntityListContextAction, type EntityListProps, FilterBar, type FilterOption, type FpsGroup, type HealthCheckResult, ImageAnnotator, type ImageAnnotatorHandle, type ImageAnnotatorProps, LOG_CAP, Layout, type LayoutProps, type LogSummary, MIN_EVENT_SAMPLES, MIN_GROUP_SAMPLES, type MenuLayer, type MergeBulkOptions, type MergeBulkResult, type MobileAppConfig, Modal, ModalActions, NotificationBell, type NotificationsConfig, PaginatedResponse, PdfActionButton, type PdfActionButtonProps, type PerfEnvironment, type PerfLogRecord, type PerfReading, type PerfReport, PerfStats, type PerfStatsProps, type PlatformHints, ResizableTable, SMOOTH_FPS, SearchConfig, ServerStatusIndicator, type ServerStatusIndicatorProps, type ServerStatusUser, type ShellAuth, ShellAuthProvider, ShellEntityFetcherProvider, type ShellNotification, ShortcutHelp, SortState, SoundsPanel, type StagedTarget, StartMenu, type StickyEntityRef, type StickyResolver, SystemPreferences, type SystemPreferencesProps, type SystemPreferencesSection, type TodoProvider, type TodoTask, UndoControls, type UndoControlsApi, type UndoControlsProps, UndoProvider, type UndoProviderProps, type UndoSnapshot, type UndoState, type UndoStep, type UndoableOptions, type Verdict, WidgetManager, WindowCrashedFallback, WindowErrorBoundary, WindowManagerProvider, WindowRegistry, type WindowTarget, type WindowTargetOptions, WindowTitle, appendRecord as appendPerfRecord, applyDevTitle, beginWindowGesture, classifyActivity, classify as classifyPerf, commitExposeHighlight, createWindowRegistry, createWindowTarget, describeMachine, describePerfReport, exitExposeMode, findDuplicateKeys, getActiveWindowRoute, getExposeHighlight, getWindowPosition, isDevEnv, isInteracting, markMenuOpen, mergeBulkItems, toCsv as perfLogToCsv, perfReportFile, readEnvironment as readPerfEnvironment, registerModalEscapeInterceptor, requestAsyncEnvironment, requestWindowFront, setExposeHighlight, setShellApiClient, setShellAuthBridge, setShellNavIcons, setShellTodoProvider, setWindowDefaultPosition, setWindowPosition, subscribeExposeHighlight, summariseFrames, summariseLog as summarisePerfLog, toggleExposeMode, useColumnConfig, useDesktopHost, useEditHotkey, useEnclosingModalId, useFilters, useInfiniteScroll, useIsActiveWindow, useModalActive, useModalDuplicate, useModalSave, useNewHotkey, useShellAuth, useShellEntityFetcher, useSort, useTableNav, useUndo, useUndoable, useUndoableState, useWidgetSettings, useWindowDirty, useWindowManager, useWindowMenuItem, useWindowTarget, useWindowTitle };
2188
+ export { type ActivityKind, type AsyncEnvironment, BLOCKED_PCT_CPU, type BatteryInfo, BehaviorPanel, type BottleneckKind, type BulkColumn, type BulkColumnKind, BulkImportGrid, type BulkImportGridProps, type BulkRow, CancelButton, ChangePasswordForm, type ChangePasswordFormProps, type ChangelogEntry, type ClockCalendarConfig, ColumnDef, CopyButton, Customization, type CustomizationOmitSection, type CustomizationProps, type CustomizationSection, DEV_BANNER_TEXT, Desktop, type DesktopContextMenuItem, type DesktopHostConfig, DesktopHostProvider, DevIndicator, DocFavStar, type DuplicateGroup, type EntityFetcher, EntityList, type EntityListColumn, type EntityListContextAction, type EntityListProps, FilterBar, type FilterOption, type FpsGroup, type HealthCheckResult, ImageAnnotator, type ImageAnnotatorHandle, type ImageAnnotatorProps, LOG_CAP, Layout, type LayoutProps, type LogSummary, MIN_EVENT_SAMPLES, MIN_GROUP_SAMPLES, type MenuLayer, type MergeBulkOptions, type MergeBulkResult, type MobileAppConfig, Modal, ModalActions, NotificationBell, type NotificationsConfig, PaginatedResponse, PdfActionButton, type PdfActionButtonProps, type PerfEnvironment, type PerfLogRecord, type PerfReading, type PerfReport, PerfStats, type PerfStatsProps, type PlatformHints, ResizableTable, SMOOTH_FPS, SearchConfig, ServerStatusIndicator, type ServerStatusIndicatorProps, type ServerStatusUser, type ShellAuth, ShellAuthProvider, type ShellBranding, ShellEntityFetcherProvider, type ShellNotification, ShortcutHelp, SortState, SoundsPanel, type StagedTarget, StartMenu, type StickyEntityRef, type StickyResolver, SystemPreferences, type SystemPreferencesProps, type SystemPreferencesSection, type TodoProvider, type TodoTask, UndoControls, type UndoControlsApi, type UndoControlsProps, UndoProvider, type UndoProviderProps, type UndoSnapshot, type UndoState, type UndoStep, type UndoableOptions, type Verdict, WidgetManager, WindowCrashedFallback, WindowErrorBoundary, WindowManagerProvider, WindowRegistry, type WindowTarget, type WindowTargetOptions, WindowTitle, appendRecord as appendPerfRecord, applyDevTitle, beginWindowGesture, classifyActivity, classify as classifyPerf, commitExposeHighlight, createWindowRegistry, createWindowTarget, describeMachine, describePerfReport, exitExposeMode, findDuplicateKeys, getActiveWindowRoute, getExposeHighlight, getWindowPosition, isDevEnv, isInteracting, markMenuOpen, mergeBulkItems, toCsv as perfLogToCsv, perfReportFile, readEnvironment as readPerfEnvironment, registerModalEscapeInterceptor, requestAsyncEnvironment, requestWindowFront, setExposeHighlight, setShellApiClient, setShellAuthBridge, setShellNavIcons, setShellTodoProvider, setWindowDefaultPosition, setWindowPosition, subscribeExposeHighlight, summariseFrames, summariseLog as summarisePerfLog, toggleExposeMode, useColumnConfig, useDesktopHost, useEditHotkey, useEnclosingModalId, useFilters, useInfiniteScroll, useIsActiveWindow, useModalActive, useModalDuplicate, useModalSave, useNewHotkey, useShellAuth, useShellEntityFetcher, useSort, useTableNav, useUndo, useUndoable, useUndoableState, useWidgetSettings, useWindowDirty, useWindowManager, useWindowMenuItem, useWindowTarget, useWindowTitle };