@protobase/ui 0.19.5 → 0.19.7

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 (144) hide show
  1. package/dist/account/account-section.js +2 -2
  2. package/dist/account/account-security-page.js +2 -2
  3. package/dist/account/backup-codes.js +1 -1
  4. package/dist/account/passkeys-section.js +2 -2
  5. package/dist/account/password-dialog.js +1 -1
  6. package/dist/account/sign-in-policy-form.js +2 -2
  7. package/dist/account/sign-in-policy-page.js +2 -2
  8. package/dist/account/sign-in-providers-section.js +1 -1
  9. package/dist/account/staff-sign-in-log.js +3 -3
  10. package/dist/account/two-factor-setup.js +6 -6
  11. package/dist/action-card/action-card.js +1 -1
  12. package/dist/activity-chart/activity-chart.js +2 -2
  13. package/dist/app/delete/dialogs.js +3 -3
  14. package/dist/app/displays/display-controls.js +1 -1
  15. package/dist/app/displays/display-frame.js +1 -1
  16. package/dist/app/displays/list-cards.js +1 -1
  17. package/dist/app/displays/map-display.js +1 -1
  18. package/dist/app/displays/record-card.js +1 -1
  19. package/dist/app/embedded-list/embedded-list.js +2 -2
  20. package/dist/app/error-banner.js +1 -1
  21. package/dist/app/export/builder-port.js +54 -0
  22. package/dist/app/export/builder.js +61 -0
  23. package/dist/app/export/cells.js +93 -0
  24. package/dist/app/export/csv.js +17 -0
  25. package/dist/app/export/export-dialog.js +235 -0
  26. package/dist/app/export/export-options.js +49 -0
  27. package/dist/app/export/export-worker.d.ts +1 -0
  28. package/dist/app/export/export-worker.js +9 -0
  29. package/dist/app/export/run-export.js +62 -0
  30. package/dist/app/export/sink.js +91 -0
  31. package/dist/app/export/use-export-flow.js +139 -0
  32. package/dist/app/export/xlsx.js +91 -0
  33. package/dist/app/field-editor.js +6 -12
  34. package/dist/app/file-field.js +4 -4
  35. package/dist/app/gallery/lightbox.js +2 -2
  36. package/dist/app/gallery/photo-details.js +1 -1
  37. package/dist/app/import/import-check-step.js +2 -2
  38. package/dist/app/import/import-file-step.js +2 -2
  39. package/dist/app/import/import-mapping-step.js +1 -1
  40. package/dist/app/import/import-result-step.js +2 -2
  41. package/dist/app/import/import-select.js +2 -2
  42. package/dist/app/list-page.js +28 -3
  43. package/dist/app/meta-gate.js +3 -3
  44. package/dist/app/pages/blocks/card-frame.js +4 -4
  45. package/dist/app/pages/blocks/field.js +2 -5
  46. package/dist/app/pages/blocks/stat.js +2 -2
  47. package/dist/app/pages/problem.js +1 -1
  48. package/dist/app/pages/render-node.js +1 -1
  49. package/dist/app/record-page.js +2 -2
  50. package/dist/app/record-row/record-row-body.js +3 -3
  51. package/dist/app/record-row/saved-record-row.js +1 -1
  52. package/dist/app/related-section.js +1 -1
  53. package/dist/app/relation-picker.js +1 -1
  54. package/dist/app/runtime/runtime-update.js +3 -3
  55. package/dist/app/saved/saved-list.js +1 -1
  56. package/dist/app/searches/saved-search-rows.js +2 -2
  57. package/dist/app/searches/saved-search-section.js +1 -1
  58. package/dist/app/searches/saved-searches.js +1 -1
  59. package/dist/app/searches/search-controls.js +2 -2
  60. package/dist/app/searches/search-name-dialog.js +1 -1
  61. package/dist/app/searches/update-search-dialog.js +16 -19
  62. package/dist/app/sensitive-field.js +1 -1
  63. package/dist/app/source-notice.js +3 -3
  64. package/dist/app/staff-banner.js +1 -1
  65. package/dist/app-shell/breadcrumb.js +1 -1
  66. package/dist/app-shell/global-search.js +1 -1
  67. package/dist/app-shell/page-header.js +1 -1
  68. package/dist/app-shell/profile-menu.js +3 -3
  69. package/dist/app-shell/sidebar-group.js +1 -1
  70. package/dist/app-shell/sidebar-item.js +1 -1
  71. package/dist/app-shell/sidebar.js +2 -2
  72. package/dist/assistant-dock/part-view.js +1 -4
  73. package/dist/assistant-dock/widget-view.js +1 -4
  74. package/dist/auth/auth-gate.js +2 -2
  75. package/dist/auth/auth-layout.js +1 -1
  76. package/dist/auth/code-form.js +2 -2
  77. package/dist/auth/first-run-page.js +1 -1
  78. package/dist/auth/forgot-password-form.js +2 -2
  79. package/dist/auth/provider-sign-in-page.js +1 -1
  80. package/dist/auth/reset-password-form.js +3 -3
  81. package/dist/auth/setup-required-form.js +2 -2
  82. package/dist/auth/setup-required-page.js +1 -1
  83. package/dist/auth/sign-in-form.js +5 -5
  84. package/dist/auth/sign-in-prompt.js +2 -2
  85. package/dist/auth/sign-up-details-form.js +3 -3
  86. package/dist/auth/sign-up-email-form.js +4 -4
  87. package/dist/auth/staff-sign-in-form.js +3 -3
  88. package/dist/auth/two-factor-form.js +5 -5
  89. package/dist/chat/chat-message.js +1 -1
  90. package/dist/chat/chat-thread.js +1 -1
  91. package/dist/data/query-keys.js +7 -0
  92. package/dist/data-grid/grid-row.js +1 -1
  93. package/dist/data-grid/header-menu.js +1 -1
  94. package/dist/data-grid/row-menu.js +1 -1
  95. package/dist/filter-panel/facet-combobox.js +1 -1
  96. package/dist/filter-panel/filter-menu.js +1 -1
  97. package/dist/filter-panel/filter-panel.js +2 -2
  98. package/dist/inline-child-table/line-menu.js +1 -1
  99. package/dist/inline-child-table/line-row.js +4 -4
  100. package/dist/inline-child-table/number-cell.js +1 -1
  101. package/dist/inline-child-table/totals-footer.js +2 -2
  102. package/dist/organizations/app-roles-picker.js +1 -1
  103. package/dist/organizations/invitation-page.js +3 -3
  104. package/dist/organizations/invitations-page.js +2 -2
  105. package/dist/organizations/members-page.js +2 -2
  106. package/dist/organizations/organization-page.js +1 -1
  107. package/dist/organizations/organizations-page.js +2 -2
  108. package/dist/package.js +1 -1
  109. package/dist/plugins/before-sign-in.js +1 -1
  110. package/dist/plugins/plugin-gate.js +1 -1
  111. package/dist/plugins/plugin-notice.js +1 -1
  112. package/dist/primitives/button.js +1 -1
  113. package/dist/primitives/dialog.js +2 -2
  114. package/dist/primitives/input.js +1 -1
  115. package/dist/primitives/menu-select.js +2 -2
  116. package/dist/primitives/responsive-dialog.js +1 -1
  117. package/dist/primitives/segmented.js +1 -1
  118. package/dist/primitives/sheet.js +1 -1
  119. package/dist/primitives/textarea.js +1 -1
  120. package/dist/record-view/action-rail.js +1 -1
  121. package/dist/record-view/field.js +1 -1
  122. package/dist/record-view/key-facts.js +2 -2
  123. package/dist/record-view/record-sidebar.js +2 -2
  124. package/dist/record-view/section.js +2 -2
  125. package/dist/record-view/spec-table.js +1 -1
  126. package/dist/shell/assets/app-BRVJlz_E.js +68 -0
  127. package/dist/shell/assets/export-worker-CVd5saLq.js +2 -0
  128. package/dist/shell/assets/{index-BzCCIfII.js → index-CafsxSWx.js} +1 -1
  129. package/dist/shell/assets/index-Cuulz26c.css +2 -0
  130. package/dist/shell/assets/maplibre-Cb7ks8SG.js +814 -0
  131. package/dist/shell/assets/{record-map-BK_02Lmk.js → record-map-dXyPrmGg.js} +1 -1
  132. package/dist/shell/assets/{records-map-Dn72A_l-.js → records-map-bGH18FRn.js} +1 -1
  133. package/dist/shell/assets/{shared-protobase-ui-B6lrj7eA.js → shared-protobase-ui-e-G14mxb.js} +1 -1
  134. package/dist/shell/index.html +4 -4
  135. package/dist/shell/protobase.shell.json +1 -1
  136. package/dist/side-panel/side-panel.js +1 -1
  137. package/dist/step-list/step-list.js +1 -1
  138. package/dist/styles.css +1 -1
  139. package/dist/theme.css +2 -0
  140. package/dist/toasts/toast.js +2 -2
  141. package/package.json +5 -4
  142. package/dist/shell/assets/app-CZ4drn7G.js +0 -67
  143. package/dist/shell/assets/index-BoeKjvo8.css +0 -2
  144. package/dist/shell/assets/maplibre-BOsAtlAo.js +0 -814
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{a as t,c as n,n as r,o as i,s as a,t as o}from"./maplibre-BOsAtlAo.js";import{t as s}from"./jsx-runtime-NZYk81nU.js";var c=e(s(),1),l=({style:e,layers:s,position:l,zoom:u})=>(0,c.jsxs)(a,{mapLib:o,mapStyle:e,initialViewState:{...l,zoom:u},cooperativeGestures:!0,style:{width:`100%`,height:`100%`},children:[(0,c.jsx)(t,{showCompass:!1}),(0,c.jsx)(r,{layers:s}),(0,c.jsx)(i,{latitude:l.latitude,longitude:l.longitude,anchor:`bottom`,children:(0,c.jsx)(n,{"aria-hidden":!0,className:`size-8 fill-primary text-primary-foreground drop-shadow`,strokeWidth:1.5})})]});export{l as RecordMap};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{a as t,c as n,n as r,o as i,s as a,t as o}from"./maplibre-Cb7ks8SG.js";import{t as s}from"./jsx-runtime-NZYk81nU.js";var c=e(s(),1),l=({style:e,layers:s,position:l,zoom:u})=>(0,c.jsxs)(a,{mapLib:o,mapStyle:e,initialViewState:{...l,zoom:u},cooperativeGestures:!0,style:{width:`100%`,height:`100%`},children:[(0,c.jsx)(t,{showCompass:!1}),(0,c.jsx)(r,{layers:s}),(0,c.jsx)(i,{latitude:l.latitude,longitude:l.longitude,anchor:`bottom`,children:(0,c.jsx)(n,{"aria-hidden":!0,className:`size-8 fill-primary text-primary-foreground drop-shadow`,strokeWidth:1.5})})]});export{l as RecordMap};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-Cvdyeg_0.js";import{d as n,rt as r}from"./app-CZ4drn7G.js";import{a as i,c as a,i as o,n as s,o as c,r as l,s as u,t as d}from"./maplibre-BOsAtlAo.js";import{t as f}from"./jsx-runtime-NZYk81nU.js";var p=e(t(),1),m=512,h=85.051129,g=16,_=Array.from({length:23},(e,t)=>t),v=e=>e.type===`LineString`?e.coordinates:e.type===`MultiPolygon`?e.coordinates.flat(2):e.coordinates.flat(),y=e=>{let t=Math.max(-85.051129,Math.min(h,e))*Math.PI/180;return .5-Math.log(Math.tan(Math.PI/4+t/2))/(2*Math.PI)},b=e=>{let t=v(e),n=t.map(([e])=>e),r=t.map(([,e])=>y(e)),i=(Math.max(...n)-Math.min(...n))/360*m,a=(Math.max(...r)-Math.min(...r))*m;return Math.max(i,a)},x=(e,t)=>{let n=e.flatMap(e=>{if(!e.area)return[];let n=e.area.type===`LineString`||e.area.type===`MultiLineString`?`line`:`polygon`;return[{type:`Feature`,geometry:e.area,properties:{key:e.key,kind:n,span:b(e.area),chosen:t?.includes(e.key)??!1}}]});return{type:`FeatureCollection`,features:[...n.filter(e=>!e.properties.chosen),...n.filter(e=>e.properties.chosen)]}},S=e=>[`interpolate`,[`linear`],[`zoom`],..._.flatMap(t=>[t,[`*`,e,[`min`,1,[`max`,0,[`/`,[`-`,[`*`,[`get`,`span`],2**t],g],32]]]]])],C=e(f(),1),w=`position-area-fills`,T=[`==`,[`get`,`kind`],`polygon`],E=[`==`,[`get`,`kind`],`line`],D=(e,t)=>[`case`,[`get`,`chosen`],e,t],O=({points:e,selected:t,colors:n})=>{let r=x(e,t);if(r.features.length===0)return null;let i=[`case`,[`get`,`chosen`],n.chosen,n.area];return(0,C.jsxs)(o,{id:`position-areas`,type:`geojson`,data:r,children:[(0,C.jsx)(l,{id:w,type:`fill`,filter:T,paint:{"fill-color":i,"fill-opacity":S(D(.15,.1))}}),(0,C.jsx)(l,{id:`position-area-outlines`,type:`line`,filter:T,paint:{"line-color":i,"line-width":1.5,"line-dasharray":[3,2],"line-opacity":S(.8)}}),(0,C.jsx)(l,{id:`position-area-lines`,type:`line`,filter:E,layout:{"line-cap":`round`,"line-join":`round`},paint:{"line-color":i,"line-width":6,"line-opacity":S(D(.6,.35))}})]})},k=(e,t)=>{let n=document.createElement(`span`);n.style.color=`var(${t})`,e.append(n);let r=getComputedStyle(n).color;n.remove();let i=document.createElement(`canvas`);i.width=1,i.height=1;let a=i.getContext(`2d`,{willReadFrequently:!0});if(!a)return r;a.fillStyle=r,a.fillRect(0,0,1,1);let[o,s,c,l]=a.getImageData(0,0,1,1).data;return`rgba(${o}, ${s}, ${c}, ${l/255})`},A=28,j={padding:48,maxZoom:15,duration:0},M={padding:48,maxZoom:16,duration:300},N=32,P=new Intl.NumberFormat(`en-IE`,{notation:`compact`,maximumFractionDigits:1}),F=e=>[[e.west,e.south],[e.east,e.north]],I=({style:e,layers:t,initial:o,points:l,buckets:f,fit:m,onFitted:h,onMove:g,selected:_,covered:v,onSelect:y,onClear:b,markerLabel:x,bucketLabel:S})=>{let T=(0,p.useRef)(null),[E,D]=(0,p.useState)([]),[I,L]=(0,p.useState)(),R=new globalThis.Map(l.map(e=>[e.key,e])),z=l.map(e=>e.key).join(`,`),B=m&&JSON.stringify(m),V=()=>{let e=T.current?.getMap();e&&D(n(l.map(t=>({key:t.key,...e.project([t.longitude,t.latitude])})),A))},H=()=>{let e=T.current?.getMap();if(!e)return;let t=e.getBounds(),n=e.getCenter();g({bounds:{south:t.getSouth(),west:t.getWest(),north:t.getNorth(),east:t.getEast()},zoom:e.getZoom()},{latitude:n.lat,longitude:n.lng,zoom:e.getZoom()})},U=()=>{let e=T.current?.getMap();e&&m&&(e.fitBounds(F(m),j),h(),H())};(0,p.useEffect)(V,[z]),(0,p.useEffect)(U,[B]);let W=E.find(e=>_!==void 0&&e.keys.some(e=>_.includes(e)))?.at;return(0,p.useEffect)(()=>{let e=T.current?.getMap(),t=W===void 0?void 0:R.get(W);if(!e||!t||v===0)return;let{y:n}=e.project([t.longitude,t.latitude]),r=e.getContainer().clientHeight-v;n>N&&n<r||e.easeTo({center:[t.longitude,t.latitude],offset:[0,(N-v)/2],duration:300})},[W,v]),(0,C.jsxs)(u,{ref:T,mapLib:d,mapStyle:e,initialViewState:o??{latitude:0,longitude:0,zoom:1},style:{width:`100%`,height:`100%`},onLoad:()=>{let e=T.current.getMap().getContainer();L({area:k(e,`--primary`),chosen:k(e,`--foreground`)}),V(),m?U():H()},onZoomEnd:V,onMoveEnd:H,onClick:b,children:[(0,C.jsx)(i,{showCompass:!1}),(0,C.jsx)(s,{layers:t,below:w}),I&&(0,C.jsx)(O,{points:l,selected:_,colors:I}),f.map(e=>(0,C.jsx)(c,{latitude:e.latitude,longitude:e.longitude,anchor:`center`,children:(0,C.jsx)(`button`,{type:`button`,"aria-label":S(e.count),className:`flex size-10 cursor-pointer items-center justify-center rounded-full border-2 border-background bg-primary text-xs font-semibold text-primary-foreground tabular-nums shadow`,onClick:t=>{t.stopPropagation(),T.current?.getMap().fitBounds(F(e.bounds),M)},children:P.format(e.count)})},`${e.latitude},${e.longitude}`)),E.map(e=>{let t=R.get(e.at);if(!t)return null;let n=_!==void 0&&e.keys.some(e=>_.includes(e)),i=e.keys.every(e=>R.get(e)?.approximate);return(0,C.jsx)(c,{latitude:t.latitude,longitude:t.longitude,anchor:`bottom`,style:{zIndex:+!!n},children:(0,C.jsxs)(`button`,{type:`button`,"aria-label":x(e.keys),"aria-pressed":n,className:`relative block cursor-pointer`,onClick:t=>{t.stopPropagation(),y(e.keys)},children:[(0,C.jsx)(a,{"aria-hidden":!0,"data-approximate":i||void 0,className:r(`size-8 drop-shadow`,i?n?`fill-background text-foreground`:`fill-background text-primary`:n?`fill-foreground text-background`:`fill-primary text-primary-foreground`),strokeWidth:i?2:1.5,strokeDasharray:i?`3 2`:void 0}),e.keys.length>1&&(0,C.jsx)(`span`,{className:`absolute -right-2 -top-1 min-w-5 rounded-full border border-background bg-foreground px-1 text-center text-[11px] font-medium leading-4 text-background tabular-nums`,children:e.keys.length})]})},e.at)})]})};export{I as RecordsMap};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-Cvdyeg_0.js";import{d as n,rt as r}from"./app-BRVJlz_E.js";import{a as i,c as a,i as o,n as s,o as c,r as l,s as u,t as d}from"./maplibre-Cb7ks8SG.js";import{t as f}from"./jsx-runtime-NZYk81nU.js";var p=e(t(),1),m=512,h=85.051129,g=16,_=Array.from({length:23},(e,t)=>t),v=e=>e.type===`LineString`?e.coordinates:e.type===`MultiPolygon`?e.coordinates.flat(2):e.coordinates.flat(),y=e=>{let t=Math.max(-85.051129,Math.min(h,e))*Math.PI/180;return .5-Math.log(Math.tan(Math.PI/4+t/2))/(2*Math.PI)},b=e=>{let t=v(e),n=t.map(([e])=>e),r=t.map(([,e])=>y(e)),i=(Math.max(...n)-Math.min(...n))/360*m,a=(Math.max(...r)-Math.min(...r))*m;return Math.max(i,a)},x=(e,t)=>{let n=e.flatMap(e=>{if(!e.area)return[];let n=e.area.type===`LineString`||e.area.type===`MultiLineString`?`line`:`polygon`;return[{type:`Feature`,geometry:e.area,properties:{key:e.key,kind:n,span:b(e.area),chosen:t?.includes(e.key)??!1}}]});return{type:`FeatureCollection`,features:[...n.filter(e=>!e.properties.chosen),...n.filter(e=>e.properties.chosen)]}},S=e=>[`interpolate`,[`linear`],[`zoom`],..._.flatMap(t=>[t,[`*`,e,[`min`,1,[`max`,0,[`/`,[`-`,[`*`,[`get`,`span`],2**t],g],32]]]]])],C=e(f(),1),w=`position-area-fills`,T=[`==`,[`get`,`kind`],`polygon`],E=[`==`,[`get`,`kind`],`line`],D=(e,t)=>[`case`,[`get`,`chosen`],e,t],O=({points:e,selected:t,colors:n})=>{let r=x(e,t);if(r.features.length===0)return null;let i=[`case`,[`get`,`chosen`],n.chosen,n.area];return(0,C.jsxs)(o,{id:`position-areas`,type:`geojson`,data:r,children:[(0,C.jsx)(l,{id:w,type:`fill`,filter:T,paint:{"fill-color":i,"fill-opacity":S(D(.15,.1))}}),(0,C.jsx)(l,{id:`position-area-outlines`,type:`line`,filter:T,paint:{"line-color":i,"line-width":1.5,"line-dasharray":[3,2],"line-opacity":S(.8)}}),(0,C.jsx)(l,{id:`position-area-lines`,type:`line`,filter:E,layout:{"line-cap":`round`,"line-join":`round`},paint:{"line-color":i,"line-width":6,"line-opacity":S(D(.6,.35))}})]})},k=(e,t)=>{let n=document.createElement(`span`);n.style.color=`var(${t})`,e.append(n);let r=getComputedStyle(n).color;n.remove();let i=document.createElement(`canvas`);i.width=1,i.height=1;let a=i.getContext(`2d`,{willReadFrequently:!0});if(!a)return r;a.fillStyle=r,a.fillRect(0,0,1,1);let[o,s,c,l]=a.getImageData(0,0,1,1).data;return`rgba(${o}, ${s}, ${c}, ${l/255})`},A=28,j={padding:48,maxZoom:15,duration:0},M={padding:48,maxZoom:16,duration:300},N=32,P=new Intl.NumberFormat(`en-IE`,{notation:`compact`,maximumFractionDigits:1}),F=e=>[[e.west,e.south],[e.east,e.north]],I=({style:e,layers:t,initial:o,points:l,buckets:f,fit:m,onFitted:h,onMove:g,selected:_,covered:v,onSelect:y,onClear:b,markerLabel:x,bucketLabel:S})=>{let T=(0,p.useRef)(null),[E,D]=(0,p.useState)([]),[I,L]=(0,p.useState)(),R=new globalThis.Map(l.map(e=>[e.key,e])),z=l.map(e=>e.key).join(`,`),B=m&&JSON.stringify(m),V=()=>{let e=T.current?.getMap();e&&D(n(l.map(t=>({key:t.key,...e.project([t.longitude,t.latitude])})),A))},H=()=>{let e=T.current?.getMap();if(!e)return;let t=e.getBounds(),n=e.getCenter();g({bounds:{south:t.getSouth(),west:t.getWest(),north:t.getNorth(),east:t.getEast()},zoom:e.getZoom()},{latitude:n.lat,longitude:n.lng,zoom:e.getZoom()})},U=()=>{let e=T.current?.getMap();e&&m&&(e.fitBounds(F(m),j),h(),H())};(0,p.useEffect)(V,[z]),(0,p.useEffect)(U,[B]);let W=E.find(e=>_!==void 0&&e.keys.some(e=>_.includes(e)))?.at;return(0,p.useEffect)(()=>{let e=T.current?.getMap(),t=W===void 0?void 0:R.get(W);if(!e||!t||v===0)return;let{y:n}=e.project([t.longitude,t.latitude]),r=e.getContainer().clientHeight-v;n>N&&n<r||e.easeTo({center:[t.longitude,t.latitude],offset:[0,(N-v)/2],duration:300})},[W,v]),(0,C.jsxs)(u,{ref:T,mapLib:d,mapStyle:e,initialViewState:o??{latitude:0,longitude:0,zoom:1},style:{width:`100%`,height:`100%`},onLoad:()=>{let e=T.current.getMap().getContainer();L({area:k(e,`--primary`),chosen:k(e,`--foreground`)}),V(),m?U():H()},onZoomEnd:V,onMoveEnd:H,onClick:b,children:[(0,C.jsx)(i,{showCompass:!1}),(0,C.jsx)(s,{layers:t,below:w}),I&&(0,C.jsx)(O,{points:l,selected:_,colors:I}),f.map(e=>(0,C.jsx)(c,{latitude:e.latitude,longitude:e.longitude,anchor:`center`,children:(0,C.jsx)(`button`,{type:`button`,"aria-label":S(e.count),className:`flex size-10 cursor-pointer items-center justify-center rounded-full border-2 border-background bg-primary text-xs font-semibold text-primary-foreground tabular-nums shadow`,onClick:t=>{t.stopPropagation(),T.current?.getMap().fitBounds(F(e.bounds),M)},children:P.format(e.count)})},`${e.latitude},${e.longitude}`)),E.map(e=>{let t=R.get(e.at);if(!t)return null;let n=_!==void 0&&e.keys.some(e=>_.includes(e)),i=e.keys.every(e=>R.get(e)?.approximate);return(0,C.jsx)(c,{latitude:t.latitude,longitude:t.longitude,anchor:`bottom`,style:{zIndex:+!!n},children:(0,C.jsxs)(`button`,{type:`button`,"aria-label":x(e.keys),"aria-pressed":n,className:`relative block cursor-pointer`,onClick:t=>{t.stopPropagation(),y(e.keys)},children:[(0,C.jsx)(a,{"aria-hidden":!0,"data-approximate":i||void 0,className:r(`size-8 drop-shadow`,i?n?`fill-background text-foreground`:`fill-background text-primary`:n?`fill-foreground text-background`:`fill-primary text-primary-foreground`),strokeWidth:i?2:1.5,strokeDasharray:i?`3 2`:void 0}),e.keys.length>1&&(0,C.jsx)(`span`,{className:`absolute -right-2 -top-1 min-w-5 rounded-full border border-background bg-foreground px-1 text-center text-[11px] font-medium leading-4 text-background tabular-nums`,children:e.keys.length})]})},e.at)})]})};export{I as RecordsMap};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,A as n,B as r,C as i,D as a,E as o,F as s,G as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as v,S as y,T as b,U as x,V as S,W as C,X as w,Y as T,Z as E,_ as D,a as O,b as k,c as ee,f as A,g as j,h as M,i as N,j as P,k as F,l as I,m as L,n as R,nt as z,o as B,p as V,q as H,r as U,s as W,t as G,u as K,v as q,w as J,x as Y,y as X,z as Z}from"./app-CZ4drn7G.js";import{t as Q}from"./jsx-runtime-NZYk81nU.js";var $=e(Q(),1),te=({row:e,resource:t,recordKey:n,...r})=>{let i=K(),a=O(),o=t??i?.resource??a?.model.name;if(o===void 0)throw Error(`RecordLink needs a resource outside a list display or a record`);return(0,$.jsx)(L,{to:{kind:`record`,resource:o,key:e?e.key:n},...r})};export{n as ActionCard,d as ApiProvider,G as App,L as AppLink,X as AssistantDock,c as AuthLayout,w as Button,g as ChatMessage,m as ChatThread,x as CodeForm,h as CompactTable,p as Composer,b as DiffView,F as FieldList,t as Input,z as LogoMark,T as OtpInput,Y as PartView,te as RecordLink,C as ResendCodeButton,V as ResponsiveDialog,P as SidePanel,A as SignInPrompt,_ as Spinner,J as StepList,E as buttonClass,y as definePlugin,i as defineUi,o as diffStats,R as isConflict,r as mergeUi,a as parseDiff,f as pluginApi,v as protobaseVersion,S as uiFromModule,l as useApiToken,M as useAppAddress,q as useAssistant,D as useAssistantClient,k as useBackendData,H as useClient,B as useFacets,W as useHistogram,O as useLayoutRecord,N as useList,I as useListDisplay,j as useMeta,Z as usePlugin,s as useRecord,u as useResourceClient,ee as useSeries,U as useUpdateRecord};
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$ as t,A as n,B as r,C as i,D as a,E as o,F as s,G as c,I as l,J as u,K as d,L as f,M as p,N as m,O as h,P as g,Q as _,R as v,S as y,T as b,U as x,V as S,W as C,X as w,Y as T,Z as E,_ as D,a as O,b as k,c as ee,f as A,g as j,h as M,i as N,j as P,k as F,l as I,m as L,n as R,nt as z,o as B,p as V,q as H,r as U,s as W,t as G,u as K,v as q,w as J,x as Y,y as X,z as Z}from"./app-BRVJlz_E.js";import{t as Q}from"./jsx-runtime-NZYk81nU.js";var $=e(Q(),1),te=({row:e,resource:t,recordKey:n,...r})=>{let i=K(),a=O(),o=t??i?.resource??a?.model.name;if(o===void 0)throw Error(`RecordLink needs a resource outside a list display or a record`);return(0,$.jsx)(L,{to:{kind:`record`,resource:o,key:e?e.key:n},...r})};export{n as ActionCard,d as ApiProvider,G as App,L as AppLink,X as AssistantDock,c as AuthLayout,w as Button,g as ChatMessage,m as ChatThread,x as CodeForm,h as CompactTable,p as Composer,b as DiffView,F as FieldList,t as Input,z as LogoMark,T as OtpInput,Y as PartView,te as RecordLink,C as ResendCodeButton,V as ResponsiveDialog,P as SidePanel,A as SignInPrompt,_ as Spinner,J as StepList,E as buttonClass,y as definePlugin,i as defineUi,o as diffStats,R as isConflict,r as mergeUi,a as parseDiff,f as pluginApi,v as protobaseVersion,S as uiFromModule,l as useApiToken,M as useAppAddress,q as useAssistant,D as useAssistantClient,k as useBackendData,H as useClient,B as useFacets,W as useHistogram,O as useLayoutRecord,N as useList,I as useListDisplay,j as useMeta,Z as usePlugin,s as useRecord,u as useResourceClient,ee as useSeries,U as useUpdateRecord};
@@ -16,15 +16,15 @@
16
16
  }
17
17
  document.documentElement.dataset.theme = stored === 'light' || stored === 'dark' ? stored : matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
18
18
  </script>
19
- <script type="importmap">{"imports":{"react":"/assets/shared-react-DhkZ2M4l.js","react/jsx-runtime":"/assets/shared-react-jsx-runtime-xPQrWk0g.js","react-dom":"/assets/shared-react-dom-D508a1cq.js","@protobase/ui":"/assets/shared-protobase-ui-B6lrj7eA.js"}}</script>
20
- <script type="module" crossorigin src="/assets/index-BzCCIfII.js"></script>
19
+ <script type="importmap">{"imports":{"react":"/assets/shared-react-DhkZ2M4l.js","react/jsx-runtime":"/assets/shared-react-jsx-runtime-xPQrWk0g.js","react-dom":"/assets/shared-react-dom-D508a1cq.js","@protobase/ui":"/assets/shared-protobase-ui-e-G14mxb.js"}}</script>
20
+ <script type="module" crossorigin src="/assets/index-CafsxSWx.js"></script>
21
21
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-hePW80VL.js">
22
22
  <link rel="modulepreload" crossorigin href="/assets/react-Cvdyeg_0.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/react-dom-B-VxWsjA.js">
24
24
  <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-NZYk81nU.js">
25
- <link rel="modulepreload" crossorigin href="/assets/app-CZ4drn7G.js">
25
+ <link rel="modulepreload" crossorigin href="/assets/app-BRVJlz_E.js">
26
26
  <link rel="stylesheet" crossorigin href="/assets/app-GUjJKojE.css">
27
- <link rel="stylesheet" crossorigin href="/assets/index-BoeKjvo8.css">
27
+ <link rel="stylesheet" crossorigin href="/assets/index-Cuulz26c.css">
28
28
  <link rel="stylesheet" href="/protobase.theme.css">
29
29
  <link rel="icon" type="image/svg+xml" href="/protobase.favicon.svg">
30
30
  </head>
@@ -1,5 +1,5 @@
1
1
  {
2
- "protobase": "0.19.5",
2
+ "protobase": "0.19.7",
3
3
  "pluginApi": 1,
4
4
  "paths": [
5
5
  "/index.html",
@@ -25,7 +25,7 @@ const SidePanel = ({ title, icon, status, onClose, footer, children }) => {
25
25
  children: [
26
26
  icon,
27
27
  /* @__PURE__ */ jsx("h2", {
28
- className: "flex-1 text-[13px] font-semibold",
28
+ className: "flex-1 font-semibold",
29
29
  children: title
30
30
  }),
31
31
  status && /* @__PURE__ */ jsx("span", {
@@ -25,7 +25,7 @@ const tones = {
25
25
  const StepList = ({ steps, className }) => /* @__PURE__ */ jsx("ul", {
26
26
  className: cn("shrink-0 space-y-2", className),
27
27
  children: steps.map((step, index) => /* @__PURE__ */ jsxs("li", {
28
- className: "flex items-start gap-2.5 text-[13px]",
28
+ className: "flex items-start gap-2.5",
29
29
  "data-state": step.state,
30
30
  children: [/* @__PURE__ */ jsx("span", {
31
31
  className: "mt-0.5 flex size-4 shrink-0 items-center justify-center",
package/dist/styles.css CHANGED
@@ -20,7 +20,7 @@
20
20
  background: var(--background);
21
21
  color: var(--foreground);
22
22
  font-family: var(--font-sans);
23
- font-size: 13px;
23
+ font-size: --theme(--text-body);
24
24
  line-height: 1.5;
25
25
  -webkit-font-smoothing: antialiased;
26
26
  }
package/dist/theme.css CHANGED
@@ -39,6 +39,8 @@
39
39
  --color-backdrop: var(--backdrop);
40
40
  --font-sans: var(--font, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);
41
41
  --font-mono: var(--font-code, ui-monospace, "SF Mono", Menlo, Consolas, monospace);
42
+ /* The app's base text size: the body's, and `text-body` where an element must restate it. */
43
+ --text-body: 14px;
42
44
  --radius-sm: max(0px, calc(var(--radius, 6px) - 2px));
43
45
  --radius-md: var(--radius, 6px);
44
46
  --radius-lg: calc(var(--radius, 6px) + 2px);
@@ -4,7 +4,7 @@ import { Spinner } from "../primitives/spinner.js";
4
4
  import { CheckCircle2, X, XCircle } from "lucide-react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/toasts/toast.tsx
7
- const actionClass = "-my-0.5 rounded px-1.5 py-0.5 text-[13px] font-medium text-primary-text hover:bg-primary-soft";
7
+ const actionClass = "-my-0.5 rounded px-1.5 py-0.5 font-medium text-primary-text hover:bg-primary-soft";
8
8
  const Action = ({ action }) => {
9
9
  if ("onClick" in action) return /* @__PURE__ */ jsx("button", {
10
10
  type: "button",
@@ -40,7 +40,7 @@ const Toast = ({ state, title, description, action, onDismiss }) => /* @__PURE__
40
40
  /* @__PURE__ */ jsxs("div", {
41
41
  className: "min-w-0 flex-1",
42
42
  children: [/* @__PURE__ */ jsx("p", {
43
- className: "text-[13px] font-medium text-foreground",
43
+ className: "font-medium text-foreground",
44
44
  children: title
45
45
  }), description && /* @__PURE__ */ jsx("p", {
46
46
  className: "mt-0.5 text-xs text-muted-foreground",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@protobase/ui",
3
- "version": "0.19.5",
3
+ "version": "0.19.7",
4
4
  "description": "The Protobase admin app and the React hooks and components for custom UI.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -39,12 +39,13 @@
39
39
  "dependencies": {
40
40
  "@dnd-kit/core": "^6.3.1",
41
41
  "@dnd-kit/sortable": "^10.0.0",
42
- "@protobase/client": "0.19.5",
43
- "@protobase/layout": "0.19.5",
44
- "@protobase/schema": "0.19.5",
42
+ "@protobase/client": "0.19.7",
43
+ "@protobase/layout": "0.19.7",
44
+ "@protobase/schema": "0.19.7",
45
45
  "@sentry/browser": "^11.7.0",
46
46
  "@tanstack/react-query": "^5.104.1",
47
47
  "@tanstack/react-table": "^9.2.6",
48
+ "fflate": "^0.8.3",
48
49
  "lucide-react": "^1.52.0",
49
50
  "maplibre-gl": "^6.14.0",
50
51
  "pmtiles": "^4.5.0",