@cryptlex/web-components 6.6.6-alpha88 → 6.6.6-alpha90

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 (259) hide show
  1. package/dist/components/code-block.d.ts +2 -4
  2. package/dist/components/code-block.js +1 -13
  3. package/dist/components/code-block.js.map +1 -1
  4. package/dist/components/data-table.js +1 -1
  5. package/dist/components/date-picker.js +1 -1
  6. package/dist/components/dialog.d.ts +1 -1
  7. package/dist/components/dialog.js +1 -1
  8. package/dist/components/dialog.js.map +1 -1
  9. package/dist/utilities/highlight-code.d.ts +7 -0
  10. package/dist/utilities/highlight-code.js +2 -0
  11. package/dist/utilities/highlight-code.js.map +1 -0
  12. package/dist/utilities/shiki.js +1 -1
  13. package/dist/utilities/shiki.js.map +1 -1
  14. package/dist/utilities/use-code-highlight.d.ts +2 -0
  15. package/dist/utilities/use-code-highlight.js +2 -0
  16. package/dist/utilities/use-code-highlight.js.map +1 -0
  17. package/package.json +3 -2
  18. package/dist/andromeeda.js +0 -2
  19. package/dist/andromeeda.js.map +0 -1
  20. package/dist/angular-html.js +0 -2
  21. package/dist/angular-html.js.map +0 -1
  22. package/dist/angular-ts.js +0 -2
  23. package/dist/angular-ts.js.map +0 -1
  24. package/dist/astro.js +0 -2
  25. package/dist/astro.js.map +0 -1
  26. package/dist/aurora-x.js +0 -2
  27. package/dist/aurora-x.js.map +0 -1
  28. package/dist/ayu-dark.js +0 -2
  29. package/dist/ayu-dark.js.map +0 -1
  30. package/dist/ayu-light.js +0 -2
  31. package/dist/ayu-light.js.map +0 -1
  32. package/dist/ayu-mirage.js +0 -2
  33. package/dist/ayu-mirage.js.map +0 -1
  34. package/dist/blade.js +0 -2
  35. package/dist/blade.js.map +0 -1
  36. package/dist/c.js +0 -2
  37. package/dist/c.js.map +0 -1
  38. package/dist/catppuccin-frappe.js +0 -2
  39. package/dist/catppuccin-frappe.js.map +0 -1
  40. package/dist/catppuccin-latte.js +0 -2
  41. package/dist/catppuccin-latte.js.map +0 -1
  42. package/dist/catppuccin-macchiato.js +0 -2
  43. package/dist/catppuccin-macchiato.js.map +0 -1
  44. package/dist/catppuccin-mocha.js +0 -2
  45. package/dist/catppuccin-mocha.js.map +0 -1
  46. package/dist/coffee.js +0 -2
  47. package/dist/coffee.js.map +0 -1
  48. package/dist/cpp.js +0 -2
  49. package/dist/cpp.js.map +0 -1
  50. package/dist/css.js +0 -2
  51. package/dist/css.js.map +0 -1
  52. package/dist/csv.js +0 -2
  53. package/dist/csv.js.map +0 -1
  54. package/dist/dark-plus.js +0 -2
  55. package/dist/dark-plus.js.map +0 -1
  56. package/dist/dracula-soft.js +0 -2
  57. package/dist/dracula-soft.js.map +0 -1
  58. package/dist/dracula.js +0 -2
  59. package/dist/dracula.js.map +0 -1
  60. package/dist/everforest-dark.js +0 -2
  61. package/dist/everforest-dark.js.map +0 -1
  62. package/dist/everforest-light.js +0 -2
  63. package/dist/everforest-light.js.map +0 -1
  64. package/dist/github-dark-default.js +0 -2
  65. package/dist/github-dark-default.js.map +0 -1
  66. package/dist/github-dark-dimmed.js +0 -2
  67. package/dist/github-dark-dimmed.js.map +0 -1
  68. package/dist/github-dark-high-contrast.js +0 -2
  69. package/dist/github-dark-high-contrast.js.map +0 -1
  70. package/dist/github-dark.js +0 -2
  71. package/dist/github-dark.js.map +0 -1
  72. package/dist/github-light-default.js +0 -2
  73. package/dist/github-light-default.js.map +0 -1
  74. package/dist/github-light-high-contrast.js +0 -2
  75. package/dist/github-light-high-contrast.js.map +0 -1
  76. package/dist/github-light.js +0 -2
  77. package/dist/github-light.js.map +0 -1
  78. package/dist/glsl.js +0 -2
  79. package/dist/glsl.js.map +0 -1
  80. package/dist/graphql.js +0 -2
  81. package/dist/graphql.js.map +0 -1
  82. package/dist/gruvbox-dark-hard.js +0 -2
  83. package/dist/gruvbox-dark-hard.js.map +0 -1
  84. package/dist/gruvbox-dark-medium.js +0 -2
  85. package/dist/gruvbox-dark-medium.js.map +0 -1
  86. package/dist/gruvbox-dark-soft.js +0 -2
  87. package/dist/gruvbox-dark-soft.js.map +0 -1
  88. package/dist/gruvbox-light-hard.js +0 -2
  89. package/dist/gruvbox-light-hard.js.map +0 -1
  90. package/dist/gruvbox-light-medium.js +0 -2
  91. package/dist/gruvbox-light-medium.js.map +0 -1
  92. package/dist/gruvbox-light-soft.js +0 -2
  93. package/dist/gruvbox-light-soft.js.map +0 -1
  94. package/dist/haml.js +0 -2
  95. package/dist/haml.js.map +0 -1
  96. package/dist/handlebars.js +0 -2
  97. package/dist/handlebars.js.map +0 -1
  98. package/dist/horizon.js +0 -2
  99. package/dist/horizon.js.map +0 -1
  100. package/dist/houston.js +0 -2
  101. package/dist/houston.js.map +0 -1
  102. package/dist/html-derivative.js +0 -2
  103. package/dist/html-derivative.js.map +0 -1
  104. package/dist/html.js +0 -2
  105. package/dist/html.js.map +0 -1
  106. package/dist/http.js +0 -2
  107. package/dist/http.js.map +0 -1
  108. package/dist/hurl.js +0 -2
  109. package/dist/hurl.js.map +0 -1
  110. package/dist/imba.js +0 -2
  111. package/dist/imba.js.map +0 -1
  112. package/dist/java.js +0 -2
  113. package/dist/java.js.map +0 -1
  114. package/dist/javascript.js +0 -2
  115. package/dist/javascript.js.map +0 -1
  116. package/dist/jinja.js +0 -2
  117. package/dist/jinja.js.map +0 -1
  118. package/dist/jison.js +0 -2
  119. package/dist/jison.js.map +0 -1
  120. package/dist/json.js +0 -2
  121. package/dist/json.js.map +0 -1
  122. package/dist/json5.js +0 -2
  123. package/dist/json5.js.map +0 -1
  124. package/dist/jsonc.js +0 -2
  125. package/dist/jsonc.js.map +0 -1
  126. package/dist/jsonl.js +0 -2
  127. package/dist/jsonl.js.map +0 -1
  128. package/dist/jsx.js +0 -2
  129. package/dist/jsx.js.map +0 -1
  130. package/dist/julia.js +0 -2
  131. package/dist/julia.js.map +0 -1
  132. package/dist/kanagawa-dragon.js +0 -2
  133. package/dist/kanagawa-dragon.js.map +0 -1
  134. package/dist/kanagawa-lotus.js +0 -2
  135. package/dist/kanagawa-lotus.js.map +0 -1
  136. package/dist/kanagawa-wave.js +0 -2
  137. package/dist/kanagawa-wave.js.map +0 -1
  138. package/dist/laserwave.js +0 -2
  139. package/dist/laserwave.js.map +0 -1
  140. package/dist/less.js +0 -2
  141. package/dist/less.js.map +0 -1
  142. package/dist/light-plus.js +0 -2
  143. package/dist/light-plus.js.map +0 -1
  144. package/dist/markdown.js +0 -2
  145. package/dist/markdown.js.map +0 -1
  146. package/dist/marko.js +0 -2
  147. package/dist/marko.js.map +0 -1
  148. package/dist/material-theme-darker.js +0 -2
  149. package/dist/material-theme-darker.js.map +0 -1
  150. package/dist/material-theme-lighter.js +0 -2
  151. package/dist/material-theme-lighter.js.map +0 -1
  152. package/dist/material-theme-ocean.js +0 -2
  153. package/dist/material-theme-ocean.js.map +0 -1
  154. package/dist/material-theme-palenight.js +0 -2
  155. package/dist/material-theme-palenight.js.map +0 -1
  156. package/dist/material-theme.js +0 -2
  157. package/dist/material-theme.js.map +0 -1
  158. package/dist/mdc.js +0 -2
  159. package/dist/mdc.js.map +0 -1
  160. package/dist/mdx.js +0 -2
  161. package/dist/mdx.js.map +0 -1
  162. package/dist/min-dark.js +0 -2
  163. package/dist/min-dark.js.map +0 -1
  164. package/dist/min-light.js +0 -2
  165. package/dist/min-light.js.map +0 -1
  166. package/dist/monokai.js +0 -2
  167. package/dist/monokai.js.map +0 -1
  168. package/dist/night-owl-light.js +0 -2
  169. package/dist/night-owl-light.js.map +0 -1
  170. package/dist/night-owl.js +0 -2
  171. package/dist/night-owl.js.map +0 -1
  172. package/dist/nord.js +0 -2
  173. package/dist/nord.js.map +0 -1
  174. package/dist/one-dark-pro.js +0 -2
  175. package/dist/one-dark-pro.js.map +0 -1
  176. package/dist/one-light.js +0 -2
  177. package/dist/one-light.js.map +0 -1
  178. package/dist/php.js +0 -2
  179. package/dist/php.js.map +0 -1
  180. package/dist/plastic.js +0 -2
  181. package/dist/plastic.js.map +0 -1
  182. package/dist/poimandres.js +0 -2
  183. package/dist/poimandres.js.map +0 -1
  184. package/dist/postcss.js +0 -2
  185. package/dist/postcss.js.map +0 -1
  186. package/dist/pug.js +0 -2
  187. package/dist/pug.js.map +0 -1
  188. package/dist/python.js +0 -2
  189. package/dist/python.js.map +0 -1
  190. package/dist/r.js +0 -2
  191. package/dist/r.js.map +0 -1
  192. package/dist/red.js +0 -2
  193. package/dist/red.js.map +0 -1
  194. package/dist/regexp.js +0 -2
  195. package/dist/regexp.js.map +0 -1
  196. package/dist/rose-pine-dawn.js +0 -2
  197. package/dist/rose-pine-dawn.js.map +0 -1
  198. package/dist/rose-pine-moon.js +0 -2
  199. package/dist/rose-pine-moon.js.map +0 -1
  200. package/dist/rose-pine.js +0 -2
  201. package/dist/rose-pine.js.map +0 -1
  202. package/dist/sass.js +0 -2
  203. package/dist/sass.js.map +0 -1
  204. package/dist/scss.js +0 -2
  205. package/dist/scss.js.map +0 -1
  206. package/dist/shellscript.js +0 -2
  207. package/dist/shellscript.js.map +0 -1
  208. package/dist/slack-dark.js +0 -2
  209. package/dist/slack-dark.js.map +0 -1
  210. package/dist/slack-ochin.js +0 -2
  211. package/dist/slack-ochin.js.map +0 -1
  212. package/dist/snazzy-light.js +0 -2
  213. package/dist/snazzy-light.js.map +0 -1
  214. package/dist/solarized-dark.js +0 -2
  215. package/dist/solarized-dark.js.map +0 -1
  216. package/dist/solarized-light.js +0 -2
  217. package/dist/solarized-light.js.map +0 -1
  218. package/dist/sql.js +0 -2
  219. package/dist/sql.js.map +0 -1
  220. package/dist/stylus.js +0 -2
  221. package/dist/stylus.js.map +0 -1
  222. package/dist/svelte.js +0 -2
  223. package/dist/svelte.js.map +0 -1
  224. package/dist/synthwave-84.js +0 -2
  225. package/dist/synthwave-84.js.map +0 -1
  226. package/dist/tokyo-night.js +0 -2
  227. package/dist/tokyo-night.js.map +0 -1
  228. package/dist/ts-tags.js +0 -2
  229. package/dist/ts-tags.js.map +0 -1
  230. package/dist/tsx.js +0 -2
  231. package/dist/tsx.js.map +0 -1
  232. package/dist/typescript.js +0 -2
  233. package/dist/typescript.js.map +0 -1
  234. package/dist/vesper.js +0 -2
  235. package/dist/vesper.js.map +0 -1
  236. package/dist/vitesse-black.js +0 -2
  237. package/dist/vitesse-black.js.map +0 -1
  238. package/dist/vitesse-dark.js +0 -2
  239. package/dist/vitesse-dark.js.map +0 -1
  240. package/dist/vitesse-light.js +0 -2
  241. package/dist/vitesse-light.js.map +0 -1
  242. package/dist/vue-html.js +0 -2
  243. package/dist/vue-html.js.map +0 -1
  244. package/dist/vue-vine.js +0 -2
  245. package/dist/vue-vine.js.map +0 -1
  246. package/dist/vue.js +0 -2
  247. package/dist/vue.js.map +0 -1
  248. package/dist/wasm.js +0 -2
  249. package/dist/wasm.js.map +0 -1
  250. package/dist/wasm2.js +0 -2
  251. package/dist/wasm2.js.map +0 -1
  252. package/dist/wgsl.js +0 -2
  253. package/dist/wgsl.js.map +0 -1
  254. package/dist/wit.js +0 -2
  255. package/dist/wit.js.map +0 -1
  256. package/dist/xml.js +0 -2
  257. package/dist/xml.js.map +0 -1
  258. package/dist/yaml.js +0 -2
  259. package/dist/yaml.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t,Fragment as T,jsxs as c}from"react/jsx-runtime";import{createContext as de,useState as D,useMemo as me,useEffect as ge,useContext as pe,useRef as fe}from"react";import{Button as C}from"./button.js";import{useSensors as be,useSensor as H,PointerSensor as he,KeyboardSensor as Se,DndContext as ye,closestCenter as ve,DragOverlay as Ce}from"@dnd-kit/core";import{sortableKeyboardCoordinates as xe,SortableContext as we,verticalListSortingStrategy as Te,arrayMove as Ne,useSortable as Ie}from"@dnd-kit/sortable";import{CSS as Ae}from"@dnd-kit/utilities";import{useQuery as De}from"@tanstack/react-query";import{createColumnHelper as W,useReactTable as Fe,getCoreRowModel as Pe,flexRender as _}from"@tanstack/react-table";import{useLocalStorage as B}from"@uidotdev/usehooks";import{merge as Re}from"lodash-es";import{Badge as ze}from"./badge.js";import{TfDatePicker as Oe}from"./date-picker.js";import{EasyMenu as R,MenuItem as F}from"./menu.js";import{PopoverTrigger as Le,Popover as _e}from"./popover.js";import{useAppForm as Me}from"../utilities/form-hook.js";import{useResourceFormatter as $,ALL_OS as $e}from"../utilities/resources.js";import{classNames as x}from"../utilities/theme.js";import{IcInfo as Ee,IcMoreVertical as je,IcRefresh as qe,IcColumns as Ve,IcGrip as ke,IcFirst as He,IcLeft as Be,IcRight as Ue,IcLast as Ke,IcSortAsc as Qe,IcSortDesc as Ge,IcSortNone as Xe,IcFilter as Ye,IcRemove as U,IcCheck as K,IcMinus as Ze,IcAccount as Je,IcLicense as We,IcDate as et,IcFile as tt}from"./icons.js";import{TfMultipleIdSearchInput as nt}from"./id-search.js";import{Loader as rt}from"./loader.js";import{SearchField as at}from"./searchfield.js";import{Table as ot,TableHeader as it,TableRow as Q,TableHead as st,TableBody as lt,TableCell as ct}from"./table.js";import{CountryName as ut}from"../utilities/countries.js";import{formatDate as dt}from"../utilities/date.js";import{Duration as mt}from"../utilities/duration.js";import{formatDays as gt,formatFilesize as pt,formatNumber as ft}from"../utilities/numbers.js";import{Checkbox as G}from"./checkbox.js";import{getSubscriptionStartTriggerLabel as bt,ALL_LICENSE_TYPES as ht}from"./select-options.js";import{useCtxClient as St}from"../utilities/ctx-client.js";import{ControlledDialogProvider as yt,useControlledDialog as ee}from"./dialog.js";import"class-variance-authority";import"react-aria-components";import"@internationalized/date";import"./calendar.js";import"./form.js";import"./datefield.js";import"../utilities/form.js";import"../utilities/form-context.js";import"@tanstack/react-form";import"./list-box.js";import"./select.js";import"./multi-select.js";import"./numberfield.js";import"./textfield.js";import"./kbd.js";import"../utilities/string.js";import"clsx";import"../utilities/empty-option.js";function vt(e){return e?e.desc?`-${e.id}`:`+${e.id}`:"-createdAt"}const te=W(),Ct=[te.accessor("checkbox",{header:({table:e})=>t(G,{isIndeterminate:e.getIsSomeRowsSelected()&&!e.getIsAllPageRowsSelected(),isSelected:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected(),onChange:()=>e.toggleAllPageRowsSelected(),"aria-label":"Select all"}),cell:({row:e})=>t(G,{isSelected:e.getIsSelected(),onChange:()=>e.toggleSelected(),"aria-label":"Select row"}),enableSorting:!1,enableHiding:!1})],w="TableActions";function xt(e){return e.length===0?[]:[te.accessor(w,{header:"Actions",id:w,enableHiding:!1,cell:({row:r})=>t(Pt,{label:t(je,{}),data:r.original,items:e}),enableSorting:!1})]}function Pn(){return W()}function Rn({path:e,pathParameters:r,columns:n,filterConfig:s,columnsToHideByDefault:o={},allowSelection:u=!1,initialFilters:l=[],tableActions:a}){const[d,S]=D({pagination:{pageIndex:0,pageSize:20},sorting:[]}),{sorting:m,pagination:y}=d,[p,g]=D(""),[h,f]=D({}),[b,z]=D(l),E=me(()=>b.map(i=>Array.isArray(i.value)?{[i.property]:{[i.operator]:i.value.join(",")}}:{[i.property]:{[i.operator]:i.value}}).reduce((i,v)=>Re(i,v),{}),[b]),I={...b,page:y.pageIndex+1,limit:y.pageSize,sort:vt(m[0]),search:p},ie=St(),O=["get",e,I],[j,q]=B(`${O.join("")}_ctx_column_order_preference`,[]),[V,se]=B(`${O.join("")}_ctx_column_visibility_preference`,{id:!1,...o}),L=i=>{S(v=>({...v,...i}))},P=De({queryKey:O,queryFn:async()=>{const i=await ie.GET(e,{params:{query:{page:I.page,limit:I.limit,sort:I.sort,search:I.search,...E},path:r}});return{data:i.data??[],total:Number.parseInt(i.response.headers.get("Pagination-Count")||"0")}}}),le=a.filter(ae),ce=[...u?Ct:[],...n,...xt(le??[])];function ue(i){return typeof i=="function"}function A(i,v){return ue(i)?i(v):i}const k=Fe({data:P.data?.data??[],columns:ce,getCoreRowModel:Pe(),rowCount:P.data?.total??0,manualPagination:!0,onPaginationChange:i=>{L({pagination:A(i,y)})},manualSorting:!0,onSortingChange:i=>{f({}),L({sorting:[...A(i,m)]})},manualFiltering:!0,onColumnVisibilityChange:i=>{se(A(i,V))},onRowSelectionChange:i=>{f(A(i,h))},onColumnOrderChange:i=>{q(A(i,j))},state:{sorting:m,columnVisibility:V,pagination:y,rowSelection:h,columnOrder:j},meta:{refetch:P.refetch}});return ge(()=>{const i=k.getAllLeafColumns();q([...i.filter(v=>v.id!==w).map(v=>v.id),...i.filter(v=>v.id===w).map(v=>v.id)])},[]),{tableState:d,updateTableState:L,query:P,setSearchQuery:g,searchQuery:p,tanTable:k,mergedFilters:E,filters:b,setFilters:z,filterConfig:s,tableActions:a,pathParameters:r}}const ne=de(null);function N(){const e=pe(ne);if(!e)throw Error("DataTable should be used within DataTableProvider.");return e}function zn({children:e,...r}){return t(ne.Provider,{value:r,children:e})}function On({className:e,...r}){const{query:n,tanTable:s}=N();return t(T,{children:t(yt,{children:c("section",{...r,className:x("flex flex-col bg-elevation-1",e),children:[t(It,{}),c("div",{className:"w-full overflow-auto border-x h-table relative",tabIndex:0,children:[n.isLoading&&t(X,{className:"cursor-wait",children:t(rt,{})}),!n.isLoading&&s.getRowModel().rows.length===0&&t(X,{className:"cursor-not-allowed",children:!n.isFetching&&(n.isError?c("span",{className:"flex gap-3 justify-center items-center",children:[t(Ee,{}),t("span",{children:n.error.message})]}):n.data?.data?.length===0?t(T,{children:"No results found."}):t(T,{children:"Unknown error. Please contact customer support."}))}),!n.isLoading&&s.getRowModel().rows.length!==0&&t(Dt,{className:"w-full"})]}),c("div",{className:"flex w-full justify-between border gap-icon p-icon overflow-x-auto",children:[c("div",{className:"flex gap-icon",children:[t(wt,{}),t(Nt,{})]}),t(Tt,{})]})]})})})}function X({children:e,className:r}){return c(T,{children:[t("span",{className:x(r,"absolute top-0 bg-elevation-1 text-foreground z-20 size-full body-sm flex items-center justify-center"),children:e}),t("span",{className:"relative h-full w-0 block"})]})}function wt(){const{tanTable:e}=N(),[r,n]=D(null),s=$(),o=be(H(he),H(Se,{coordinateGetter:xe}));return t(ye,{sensors:o,collisionDetection:ve,onDragStart:l=>{const{active:a}=l;n(a.id.toString())},onDragEnd:l=>{const{active:a,over:d}=l;if(d&&a.id!==d.id){const S=e.getState().columnOrder,m=S.indexOf(a.id.toString()),y=S.indexOf(d.id.toString());e.setColumnOrder([...Ne(S,m,y)])}n(null)},children:c(we,{items:e.getState().columnOrder,strategy:Te,children:[c(R,{label:c(T,{children:[t(Ve,{className:"inline align-bottom me-1"}),"Columns"]}),selectionMode:"multiple",items:e.getAllFlatColumns(),selectedKeys:e.getVisibleFlatColumns().map(l=>l.id),children:[t(F,{onAction:()=>e.toggleAllColumnsVisible(),className:"italic",children:"(select all)"}),e.getState().columnOrder.map(l=>{const a=e.getAllFlatColumns().find(d=>d.id===l);return!a||a.id==="checkbox"||a.id===w?null:t(u,{column:a},a.id)})]}),t(Ce,{children:r?t("div",{className:"opacity-70 border-2 border-primary",children:s(r)}):null})]})});function u({column:l}){const{attributes:a,listeners:d,setNodeRef:S,transform:m,transition:y}=Ie({id:l.id}),p={transform:Ae.Transform.toString(m),transition:y,zIndex:"999"};return c(F,{ref:S,style:p,...a,id:l.id,onAction:()=>l.toggleVisibility(),isDisabled:!l.getCanHide(),className:"flex items-center",children:[t(ke,{...d,className:"size-icon cursor-grab"}),M(l),l.getIsSorted()&&t(re,{className:"size-icon",direction:l.getIsSorted()})]})}}function Tt(){const{tanTable:e}=N(),r=e.getRowCount();return c("div",{className:"flex items-center gap-2",children:[t("span",{className:"whitespace-nowrap body-sm text-muted",children:`${e.getState().pagination.pageIndex*e.getState().pagination.pageSize+1} - ${Math.min((e.getState().pagination.pageIndex+1)*e.getState().pagination.pageSize,r)} of ${r?.toLocaleString()}`}),t(C,{"aria-label":"First page",onPress:()=>e.firstPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon",children:t(He,{})}),t(C,{"aria-label":"Previous page",onPress:()=>e.previousPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon",children:t(Be,{})}),t(C,{"aria-label":"Next page",onPress:()=>e.nextPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon",children:t(Ue,{})}),t(C,{"aria-label":"Last page",onClick:()=>e.lastPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon",children:t(Ke,{})})]})}function Nt(){const{tanTable:e}=N(),r=[10,20,30,40,50];return t(R,{label:e.getState().pagination.pageSize.toString(),selectionMode:"single",selectedKeys:[e.getState().pagination.pageSize.toString()],items:r.map(n=>({id:n.toString(),value:n})),children:n=>t(F,{onAction:()=>e.setPageSize(n.value),children:n.value})})}function It(){const{query:e,tanTable:r,searchQuery:n,setSearchQuery:s,tableActions:o}=N(),u=r.getSelectedRowModel().rows.length>0,l=o.filter(a=>a.resourceType!=="single").filter(a=>a.resourceType==="multiple"===u);return c("section",{className:"flex bg-elevation-1 justify-between my-0 p-icon border gap-icon overflow-auto",children:[c("div",{className:"flex gap-icon",children:[t(C,{"aria-label":"Refresh",isPending:e.isFetching,onClick:()=>e.refetch(),variant:"neutral",size:"icon",children:t(qe,{})}),t(Ft,{items:l,isFetching:e.isFetching})]}),c("div",{className:"flex gap-icon",children:[t(Ot,{}),t(at,{value:n,onChange:s})]})]})}function re({direction:e,...r}){return e==="asc"?t(Qe,{className:"size-3.5",...r}):e==="desc"?t(Ge,{className:"size-3.5",...r}):t(Xe,{className:"size-3.5",...r})}function M(e){const r=$(),n=e.columnDef.header;return typeof n=="string"?n:r(e.id)}function At(e){const r=e.column.columnDef.meta?.displayType,n=e.getValue();if(n==null)return null;switch(r){case"date":return t("span",{className:"tabular-nums",children:dt(n)});case"number":return t("span",{className:"block text-right tabular-nums",children:ft(n)});case"boolean":case"badge":return t(ze,{className:"uppercase w-full",children:String(n)});case"country":return t(ut,{value:n});case"enum":return t("span",{className:"uppercase w-full",children:String(n)});case"fileSize":return pt(n);case"days":return gt(n);case"os":return $e[n]??n;case"licenseType":return ht[n]??n;case"subscriptionInterval":return mt.formatISODuration(n);case"subscriptionStartTrigger":return bt(n);default:return String(n)}}function Y({header:e}){const r=e.column.columnDef.header;return typeof r=="string"||!r?M(e.column):typeof r=="function"?typeof r(e.getContext())=="string"?M(e.column):_(r,e.getContext()):_(r,e.getContext())}function Dt({className:e}){const{tanTable:r}=N(),n=(s,o,u="z-50")=>x("px-icon py-2 text-left body-sm font-medium whitespace-nowrap",s&&`bg-elevation-1 sticky right-0 ${u} text-center justify-center`,o);return c(ot,{className:x("table-auto",e),children:[t(it,{className:"sticky top-0 z-10",children:r.getHeaderGroups().map(s=>t(Q,{children:s.headers.map(o=>c(st,{scope:"col",colSpan:o.colSpan,className:n(o.id===w,"bg-elevation-1"),children:[!o.column.getCanSort()&&!o.isPlaceholder&&t("div",{className:x("w-full py-1 inline-flex items-center gap-1 body-sm",o.id===w?"justify-center":"justify-start"),children:t(Y,{header:o})}),o.column.getCanSort()&&c(C,{variant:"ghost",className:x("w-full p-1",o.id===w?"justify-center":"justify-start"),onPress:o.column.getToggleSortingHandler(),children:[t("span",{children:t(Y,{header:o})}),t(re,{direction:o.column.getIsSorted()})]})]},o.id))},s.id))}),t(lt,{children:r.getRowModel().rows.map(s=>t(Q,{className:x("transition-colors data-[selected=true]:bg-primary/10 hover:bg-muted-foreground/20"),"data-selected":s.getIsSelected(),children:s.getVisibleCells().map(o=>{const u=o.column.id===w,l=o.column.columnDef.meta?.displayType?At(o):_(o.column.columnDef.cell,o.getContext());return t(ct,{className:x(n(u,void 0,"z-1"),u&&"flex justify-center items-center"),children:l},o.id)})},s.id))})]})}function Z(e){return e.resourceType==="none"}function ae(e){return e.resourceType==="single"}function J(e){return e.resourceType==="multiple"}function Ft({items:e,isFetching:r}){const{openDialog:n,closeDialog:s}=ee(),{tanTable:o}=N();function u(a,d){return a.isDisabled?Z(a)?a.isDisabled():J(a)?a.isDisabled(d):!1:!1}const l=o.getSelectedRowModel().rows.map(a=>a.original);return t(T,{children:e.map((a,d)=>{const S=a.icon,m=u(a,l)||r;return c(C,{"aria-label":a.label,type:"button",isDisabled:m,className:"animate-in fade-in slide-in-from-left-15 duration-300 transition-transform",onPress:y=>{const p={event:y,openDialog:n,closeDialog:s};Z(a)?a.onPress(p):J(a)&&a.onPress({...p,data:l})},variant:a.variant??"neutral",children:[S&&t(S,{"aria-hidden":!0}),t("span",{children:a.label})]},`${a.label}-${d}`)})})}function Pt({label:e,items:r,data:n}){const{openDialog:s,closeDialog:o}=ee();return t(R,{"aria-label":"Actions",label:e,size:"icon",children:r.map((u,l)=>{const a=u.icon,d=typeof u.label=="function"?u.label(n):u.label;return c(F,{id:typeof d=="string"?d:void 0,isDisabled:u.isDisabled?.(n)??!1,onAction:()=>{const S={openDialog:s,closeDialog:o};ae(u)&&u.onPress({...S,data:n})},children:[t(a,{className:"size-icon"}),d]},`${l}-${typeof d=="string"?d:""}`)})})}const Ln=["eq","ne","cn","nc","sw","ew","in","nin","gt","gte","lt","lte"],Rt={eq:"equal to",ne:"not equal to",cn:"contains",nc:"does not contain",sw:"starts with",ew:"ends with",in:"includes",nin:"does not include",gt:"greater than",gte:"greater than or equal to",lt:"less than",lte:"less than or equal to"};function zt(e,r){const n=`${r}-${Date.now()}`,s=oe[e][0];switch(e){case"bool":return{id:n,type:e,property:r,operator:s,value:!0};case"string":return{id:n,type:e,property:r,operator:s,value:""};case"date":return{id:n,type:e,property:r,operator:s,value:new Date().toISOString()};case"id":return{id:n,type:e,property:r,operator:s,value:""};case"id-search":return{id:n,type:e,property:r,operator:s,value:[]};case"enum":return{id:n,type:e,property:r,operator:s,value:new Set};case"number":return{id:n,type:e,property:r,operator:s,value:0}}}const oe={bool:["eq"],enum:["in","nin"],id:["in","nin"],"id-search":["in","nin"],string:["eq","ne","cn","nc","sw","ew","in","nin"],date:["lt","gt"],number:["eq","ne","gt","gte","lt","lte"]};function Ot({className:e,...r}){const{filters:n,query:s,setFilters:o,filterConfig:u,pathParameters:l}=N(),a=fe(null),d=$(),m=Me({defaultValues:{filters:n},onSubmit:({value:p})=>{o(p.filters)}}),y=Object.keys(u).sort();return t("section",{...r,className:x("flex gap-icon items-center",e),children:c(Le,{onOpenChange:p=>{p?a.current?.focus():m.handleSubmit()},children:[c("div",{className:"relative",children:[n.length>0&&t("div",{className:"size-2 rounded-full absolute bg-primary/90 z-20 top-0 right-0 translate-x-0.5 -translate-y-0.5"}),t(C,{"aria-label":"Filter",isDisabled:s.isPending||y.length===0,type:"button",size:"icon",variant:"neutral",children:t(Ye,{})})]}),t(_e,{className:"w-full p-icon",children:t("form",{onSubmit:p=>{p.preventDefault()},className:"flex flex-col gap-icon max-h-table overflow-auto ",children:t(m.Field,{mode:"array",name:"filters",children:p=>c(T,{children:[p.state.value.map((g,h)=>c("div",{className:"flex gap-icon items-center justify-normal",children:[t("span",{className:"body-sm",children:d(g.property)}),t(m.AppField,{name:`filters[${h}].operator`,children:f=>t(f.TfSingleSelect,{items:oe[g.type].map(b=>({id:b,label:t(T,{children:Rt[b]})}))})},g.id),g.type==="bool"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>t(f.TfCheckbox,{autoFocus:!0})}),g.type==="date"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>t(Oe,{autoFocus:!0})}),g.type==="id"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>t(f.TfTextField,{autoFocus:!0})}),g.type==="string"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>t(f.TfTextField,{autoFocus:!0})}),g.type==="number"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>t(f.TfNumberField,{autoFocus:!0})}),g.type==="enum"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>{const b=u[g.property];return b.type!=="enum"?null:t(f.TfMultiSelect,{items:b.options})}}),g.type==="id-search"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>{const b=u[g.property];if(b.type!=="id-search")return null;const z=l?{path:l,query:{}}:void 0;return t(nt,{path:b.path,accessor:b.accessor,defaultParams:z})}}),t(C,{type:"button",variant:"neutral",size:"icon",onPress:()=>p.removeValue(h),children:t(U,{})})]},g.id)),c("div",{className:"flex w-full items-center justify-end gap-2 not-first:mt-icon",children:[t(R,{label:"Add filter",autoFocus:!0,children:y.sort().map(g=>{const h=u[g].type,f=Lt[h];return c(F,{className:"!justify-between",onAction:()=>{const b=zt(h,g);p.pushValue(b)},children:[d(g),t(f,{})]},g)})}),p.state.value.length>0?c(C,{type:"button",variant:"neutral",onPress:()=>{p.setValue([])},children:[t(U,{}),"Reset"]}):null]})]})})})})]})})}const Lt={"id-search":tt,bool:K,date:et,enum:We,id:Je,number:Ze,string:K};export{Rt as C,Ot as D,On as DataTable,ne as DataTableContext,zn as DataTableProvider,Ln as F,Pn as getColumnHelper,N as useDataTable,Rn as useDataTableState};
1
+ "use client";import{jsx as t,Fragment as T,jsxs as c}from"react/jsx-runtime";import{createContext as de,useState as D,useMemo as me,useEffect as ge,useContext as pe,useRef as fe}from"react";import{Button as C}from"./button.js";import{useSensors as be,useSensor as H,PointerSensor as he,KeyboardSensor as Se,DndContext as ye,closestCenter as ve,DragOverlay as Ce}from"@dnd-kit/core";import{sortableKeyboardCoordinates as xe,SortableContext as we,verticalListSortingStrategy as Te,arrayMove as Ne,useSortable as Ie}from"@dnd-kit/sortable";import{CSS as Ae}from"@dnd-kit/utilities";import{useQuery as De}from"@tanstack/react-query";import{createColumnHelper as W,useReactTable as Fe,getCoreRowModel as Pe,flexRender as _}from"@tanstack/react-table";import{useLocalStorage as B}from"@uidotdev/usehooks";import{merge as Re}from"lodash-es";import{Badge as ze}from"./badge.js";import{TfDatePicker as Oe}from"./date-picker.js";import{EasyMenu as R,MenuItem as F}from"./menu.js";import{PopoverTrigger as Le,Popover as _e}from"./popover.js";import{useAppForm as Me}from"../utilities/form-hook.js";import{useResourceFormatter as $,ALL_OS as $e}from"../utilities/resources.js";import{classNames as x}from"../utilities/theme.js";import{IcInfo as Ee,IcMoreVertical as je,IcRefresh as qe,IcColumns as Ve,IcGrip as ke,IcFirst as He,IcLeft as Be,IcRight as Ue,IcLast as Ke,IcSortAsc as Qe,IcSortDesc as Ge,IcSortNone as Xe,IcFilter as Ye,IcRemove as U,IcCheck as K,IcMinus as Ze,IcAccount as Je,IcLicense as We,IcDate as et,IcFile as tt}from"./icons.js";import{TfMultipleIdSearchInput as nt}from"./id-search.js";import{Loader as rt}from"./loader.js";import{SearchField as at}from"./searchfield.js";import{Table as ot,TableHeader as it,TableRow as Q,TableHead as st,TableBody as lt,TableCell as ct}from"./table.js";import{CountryName as ut}from"../utilities/countries.js";import{formatDate as dt}from"../utilities/date.js";import{Duration as mt}from"../utilities/duration.js";import{formatDays as gt,formatFilesize as pt,formatNumber as ft}from"../utilities/numbers.js";import{Checkbox as G}from"./checkbox.js";import{getSubscriptionStartTriggerLabel as bt,ALL_LICENSE_TYPES as ht}from"./select-options.js";import{useCtxClient as St}from"../utilities/ctx-client.js";import{ControlledDialogProvider as yt,useControlledDialog as ee}from"./dialog.js";import"class-variance-authority";import"react-aria-components";import"clsx";import"@internationalized/date";import"./calendar.js";import"./form.js";import"./datefield.js";import"../utilities/form.js";import"../utilities/form-context.js";import"@tanstack/react-form";import"./list-box.js";import"./select.js";import"./multi-select.js";import"./numberfield.js";import"./textfield.js";import"./kbd.js";import"../utilities/string.js";import"../utilities/empty-option.js";function vt(e){return e?e.desc?`-${e.id}`:`+${e.id}`:"-createdAt"}const te=W(),Ct=[te.accessor("checkbox",{header:({table:e})=>t(G,{isIndeterminate:e.getIsSomeRowsSelected()&&!e.getIsAllPageRowsSelected(),isSelected:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected(),onChange:()=>e.toggleAllPageRowsSelected(),"aria-label":"Select all"}),cell:({row:e})=>t(G,{isSelected:e.getIsSelected(),onChange:()=>e.toggleSelected(),"aria-label":"Select row"}),enableSorting:!1,enableHiding:!1})],w="TableActions";function xt(e){return e.length===0?[]:[te.accessor(w,{header:"Actions",id:w,enableHiding:!1,cell:({row:r})=>t(Pt,{label:t(je,{}),data:r.original,items:e}),enableSorting:!1})]}function Pn(){return W()}function Rn({path:e,pathParameters:r,columns:n,filterConfig:s,columnsToHideByDefault:o={},allowSelection:u=!1,initialFilters:l=[],tableActions:a}){const[d,S]=D({pagination:{pageIndex:0,pageSize:20},sorting:[]}),{sorting:m,pagination:y}=d,[p,g]=D(""),[h,f]=D({}),[b,z]=D(l),E=me(()=>b.map(i=>Array.isArray(i.value)?{[i.property]:{[i.operator]:i.value.join(",")}}:{[i.property]:{[i.operator]:i.value}}).reduce((i,v)=>Re(i,v),{}),[b]),I={...b,page:y.pageIndex+1,limit:y.pageSize,sort:vt(m[0]),search:p},ie=St(),O=["get",e,I],[j,q]=B(`${O.join("")}_ctx_column_order_preference`,[]),[V,se]=B(`${O.join("")}_ctx_column_visibility_preference`,{id:!1,...o}),L=i=>{S(v=>({...v,...i}))},P=De({queryKey:O,queryFn:async()=>{const i=await ie.GET(e,{params:{query:{page:I.page,limit:I.limit,sort:I.sort,search:I.search,...E},path:r}});return{data:i.data??[],total:Number.parseInt(i.response.headers.get("Pagination-Count")||"0")}}}),le=a.filter(ae),ce=[...u?Ct:[],...n,...xt(le??[])];function ue(i){return typeof i=="function"}function A(i,v){return ue(i)?i(v):i}const k=Fe({data:P.data?.data??[],columns:ce,getCoreRowModel:Pe(),rowCount:P.data?.total??0,manualPagination:!0,onPaginationChange:i=>{L({pagination:A(i,y)})},manualSorting:!0,onSortingChange:i=>{f({}),L({sorting:[...A(i,m)]})},manualFiltering:!0,onColumnVisibilityChange:i=>{se(A(i,V))},onRowSelectionChange:i=>{f(A(i,h))},onColumnOrderChange:i=>{q(A(i,j))},state:{sorting:m,columnVisibility:V,pagination:y,rowSelection:h,columnOrder:j},meta:{refetch:P.refetch}});return ge(()=>{const i=k.getAllLeafColumns();q([...i.filter(v=>v.id!==w).map(v=>v.id),...i.filter(v=>v.id===w).map(v=>v.id)])},[]),{tableState:d,updateTableState:L,query:P,setSearchQuery:g,searchQuery:p,tanTable:k,mergedFilters:E,filters:b,setFilters:z,filterConfig:s,tableActions:a,pathParameters:r}}const ne=de(null);function N(){const e=pe(ne);if(!e)throw Error("DataTable should be used within DataTableProvider.");return e}function zn({children:e,...r}){return t(ne.Provider,{value:r,children:e})}function On({className:e,...r}){const{query:n,tanTable:s}=N();return t(T,{children:t(yt,{children:c("section",{...r,className:x("flex flex-col bg-elevation-1",e),children:[t(It,{}),c("div",{className:"w-full overflow-auto border-x h-table relative",tabIndex:0,children:[n.isLoading&&t(X,{className:"cursor-wait",children:t(rt,{})}),!n.isLoading&&s.getRowModel().rows.length===0&&t(X,{className:"cursor-not-allowed",children:!n.isFetching&&(n.isError?c("span",{className:"flex gap-3 justify-center items-center",children:[t(Ee,{}),t("span",{children:n.error.message})]}):n.data?.data?.length===0?t(T,{children:"No results found."}):t(T,{children:"Unknown error. Please contact customer support."}))}),!n.isLoading&&s.getRowModel().rows.length!==0&&t(Dt,{className:"w-full"})]}),c("div",{className:"flex w-full justify-between border gap-icon p-icon overflow-x-auto",children:[c("div",{className:"flex gap-icon",children:[t(wt,{}),t(Nt,{})]}),t(Tt,{})]})]})})})}function X({children:e,className:r}){return c(T,{children:[t("span",{className:x(r,"absolute top-0 bg-elevation-1 text-foreground z-20 size-full body-sm flex items-center justify-center"),children:e}),t("span",{className:"relative h-full w-0 block"})]})}function wt(){const{tanTable:e}=N(),[r,n]=D(null),s=$(),o=be(H(he),H(Se,{coordinateGetter:xe}));return t(ye,{sensors:o,collisionDetection:ve,onDragStart:l=>{const{active:a}=l;n(a.id.toString())},onDragEnd:l=>{const{active:a,over:d}=l;if(d&&a.id!==d.id){const S=e.getState().columnOrder,m=S.indexOf(a.id.toString()),y=S.indexOf(d.id.toString());e.setColumnOrder([...Ne(S,m,y)])}n(null)},children:c(we,{items:e.getState().columnOrder,strategy:Te,children:[c(R,{label:c(T,{children:[t(Ve,{className:"inline align-bottom me-1"}),"Columns"]}),selectionMode:"multiple",items:e.getAllFlatColumns(),selectedKeys:e.getVisibleFlatColumns().map(l=>l.id),children:[t(F,{onAction:()=>e.toggleAllColumnsVisible(),className:"italic",children:"(select all)"}),e.getState().columnOrder.map(l=>{const a=e.getAllFlatColumns().find(d=>d.id===l);return!a||a.id==="checkbox"||a.id===w?null:t(u,{column:a},a.id)})]}),t(Ce,{children:r?t("div",{className:"opacity-70 border-2 border-primary",children:s(r)}):null})]})});function u({column:l}){const{attributes:a,listeners:d,setNodeRef:S,transform:m,transition:y}=Ie({id:l.id}),p={transform:Ae.Transform.toString(m),transition:y,zIndex:"999"};return c(F,{ref:S,style:p,...a,id:l.id,onAction:()=>l.toggleVisibility(),isDisabled:!l.getCanHide(),className:"flex items-center",children:[t(ke,{...d,className:"size-icon cursor-grab"}),M(l),l.getIsSorted()&&t(re,{className:"size-icon",direction:l.getIsSorted()})]})}}function Tt(){const{tanTable:e}=N(),r=e.getRowCount();return c("div",{className:"flex items-center gap-2",children:[t("span",{className:"whitespace-nowrap body-sm text-muted",children:`${e.getState().pagination.pageIndex*e.getState().pagination.pageSize+1} - ${Math.min((e.getState().pagination.pageIndex+1)*e.getState().pagination.pageSize,r)} of ${r?.toLocaleString()}`}),t(C,{"aria-label":"First page",onPress:()=>e.firstPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon",children:t(He,{})}),t(C,{"aria-label":"Previous page",onPress:()=>e.previousPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon",children:t(Be,{})}),t(C,{"aria-label":"Next page",onPress:()=>e.nextPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon",children:t(Ue,{})}),t(C,{"aria-label":"Last page",onClick:()=>e.lastPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon",children:t(Ke,{})})]})}function Nt(){const{tanTable:e}=N(),r=[10,20,30,40,50];return t(R,{label:e.getState().pagination.pageSize.toString(),selectionMode:"single",selectedKeys:[e.getState().pagination.pageSize.toString()],items:r.map(n=>({id:n.toString(),value:n})),children:n=>t(F,{onAction:()=>e.setPageSize(n.value),children:n.value})})}function It(){const{query:e,tanTable:r,searchQuery:n,setSearchQuery:s,tableActions:o}=N(),u=r.getSelectedRowModel().rows.length>0,l=o.filter(a=>a.resourceType!=="single").filter(a=>a.resourceType==="multiple"===u);return c("section",{className:"flex bg-elevation-1 justify-between my-0 p-icon border gap-icon overflow-auto",children:[c("div",{className:"flex gap-icon",children:[t(C,{"aria-label":"Refresh",isPending:e.isFetching,onClick:()=>e.refetch(),variant:"neutral",size:"icon",children:t(qe,{})}),t(Ft,{items:l,isFetching:e.isFetching})]}),c("div",{className:"flex gap-icon",children:[t(Ot,{}),t(at,{value:n,onChange:s})]})]})}function re({direction:e,...r}){return e==="asc"?t(Qe,{className:"size-3.5",...r}):e==="desc"?t(Ge,{className:"size-3.5",...r}):t(Xe,{className:"size-3.5",...r})}function M(e){const r=$(),n=e.columnDef.header;return typeof n=="string"?n:r(e.id)}function At(e){const r=e.column.columnDef.meta?.displayType,n=e.getValue();if(n==null)return null;switch(r){case"date":return t("span",{className:"tabular-nums",children:dt(n)});case"number":return t("span",{className:"block text-right tabular-nums",children:ft(n)});case"boolean":case"badge":return t(ze,{className:"uppercase w-full",children:String(n)});case"country":return t(ut,{value:n});case"enum":return t("span",{className:"uppercase w-full",children:String(n)});case"fileSize":return pt(n);case"days":return gt(n);case"os":return $e[n]??n;case"licenseType":return ht[n]??n;case"subscriptionInterval":return mt.formatISODuration(n);case"subscriptionStartTrigger":return bt(n);default:return String(n)}}function Y({header:e}){const r=e.column.columnDef.header;return typeof r=="string"||!r?M(e.column):typeof r=="function"?typeof r(e.getContext())=="string"?M(e.column):_(r,e.getContext()):_(r,e.getContext())}function Dt({className:e}){const{tanTable:r}=N(),n=(s,o,u="z-50")=>x("px-icon py-2 text-left body-sm font-medium whitespace-nowrap",s&&`bg-elevation-1 sticky right-0 ${u} text-center justify-center`,o);return c(ot,{className:x("table-auto",e),children:[t(it,{className:"sticky top-0 z-10",children:r.getHeaderGroups().map(s=>t(Q,{children:s.headers.map(o=>c(st,{scope:"col",colSpan:o.colSpan,className:n(o.id===w,"bg-elevation-1"),children:[!o.column.getCanSort()&&!o.isPlaceholder&&t("div",{className:x("w-full py-1 inline-flex items-center gap-1 body-sm",o.id===w?"justify-center":"justify-start"),children:t(Y,{header:o})}),o.column.getCanSort()&&c(C,{variant:"ghost",className:x("w-full p-1",o.id===w?"justify-center":"justify-start"),onPress:o.column.getToggleSortingHandler(),children:[t("span",{children:t(Y,{header:o})}),t(re,{direction:o.column.getIsSorted()})]})]},o.id))},s.id))}),t(lt,{children:r.getRowModel().rows.map(s=>t(Q,{className:x("transition-colors data-[selected=true]:bg-primary/10 hover:bg-muted-foreground/20"),"data-selected":s.getIsSelected(),children:s.getVisibleCells().map(o=>{const u=o.column.id===w,l=o.column.columnDef.meta?.displayType?At(o):_(o.column.columnDef.cell,o.getContext());return t(ct,{className:x(n(u,void 0,"z-1"),u&&"flex justify-center items-center"),children:l},o.id)})},s.id))})]})}function Z(e){return e.resourceType==="none"}function ae(e){return e.resourceType==="single"}function J(e){return e.resourceType==="multiple"}function Ft({items:e,isFetching:r}){const{openDialog:n,closeDialog:s}=ee(),{tanTable:o}=N();function u(a,d){return a.isDisabled?Z(a)?a.isDisabled():J(a)?a.isDisabled(d):!1:!1}const l=o.getSelectedRowModel().rows.map(a=>a.original);return t(T,{children:e.map((a,d)=>{const S=a.icon,m=u(a,l)||r;return c(C,{"aria-label":a.label,type:"button",isDisabled:m,className:"animate-in fade-in slide-in-from-left-15 duration-300 transition-transform",onPress:y=>{const p={event:y,openDialog:n,closeDialog:s};Z(a)?a.onPress(p):J(a)&&a.onPress({...p,data:l})},variant:a.variant??"neutral",children:[S&&t(S,{"aria-hidden":!0}),t("span",{children:a.label})]},`${a.label}-${d}`)})})}function Pt({label:e,items:r,data:n}){const{openDialog:s,closeDialog:o}=ee();return t(R,{"aria-label":"Actions",label:e,size:"icon",children:r.map((u,l)=>{const a=u.icon,d=typeof u.label=="function"?u.label(n):u.label;return c(F,{id:typeof d=="string"?d:void 0,isDisabled:u.isDisabled?.(n)??!1,onAction:()=>{const S={openDialog:s,closeDialog:o};ae(u)&&u.onPress({...S,data:n})},children:[t(a,{className:"size-icon"}),d]},`${l}-${typeof d=="string"?d:""}`)})})}const Ln=["eq","ne","cn","nc","sw","ew","in","nin","gt","gte","lt","lte"],Rt={eq:"equal to",ne:"not equal to",cn:"contains",nc:"does not contain",sw:"starts with",ew:"ends with",in:"includes",nin:"does not include",gt:"greater than",gte:"greater than or equal to",lt:"less than",lte:"less than or equal to"};function zt(e,r){const n=`${r}-${Date.now()}`,s=oe[e][0];switch(e){case"bool":return{id:n,type:e,property:r,operator:s,value:!0};case"string":return{id:n,type:e,property:r,operator:s,value:""};case"date":return{id:n,type:e,property:r,operator:s,value:new Date().toISOString()};case"id":return{id:n,type:e,property:r,operator:s,value:""};case"id-search":return{id:n,type:e,property:r,operator:s,value:[]};case"enum":return{id:n,type:e,property:r,operator:s,value:new Set};case"number":return{id:n,type:e,property:r,operator:s,value:0}}}const oe={bool:["eq"],enum:["in","nin"],id:["in","nin"],"id-search":["in","nin"],string:["eq","ne","cn","nc","sw","ew","in","nin"],date:["lt","gt"],number:["eq","ne","gt","gte","lt","lte"]};function Ot({className:e,...r}){const{filters:n,query:s,setFilters:o,filterConfig:u,pathParameters:l}=N(),a=fe(null),d=$(),m=Me({defaultValues:{filters:n},onSubmit:({value:p})=>{o(p.filters)}}),y=Object.keys(u).sort();return t("section",{...r,className:x("flex gap-icon items-center",e),children:c(Le,{onOpenChange:p=>{p?a.current?.focus():m.handleSubmit()},children:[c("div",{className:"relative",children:[n.length>0&&t("div",{className:"size-2 rounded-full absolute bg-primary/90 z-20 top-0 right-0 translate-x-0.5 -translate-y-0.5"}),t(C,{"aria-label":"Filter",isDisabled:s.isPending||y.length===0,type:"button",size:"icon",variant:"neutral",children:t(Ye,{})})]}),t(_e,{className:"w-full p-icon",children:t("form",{onSubmit:p=>{p.preventDefault()},className:"flex flex-col gap-icon max-h-table overflow-auto ",children:t(m.Field,{mode:"array",name:"filters",children:p=>c(T,{children:[p.state.value.map((g,h)=>c("div",{className:"flex gap-icon items-center justify-normal",children:[t("span",{className:"body-sm",children:d(g.property)}),t(m.AppField,{name:`filters[${h}].operator`,children:f=>t(f.TfSingleSelect,{items:oe[g.type].map(b=>({id:b,label:t(T,{children:Rt[b]})}))})},g.id),g.type==="bool"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>t(f.TfCheckbox,{autoFocus:!0})}),g.type==="date"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>t(Oe,{autoFocus:!0})}),g.type==="id"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>t(f.TfTextField,{autoFocus:!0})}),g.type==="string"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>t(f.TfTextField,{autoFocus:!0})}),g.type==="number"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>t(f.TfNumberField,{autoFocus:!0})}),g.type==="enum"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>{const b=u[g.property];return b.type!=="enum"?null:t(f.TfMultiSelect,{items:b.options})}}),g.type==="id-search"&&t(m.AppField,{name:`filters[${h}].value`,children:f=>{const b=u[g.property];if(b.type!=="id-search")return null;const z=l?{path:l,query:{}}:void 0;return t(nt,{path:b.path,accessor:b.accessor,defaultParams:z})}}),t(C,{type:"button",variant:"neutral",size:"icon",onPress:()=>p.removeValue(h),children:t(U,{})})]},g.id)),c("div",{className:"flex w-full items-center justify-end gap-2 not-first:mt-icon",children:[t(R,{label:"Add filter",autoFocus:!0,children:y.sort().map(g=>{const h=u[g].type,f=Lt[h];return c(F,{className:"!justify-between",onAction:()=>{const b=zt(h,g);p.pushValue(b)},children:[d(g),t(f,{})]},g)})}),p.state.value.length>0?c(C,{type:"button",variant:"neutral",onPress:()=>{p.setValue([])},children:[t(U,{}),"Reset"]}):null]})]})})})})]})})}const Lt={"id-search":tt,bool:K,date:et,enum:We,id:Je,number:Ze,string:K};export{Rt as C,Ot as D,On as DataTable,ne as DataTableContext,zn as DataTableProvider,Ln as F,Pn as getColumnHelper,N as useDataTable,Rn as useDataTableState};
2
2
  //# sourceMappingURL=data-table.js.map
@@ -1,2 +1,2 @@
1
- "use client";import{jsxs as o,jsx as e}from"react/jsx-runtime";import{DatePicker as D,composeRenderProps as c,DateRangePicker as b,Popover as v,Dialog as N}from"react-aria-components";import{parseAbsolute as P,getLocalTimeZone as k}from"@internationalized/date";import{Button as u}from"./button.js";import{Calendar as C,RangeCalendar as R}from"./calendar.js";import{DateInput as m}from"./datefield.js";import{getFieldErrorMessage as d}from"../utilities/form.js";import{useFieldContext as F}from"../utilities/form-context.js";import{classNames as n}from"../utilities/theme.js";import{FormField as f,FieldGroup as g}from"./form.js";import{IcDate as p}from"./icons.js";import"class-variance-authority";import"./loader.js";import"react";import"@tanstack/react-form";import"clsx";const h=({className:a,popoverClassName:r,...i})=>e(v,{className:c(r,t=>n("w-auto p-3 bg-elevation-2 border",t)),children:e(N,{className:n("flex w-full flex-col gap-y-2 outline-none sm:flex-row sm:gap-x-icon sm:gap-y-0",a),...i})});function I({label:a,description:r,errorMessage:i,requiredIndicator:t,className:l,...s}){return o(D,{className:c(l,x=>n("group flex flex-col gap-2",x)),...s,children:[e(f,{label:a,description:r,errorMessage:i,requiredIndicator:t,children:o(g,{children:[e(m,{className:"flex-1",variant:"ghost"}),e(u,{variant:"ghost",size:"icon",className:"-me-2 ms-2",children:e(p,{"aria-hidden":!0})})]})}),e(h,{children:e(C,{})})]})}function J({...a}){const r=F({disabled:a.isDisabled});return e(I,{requiredIndicator:r.isRequired,hideTimeZone:!0,isDisabled:a.isDisabled||r.isSubmitting,value:r.state.value?P(r.state.value,k()):null,onChange:i=>i?r.handleChange(i.toAbsoluteString()):r.handleChange(null),onBlur:r.handleBlur,isInvalid:!!d(r),errorMessage:d(r),...a})}function K({label:a,description:r,errorMessage:i,className:t,...l}){return o(b,{className:c(t,s=>n("group flex flex-col gap-2",s)),...l,children:[e(f,{label:a,errorMessage:i,description:r,children:o(g,{children:[e(m,{variant:"ghost",slot:"start"}),e("span",{"aria-hidden":!0,className:"px-2 body-sm text-muted-foreground",children:"-"}),e(m,{className:"flex-1",variant:"ghost",slot:"end"}),e(u,{variant:"ghost",size:"icon",className:"mr-1 data-[focus-visible]:ring-offset-0",children:e(p,{"aria-hidden":!0})})]})}),e(h,{children:e(R,{})})]})}export{I as DatePicker,K as DateRangePicker,J as TfDatePicker};
1
+ "use client";import{jsxs as o,jsx as e}from"react/jsx-runtime";import{DatePicker as D,composeRenderProps as c,DateRangePicker as b,Popover as v,Dialog as N}from"react-aria-components";import{parseAbsolute as P,getLocalTimeZone as k}from"@internationalized/date";import{Button as u}from"./button.js";import{Calendar as C,RangeCalendar as R}from"./calendar.js";import{DateInput as m}from"./datefield.js";import{getFieldErrorMessage as d}from"../utilities/form.js";import{useFieldContext as F}from"../utilities/form-context.js";import{classNames as n}from"../utilities/theme.js";import{FormField as f,FieldGroup as g}from"./form.js";import{IcDate as p}from"./icons.js";import"class-variance-authority";import"./loader.js";import"clsx";import"react";import"@tanstack/react-form";const h=({className:a,popoverClassName:r,...i})=>e(v,{className:c(r,t=>n("w-auto p-3 bg-elevation-2 border",t)),children:e(N,{className:n("flex w-full flex-col gap-y-2 outline-none sm:flex-row sm:gap-x-icon sm:gap-y-0",a),...i})});function I({label:a,description:r,errorMessage:i,requiredIndicator:t,className:l,...s}){return o(D,{className:c(l,x=>n("group flex flex-col gap-2",x)),...s,children:[e(f,{label:a,description:r,errorMessage:i,requiredIndicator:t,children:o(g,{children:[e(m,{className:"flex-1",variant:"ghost"}),e(u,{variant:"ghost",size:"icon",className:"-me-2 ms-2",children:e(p,{"aria-hidden":!0})})]})}),e(h,{children:e(C,{})})]})}function J({...a}){const r=F({disabled:a.isDisabled});return e(I,{requiredIndicator:r.isRequired,hideTimeZone:!0,isDisabled:a.isDisabled||r.isSubmitting,value:r.state.value?P(r.state.value,k()):null,onChange:i=>i?r.handleChange(i.toAbsoluteString()):r.handleChange(null),onBlur:r.handleBlur,isInvalid:!!d(r),errorMessage:d(r),...a})}function K({label:a,description:r,errorMessage:i,className:t,...l}){return o(b,{className:c(t,s=>n("group flex flex-col gap-2",s)),...l,children:[e(f,{label:a,errorMessage:i,description:r,children:o(g,{children:[e(m,{variant:"ghost",slot:"start"}),e("span",{"aria-hidden":!0,className:"px-2 body-sm text-muted-foreground",children:"-"}),e(m,{className:"flex-1",variant:"ghost",slot:"end"}),e(u,{variant:"ghost",size:"icon",className:"mr-1 data-[focus-visible]:ring-offset-0",children:e(p,{"aria-hidden":!0})})]})}),e(h,{children:e(R,{})})]})}export{I as DatePicker,K as DateRangePicker,J as TfDatePicker};
2
2
  //# sourceMappingURL=date-picker.js.map
@@ -27,7 +27,7 @@ declare const sheetVariants: (props?: ({
27
27
  * ```
28
28
  */
29
29
  export declare const DialogTrigger: typeof AriaDialogTrigger;
30
- export declare const DialogOverlay: ({ className, isDismissable, ...props }: AriaModalOverlayProps) => import("react/jsx-runtime").JSX.Element;
30
+ export declare const DialogOverlay: ({ className, isDismissable, ...props }: AriaModalOverlayProps) => import("react/jsx-runtime").JSX.Element | null;
31
31
  /** Props for {@link DialogContent}. */
32
32
  export interface DialogContentProps extends Omit<React.ComponentProps<typeof AriaModal>, 'children'>, VariantProps<typeof sheetVariants> {
33
33
  /**
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as i,jsxs as g,Fragment as f}from"react/jsx-runtime";import{cva as x}from"class-variance-authority";import{createContext as p,useState as c,useContext as h}from"react";import{DialogTrigger as b,ModalOverlay as D,composeRenderProps as m,Modal as v,Dialog as C,Heading as w}from"react-aria-components";import{Button as N}from"./button.js";import{classNames as a}from"../utilities/theme.js";import{IcClose as y}from"./icons.js";import"./loader.js";import"clsx";const z=x(["fixed z-50 gap-icon bg-elevation-1 transition ease-in-out","data-[entering]:duration-200 data-[entering]:animate-in data-[entering]:fade-in-0 data-[exiting]:duration-200 data-[exiting]:animate-out data-[exiting]:fade-out-0"],{variants:{side:{top:"inset-x-0 top-0 border-b data-[entering]:slide-in-from-top data-[exiting]:slide-out-to-top max-h-table",bottom:"inset-x-0 bottom-0 border-t data-[entering]:slide-in-from-bottom data-[exiting]:slide-out-to-bottom max-h-table",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[entering]:slide-in-from-left data-[exiting]:slide-out-to-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[entering]:slide-in-from-right data-[exiting]:slide-out-to-right sm:max-w-sm"}}}),O=b,P=({className:t,isDismissable:e=!0,...n})=>i(D,{isDismissable:e,className:m(t,o=>a("fixed inset-0 z-50 bg-background/80","data-[exiting]:duration-100 data-[exiting]:animate-out","data-[entering]:animate-in",o)),...n});function T({className:t,children:e,side:n,role:o,closeButton:l=!0,...s}){return i(v,{className:m(t,r=>a(n?z({side:n,className:"h-full p-6"}):["fixed left-[50vw] top-1/2 z-50 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 border bg-elevation-1 p-icon duration-100 data-[exiting]:duration-100 data-[entering]:animate-in data-[exiting]:animate-out data-[entering]:fade-in-0 data-[exiting]:fade-out-0 data-[entering]:zoom-in-95 data-[exiting]:zoom-out-95 md:w-full"],r)),...s,children:i(C,{role:o,className:a(!n&&"grid h-full gap-icon relative","h-full outline-none"),children:m(e,(r,d)=>g(f,{children:[r,l&&i("div",{className:"absolute right-2 top-1",children:g(N,{size:"icon",variant:"neutral",onPress:d.close,className:"rounded-full",children:[i(y,{}),i("span",{className:"sr-only",children:"Close"})]})})]}))})})}function S({className:t,...e}){return i("div",{className:a("flex flex-col gap-y-2 text-center sm:text-left",t),...e})}function V({className:t,...e}){return i("div",{className:a("flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-x-2",t),...e})}function $({className:t,...e}){return i(w,{slot:"title",className:a("heading-3 font-semibold leading-none tracking-tight",t),...e})}function q({className:t,...e}){return i("p",{className:a("flex flex-col gap-y-1 text-center sm:text-left",t),...e})}const u=p(null);function A({children:t}){const[e,n]=c(!1),[o,l]=c(null),s=d=>{l(d),n(!0)},r=()=>{n(!1)};return g(u.Provider,{value:{openDialog:s,closeDialog:r,isOpen:e},children:[t,i(O,{isOpen:e,onOpenChange:n,children:i(P,{isDismissable:!0,children:i(T,{children:o})})})]})}function G(){const t=h(u);if(!t)throw new Error("useControlledDialog must be used within ControlledDialogProvider");return t}export{A as ControlledDialogProvider,T as DialogContent,q as DialogDescription,V as DialogFooter,S as DialogHeader,P as DialogOverlay,$ as DialogTitle,O as DialogTrigger,G as useControlledDialog};
1
+ "use client";import{jsx as n,jsxs as g,Fragment as x}from"react/jsx-runtime";import{cva as p}from"class-variance-authority";import{createContext as h,useContext as c,useState as u}from"react";import{DialogTrigger as b,OverlayTriggerStateContext as D,ModalOverlay as v,composeRenderProps as m,Modal as C,Dialog as w,Heading as N}from"react-aria-components";import{Button as y}from"./button.js";import{classNames as a}from"../utilities/theme.js";import{IcClose as O}from"./icons.js";import"./loader.js";import"clsx";const z=p(["fixed z-50 gap-icon bg-elevation-1 transition ease-in-out","data-[entering]:duration-200 data-[entering]:animate-in data-[entering]:fade-in-0 data-[exiting]:duration-200 data-[exiting]:animate-out data-[exiting]:fade-out-0"],{variants:{side:{top:"inset-x-0 top-0 border-b data-[entering]:slide-in-from-top data-[exiting]:slide-out-to-top max-h-table",bottom:"inset-x-0 bottom-0 border-t data-[entering]:slide-in-from-bottom data-[exiting]:slide-out-to-bottom max-h-table",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[entering]:slide-in-from-left data-[exiting]:slide-out-to-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[entering]:slide-in-from-right data-[exiting]:slide-out-to-right sm:max-w-sm"}}}),P=b,T=({className:t,isDismissable:e=!0,...i})=>c(D)?.isOpen?n(v,{isDismissable:e,className:m(t,o=>a("fixed inset-0 z-50 bg-background/80","data-[exiting]:duration-100 data-[exiting]:animate-out","data-[entering]:animate-in",o)),...i}):null;function j({className:t,children:e,side:i,role:l,closeButton:o=!0,...s}){return n(C,{className:m(t,r=>a(i?z({side:i,className:"h-full p-6"}):["fixed left-[50vw] top-1/2 z-50 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 border bg-elevation-1 p-icon duration-100 data-[exiting]:duration-100 data-[entering]:animate-in data-[exiting]:animate-out data-[entering]:fade-in-0 data-[exiting]:fade-out-0 data-[entering]:zoom-in-95 data-[exiting]:zoom-out-95 md:w-full"],r)),...s,children:n(w,{role:l,className:a(!i&&"grid h-full gap-icon relative","h-full outline-none"),children:m(e,(r,d)=>g(x,{children:[r,o&&n("div",{className:"absolute right-2 top-1",children:g(y,{size:"icon",variant:"neutral",onPress:d.close,className:"rounded-full",children:[n(O,{}),n("span",{className:"sr-only",children:"Close"})]})})]}))})})}function V({className:t,...e}){return n("div",{className:a("flex flex-col gap-y-2 text-center sm:text-left",t),...e})}function $({className:t,...e}){return n("div",{className:a("flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-x-2",t),...e})}function q({className:t,...e}){return n(N,{slot:"title",className:a("heading-3 font-semibold leading-none tracking-tight",t),...e})}function A({className:t,...e}){return n("p",{className:a("flex flex-col gap-y-1 text-center sm:text-left",t),...e})}const f=h(null);function G({children:t}){const[e,i]=u(!1),[l,o]=u(null),s=d=>{o(d),i(!0)},r=()=>{i(!1)};return g(f.Provider,{value:{openDialog:s,closeDialog:r,isOpen:e},children:[t,n(P,{isOpen:e,onOpenChange:i,children:n(T,{isDismissable:!0,children:n(j,{children:l})})})]})}function J(){const t=c(f);if(!t)throw new Error("useControlledDialog must be used within ControlledDialogProvider");return t}export{G as ControlledDialogProvider,j as DialogContent,A as DialogDescription,$ as DialogFooter,V as DialogHeader,T as DialogOverlay,q as DialogTitle,P as DialogTrigger,J as useControlledDialog};
2
2
  //# sourceMappingURL=dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sources":["../../lib/components/dialog.tsx"],"sourcesContent":["'use client';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type { ReactNode } from 'react';\nimport { createContext, useContext, useState } from 'react';\nimport {\n Dialog as AriaDialog,\n DialogProps as AriaDialogProps,\n DialogTrigger as AriaDialogTrigger,\n Heading as AriaHeading,\n HeadingProps as AriaHeadingProps,\n Modal as AriaModal,\n ModalOverlay as AriaModalOverlay,\n ModalOverlayProps as AriaModalOverlayProps,\n composeRenderProps,\n} from 'react-aria-components';\n\nimport { Button } from '../components/button';\nimport { classNames } from '../utilities/theme';\nimport { IcClose } from './icons';\n\n/**\n * Visual variants for the sheet-style dialog (slide in from an edge).\n *\n * @remarks\n * Internally used to style `<DialogContent side=\"...\">`.\n */\nconst sheetVariants = cva(\n [\n 'fixed z-50 gap-icon bg-elevation-1 transition ease-in-out',\n 'data-[entering]:duration-200 data-[entering]:animate-in data-[entering]:fade-in-0 data-[exiting]:duration-200 data-[exiting]:animate-out data-[exiting]:fade-out-0',\n ],\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[entering]:slide-in-from-top data-[exiting]:slide-out-to-top max-h-table',\n bottom: 'inset-x-0 bottom-0 border-t data-[entering]:slide-in-from-bottom data-[exiting]:slide-out-to-bottom max-h-table',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[entering]:slide-in-from-left data-[exiting]:slide-out-to-left sm:max-w-sm',\n right: 'inset-y-0 right-0 h-full w-3/4 border-l data-[entering]:slide-in-from-right data-[exiting]:slide-out-to-right sm:max-w-sm',\n },\n },\n }\n);\n\n/**\n * Opens the dialog when interacted with (click/press).\n *\n * @remarks\n * Compose this around any control that should open the dialog.\n *\n * @example\n * ```tsx\n * <DialogTrigger>\n * <Button>Open</Button>\n * <DialogOverlay>\n * <DialogContent>...</DialogContent>\n * </DialogOverlay>\n * </DialogTrigger>\n * ```\n */\nexport const DialogTrigger = AriaDialogTrigger;\n\nexport const DialogOverlay = ({ className, isDismissable = true, ...props }: AriaModalOverlayProps) => (\n <AriaModalOverlay\n isDismissable={isDismissable}\n className={composeRenderProps(className, className =>\n classNames(\n 'fixed inset-0 z-50 bg-background/80',\n /* Exiting */\n 'data-[exiting]:duration-100 data-[exiting]:animate-out',\n /* Entering */\n 'data-[entering]:animate-in',\n className\n )\n )}\n {...props}\n />\n);\n\n/** Props for {@link DialogContent}. */\nexport interface DialogContentProps\n extends Omit<React.ComponentProps<typeof AriaModal>, 'children'>,\n VariantProps<typeof sheetVariants> {\n /**\n * Render function or nodes for the dialog panel contents.\n */\n children?: AriaDialogProps['children'];\n\n /**\n * ARIA role of the dialog.\n *\n * Use `\"alertdialog\"` for destructive/confirmation flows that require\n * explicit acknowledgement.\n * @defaultValue \"dialog\"\n */\n role?: AriaDialogProps['role'];\n\n /**\n * Show a built-in close button in the top-right corner.\n * @defaultValue true\n */\n closeButton?: boolean;\n}\n\n/**\n * Dialog panel container. Renders either a centered modal or a sheet\n * from an edge when `side` is provided.\n *\n * @example Basic\n * ```tsx\n * <DialogTrigger>\n * <Button>Open</Button>\n * <DialogOverlay>\n * <DialogContent>\n * <DialogHeader>\n * <DialogTitle>Sign up</DialogTitle>\n * </DialogHeader>\n * ...\n * </DialogContent>\n * </DialogOverlay>\n * </DialogTrigger>\n * ```\n */\nexport function DialogContent({ className, children, side, role, closeButton = true, ...props }: DialogContentProps) {\n return (\n <AriaModal\n className={composeRenderProps(className, className =>\n classNames(\n side\n ? sheetVariants({ side, className: 'h-full p-6' })\n : [\n 'fixed left-[50vw] top-1/2 z-50 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 border bg-elevation-1 p-icon duration-100 data-[exiting]:duration-100 data-[entering]:animate-in data-[exiting]:animate-out data-[entering]:fade-in-0 data-[exiting]:fade-out-0 data-[entering]:zoom-in-95 data-[exiting]:zoom-out-95 md:w-full',\n ],\n className\n )\n )}\n {...props}\n >\n <AriaDialog\n role={role}\n className={classNames(!side && 'grid h-full gap-icon relative', 'h-full outline-none')}\n >\n {composeRenderProps(children, (children, renderProps) => (\n <>\n {children}\n {closeButton && (\n <div className=\"absolute right-2 top-1\">\n <Button\n size={'icon'}\n variant={'neutral'}\n onPress={renderProps.close}\n className=\"rounded-full\"\n >\n <IcClose />\n <span className=\"sr-only\">Close</span>\n </Button>\n </div>\n )}\n </>\n ))}\n </AriaDialog>\n </AriaModal>\n );\n}\n\n/**\n * Header region for the dialog panel.\n *\n * @example\n * ```tsx\n * <DialogHeader>\n * <DialogTitle>Settings</DialogTitle>\n * </DialogHeader>\n * ```\n */\nexport function DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={classNames('flex flex-col gap-y-2 text-center sm:text-left', className)} {...props} />;\n}\n\n/**\n * Footer region that aligns action buttons.\n *\n * @example\n * ```tsx\n * <DialogFooter>\n * <Button variant=\"outline\">Cancel</Button>\n * <Button>Save</Button>\n * </DialogFooter>\n * ```\n */\nexport function DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={classNames('flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-x-2', className)}\n {...props}\n />\n );\n}\n\n/**\n * Heading element mapped to the dialog title (announced by screen readers).\n *\n * @remarks\n * Sets `slot=\"title\"` so RAC wires it to the dialog.\n */\nexport function DialogTitle({ className, ...props }: AriaHeadingProps) {\n return (\n <AriaHeading\n slot=\"title\"\n className={classNames('heading-3 font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n );\n}\n\n/**\n * Short explanatory text under the title.\n *\n * @example\n * ```tsx\n * <DialogDescription>\n * This action cannot be undone.\n * </DialogDescription>\n * ```\n */\nexport function DialogDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\n return <p className={classNames('flex flex-col gap-y-1 text-center sm:text-left', className)} {...props} />;\n}\n\n/**\n * Context type for controlled dialog state and actions.\n */\ntype ControlledDialogContextType = {\n /** Opens the dialog with the provided content */\n openDialog: (content: ReactNode) => void;\n /** Closes the dialog */\n closeDialog: () => void;\n /** Whether the dialog is currently open */\n isOpen: boolean;\n};\n\nconst ControlledDialogContext = createContext<ControlledDialogContextType | null>(null);\n\n/**\n * Provider that manages a scoped dialog controlled via hooks.\n *\n * @example\n * ```tsx\n * <ControlledDialogProvider>\n * <MyComponent />\n * </ControlledDialogProvider>\n *\n * // Inside MyComponent:\n * function MyComponent() {\n * const { openDialog } = useControlledDialog();\n * return (\n * <Button onPress={() => openDialog(<div>Dialog content</div>)}>\n * Open Dialog\n * </Button>\n * );\n * }\n * ```\n */\nexport function ControlledDialogProvider({ children }: { children: ReactNode }) {\n const [isOpen, setIsOpen] = useState(false);\n const [content, setContent] = useState<ReactNode>(null);\n\n const openDialog = (dialogContent: ReactNode) => {\n setContent(dialogContent);\n setIsOpen(true);\n };\n\n const closeDialog = () => {\n setIsOpen(false);\n };\n\n return (\n <ControlledDialogContext.Provider value={{ openDialog, closeDialog, isOpen }}>\n {children}\n <DialogTrigger isOpen={isOpen} onOpenChange={setIsOpen}>\n <DialogOverlay isDismissable>\n <DialogContent>{content}</DialogContent>\n </DialogOverlay>\n </DialogTrigger>\n </ControlledDialogContext.Provider>\n );\n}\n\n/**\n * Hook to access the controlled dialog from within a ControlledDialogProvider.\n *\n * @throws Error if used outside of ControlledDialogProvider\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { openDialog, closeDialog, isOpen } = useControlledDialog();\n *\n * return (\n * <Button onPress={() => openDialog(\n * <DialogHeader>\n * <DialogTitle>Confirm</DialogTitle>\n * </DialogHeader>\n * )}>\n * Open\n * </Button>\n * );\n * }\n * ```\n */\nexport function useControlledDialog() {\n const context = useContext(ControlledDialogContext);\n if (!context) {\n throw new Error('useControlledDialog must be used within ControlledDialogProvider');\n }\n return context;\n}\n"],"names":["sheetVariants","cva","DialogTrigger","AriaDialogTrigger","DialogOverlay","className","isDismissable","props","jsx","AriaModalOverlay","composeRenderProps","classNames","DialogContent","children","side","role","closeButton","AriaModal","AriaDialog","renderProps","jsxs","Fragment","Button","IcClose","DialogHeader","DialogFooter","DialogTitle","AriaHeading","DialogDescription","ControlledDialogContext","createContext","ControlledDialogProvider","isOpen","setIsOpen","useState","content","setContent","openDialog","dialogContent","closeDialog","useControlledDialog","context","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"dialog.js","sources":["../../lib/components/dialog.tsx"],"sourcesContent":["'use client';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport type { ReactNode } from 'react';\nimport { createContext, useContext, useState } from 'react';\nimport {\n Dialog as AriaDialog,\n DialogProps as AriaDialogProps,\n DialogTrigger as AriaDialogTrigger,\n Heading as AriaHeading,\n HeadingProps as AriaHeadingProps,\n Modal as AriaModal,\n ModalOverlay as AriaModalOverlay,\n ModalOverlayProps as AriaModalOverlayProps,\n composeRenderProps,\n OverlayTriggerStateContext,\n} from 'react-aria-components';\n\nimport { Button } from '../components/button';\nimport { classNames } from '../utilities/theme';\nimport { IcClose } from './icons';\n\n/**\n * Visual variants for the sheet-style dialog (slide in from an edge).\n *\n * @remarks\n * Internally used to style `<DialogContent side=\"...\">`.\n */\nconst sheetVariants = cva(\n [\n 'fixed z-50 gap-icon bg-elevation-1 transition ease-in-out',\n 'data-[entering]:duration-200 data-[entering]:animate-in data-[entering]:fade-in-0 data-[exiting]:duration-200 data-[exiting]:animate-out data-[exiting]:fade-out-0',\n ],\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[entering]:slide-in-from-top data-[exiting]:slide-out-to-top max-h-table',\n bottom: 'inset-x-0 bottom-0 border-t data-[entering]:slide-in-from-bottom data-[exiting]:slide-out-to-bottom max-h-table',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[entering]:slide-in-from-left data-[exiting]:slide-out-to-left sm:max-w-sm',\n right: 'inset-y-0 right-0 h-full w-3/4 border-l data-[entering]:slide-in-from-right data-[exiting]:slide-out-to-right sm:max-w-sm',\n },\n },\n }\n);\n\n/**\n * Opens the dialog when interacted with (click/press).\n *\n * @remarks\n * Compose this around any control that should open the dialog.\n *\n * @example\n * ```tsx\n * <DialogTrigger>\n * <Button>Open</Button>\n * <DialogOverlay>\n * <DialogContent>...</DialogContent>\n * </DialogOverlay>\n * </DialogTrigger>\n * ```\n */\nexport const DialogTrigger = AriaDialogTrigger;\n\nexport const DialogOverlay = ({ className, isDismissable = true, ...props }: AriaModalOverlayProps) => {\n // TODO: Remove once https://github.com/adobe/react-spectrum/pull/9772 is released\n const state = useContext(OverlayTriggerStateContext);\n if (!state?.isOpen) return null;\n\n return (\n <AriaModalOverlay\n isDismissable={isDismissable}\n className={composeRenderProps(className, className =>\n classNames(\n 'fixed inset-0 z-50 bg-background/80',\n /* Exiting */\n 'data-[exiting]:duration-100 data-[exiting]:animate-out',\n /* Entering */\n 'data-[entering]:animate-in',\n className\n )\n )}\n {...props}\n />\n );\n};\n\n/** Props for {@link DialogContent}. */\nexport interface DialogContentProps\n extends Omit<React.ComponentProps<typeof AriaModal>, 'children'>,\n VariantProps<typeof sheetVariants> {\n /**\n * Render function or nodes for the dialog panel contents.\n */\n children?: AriaDialogProps['children'];\n\n /**\n * ARIA role of the dialog.\n *\n * Use `\"alertdialog\"` for destructive/confirmation flows that require\n * explicit acknowledgement.\n * @defaultValue \"dialog\"\n */\n role?: AriaDialogProps['role'];\n\n /**\n * Show a built-in close button in the top-right corner.\n * @defaultValue true\n */\n closeButton?: boolean;\n}\n\n/**\n * Dialog panel container. Renders either a centered modal or a sheet\n * from an edge when `side` is provided.\n *\n * @example Basic\n * ```tsx\n * <DialogTrigger>\n * <Button>Open</Button>\n * <DialogOverlay>\n * <DialogContent>\n * <DialogHeader>\n * <DialogTitle>Sign up</DialogTitle>\n * </DialogHeader>\n * ...\n * </DialogContent>\n * </DialogOverlay>\n * </DialogTrigger>\n * ```\n */\nexport function DialogContent({ className, children, side, role, closeButton = true, ...props }: DialogContentProps) {\n return (\n <AriaModal\n className={composeRenderProps(className, className =>\n classNames(\n side\n ? sheetVariants({ side, className: 'h-full p-6' })\n : [\n 'fixed left-[50vw] top-1/2 z-50 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 border bg-elevation-1 p-icon duration-100 data-[exiting]:duration-100 data-[entering]:animate-in data-[exiting]:animate-out data-[entering]:fade-in-0 data-[exiting]:fade-out-0 data-[entering]:zoom-in-95 data-[exiting]:zoom-out-95 md:w-full',\n ],\n className\n )\n )}\n {...props}\n >\n <AriaDialog\n role={role}\n className={classNames(!side && 'grid h-full gap-icon relative', 'h-full outline-none')}\n >\n {composeRenderProps(children, (children, renderProps) => (\n <>\n {children}\n {closeButton && (\n <div className=\"absolute right-2 top-1\">\n <Button\n size={'icon'}\n variant={'neutral'}\n onPress={renderProps.close}\n className=\"rounded-full\"\n >\n <IcClose />\n <span className=\"sr-only\">Close</span>\n </Button>\n </div>\n )}\n </>\n ))}\n </AriaDialog>\n </AriaModal>\n );\n}\n\n/**\n * Header region for the dialog panel.\n *\n * @example\n * ```tsx\n * <DialogHeader>\n * <DialogTitle>Settings</DialogTitle>\n * </DialogHeader>\n * ```\n */\nexport function DialogHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={classNames('flex flex-col gap-y-2 text-center sm:text-left', className)} {...props} />;\n}\n\n/**\n * Footer region that aligns action buttons.\n *\n * @example\n * ```tsx\n * <DialogFooter>\n * <Button variant=\"outline\">Cancel</Button>\n * <Button>Save</Button>\n * </DialogFooter>\n * ```\n */\nexport function DialogFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={classNames('flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-x-2', className)}\n {...props}\n />\n );\n}\n\n/**\n * Heading element mapped to the dialog title (announced by screen readers).\n *\n * @remarks\n * Sets `slot=\"title\"` so RAC wires it to the dialog.\n */\nexport function DialogTitle({ className, ...props }: AriaHeadingProps) {\n return (\n <AriaHeading\n slot=\"title\"\n className={classNames('heading-3 font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n );\n}\n\n/**\n * Short explanatory text under the title.\n *\n * @example\n * ```tsx\n * <DialogDescription>\n * This action cannot be undone.\n * </DialogDescription>\n * ```\n */\nexport function DialogDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\n return <p className={classNames('flex flex-col gap-y-1 text-center sm:text-left', className)} {...props} />;\n}\n\n/**\n * Context type for controlled dialog state and actions.\n */\ntype ControlledDialogContextType = {\n /** Opens the dialog with the provided content */\n openDialog: (content: ReactNode) => void;\n /** Closes the dialog */\n closeDialog: () => void;\n /** Whether the dialog is currently open */\n isOpen: boolean;\n};\n\nconst ControlledDialogContext = createContext<ControlledDialogContextType | null>(null);\n\n/**\n * Provider that manages a scoped dialog controlled via hooks.\n *\n * @example\n * ```tsx\n * <ControlledDialogProvider>\n * <MyComponent />\n * </ControlledDialogProvider>\n *\n * // Inside MyComponent:\n * function MyComponent() {\n * const { openDialog } = useControlledDialog();\n * return (\n * <Button onPress={() => openDialog(<div>Dialog content</div>)}>\n * Open Dialog\n * </Button>\n * );\n * }\n * ```\n */\nexport function ControlledDialogProvider({ children }: { children: ReactNode }) {\n const [isOpen, setIsOpen] = useState(false);\n const [content, setContent] = useState<ReactNode>(null);\n\n const openDialog = (dialogContent: ReactNode) => {\n setContent(dialogContent);\n setIsOpen(true);\n };\n\n const closeDialog = () => {\n setIsOpen(false);\n };\n\n return (\n <ControlledDialogContext.Provider value={{ openDialog, closeDialog, isOpen }}>\n {children}\n <DialogTrigger isOpen={isOpen} onOpenChange={setIsOpen}>\n <DialogOverlay isDismissable>\n <DialogContent>{content}</DialogContent>\n </DialogOverlay>\n </DialogTrigger>\n </ControlledDialogContext.Provider>\n );\n}\n\n/**\n * Hook to access the controlled dialog from within a ControlledDialogProvider.\n *\n * @throws Error if used outside of ControlledDialogProvider\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const { openDialog, closeDialog, isOpen } = useControlledDialog();\n *\n * return (\n * <Button onPress={() => openDialog(\n * <DialogHeader>\n * <DialogTitle>Confirm</DialogTitle>\n * </DialogHeader>\n * )}>\n * Open\n * </Button>\n * );\n * }\n * ```\n */\nexport function useControlledDialog() {\n const context = useContext(ControlledDialogContext);\n if (!context) {\n throw new Error('useControlledDialog must be used within ControlledDialogProvider');\n }\n return context;\n}\n"],"names":["sheetVariants","cva","DialogTrigger","AriaDialogTrigger","DialogOverlay","className","isDismissable","props","useContext","OverlayTriggerStateContext","jsx","AriaModalOverlay","composeRenderProps","classNames","DialogContent","children","side","role","closeButton","AriaModal","AriaDialog","renderProps","jsxs","Fragment","Button","IcClose","DialogHeader","DialogFooter","DialogTitle","AriaHeading","DialogDescription","ControlledDialogContext","createContext","ControlledDialogProvider","isOpen","setIsOpen","useState","content","setContent","openDialog","dialogContent","closeDialog","useControlledDialog","context"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { BundledLanguage } from 'shiki';
2
+ export interface HighlightOptions {
3
+ code: string;
4
+ lang: BundledLanguage;
5
+ }
6
+ export declare function highlightCode({ code, lang }: HighlightOptions): Promise<string>;
7
+ export type { BundledLanguage } from 'shiki';
@@ -0,0 +1,2 @@
1
+ import{transformerColorizedBrackets as o}from"@shikijs/colorized-brackets";import{codeToHtml as i}from"shiki";import{shikiTheme as p}from"./shiki.js";async function c({code:s,lang:t}){return i(s,{lang:t,theme:p,transformers:[{pre(r){const e=new Set(Array.isArray(r.properties?.className)?r.properties.className:[]);e.add("overflow-auto"),e.add("p-4"),r.properties={...r.properties,className:Array.from(e)},"style"in(r.properties??{})&&delete r.properties.style}},o()]})}export{c as highlightCode};
2
+ //# sourceMappingURL=highlight-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight-code.js","sources":["../../lib/utilities/highlight-code.ts"],"sourcesContent":["import { transformerColorizedBrackets } from '@shikijs/colorized-brackets';\nimport { codeToHtml, type BundledLanguage } from 'shiki';\nimport { shikiTheme } from './shiki';\n\nexport interface HighlightOptions {\n code: string;\n lang: BundledLanguage;\n}\n\nexport async function highlightCode({ code, lang }: HighlightOptions) {\n return codeToHtml(code, {\n lang,\n theme: shikiTheme,\n transformers: [\n {\n pre(node: any) {\n const classes = new Set<string>(\n Array.isArray(node.properties?.className) ? node.properties.className : []\n );\n classes.add('overflow-auto');\n classes.add('p-4');\n node.properties = {\n ...node.properties,\n className: Array.from(classes),\n };\n if ('style' in (node.properties ?? {})) {\n delete node.properties.style;\n }\n },\n },\n transformerColorizedBrackets(),\n ],\n });\n}\n\nexport type { BundledLanguage } from 'shiki';\n"],"names":["highlightCode","code","lang","codeToHtml","shikiTheme","node","classes","transformerColorizedBrackets"],"mappings":"sJASA,eAAsBA,EAAc,CAAE,KAAAC,EAAM,KAAAC,GAA0B,CAClE,OAAOC,EAAWF,EAAM,CACpB,KAAAC,EACA,MAAOE,EACP,aAAc,CACV,CACI,IAAIC,EAAW,CACX,MAAMC,EAAU,IAAI,IAChB,MAAM,QAAQD,EAAK,YAAY,SAAS,EAAIA,EAAK,WAAW,UAAY,CAAA,CAAC,EAE7EC,EAAQ,IAAI,eAAe,EAC3BA,EAAQ,IAAI,KAAK,EACjBD,EAAK,WAAa,CACd,GAAGA,EAAK,WACR,UAAW,MAAM,KAAKC,CAAO,CAAA,EAE7B,UAAYD,EAAK,YAAc,CAAA,IAC/B,OAAOA,EAAK,WAAW,KAE/B,CAAA,EAEJE,EAAA,CAA6B,CACjC,CACH,CACL"}
@@ -1,2 +1,2 @@
1
- const e={bg:"var(--color-elevation-2)",bgSubtle:"var(--color-elevation-1)",fg:"var(--color-foreground)",comment:"var(--color-muted-foreground)",keyword:"var(--color-primary-9)",importExport:"var(--color-primary-7)",operator:"var(--color-primary-6)",thisSuper:"var(--color-primary-8)",string:"var(--color-success-8)",stringTemplate:"var(--color-success-7)",regex:"var(--color-destructive-7)",constant:"var(--color-secondary-9)",function:"var(--color-primary-8)",typeClass:"var(--color-secondary-9)",typeAnnotation:"var(--color-secondary-7)",typeParam:"var(--color-secondary-6)",enumMember:"var(--color-secondary-8)",namespace:"var(--color-secondary-7)",decorator:"var(--color-secondary-9)",variable:"var(--color-foreground)",property:"var(--color-secondary-6)",punctuation:"var(--color-muted)",punctuationLight:"var(--color-muted-foreground)",tag:"var(--color-primary-8)",attribute:"var(--color-secondary-5)",cssProperty:"var(--color-primary-7)",cssValue:"var(--color-success-7)",cssVariable:"var(--color-secondary-6)",invalid:"var(--color-destructive-7)"},o={name:"shiki-theme",settings:[{settings:{background:e.bg,foreground:e.fg}},{scope:["comment","punctuation.definition.comment","string.comment"],settings:{foreground:e.comment,fontStyle:"italic"}},{scope:["keyword","keyword.control","keyword.control.flow","keyword.control.conditional","keyword.control.loop","keyword.operator.new","keyword.other","storage.type","storage.modifier"],settings:{foreground:e.keyword}},{scope:["keyword.control.import","keyword.control.export","keyword.control.from","keyword.control.as"],settings:{foreground:e.importExport}},{scope:["keyword.operator","keyword.operator.assignment","keyword.operator.comparison","keyword.operator.logical","keyword.operator.arrow","keyword.operator.ternary","keyword.operator.optional","keyword.operator.nullcoalescing","keyword.operator.spread"],settings:{foreground:e.operator}},{scope:["variable.language.this","variable.language.super","variable.language.self"],settings:{foreground:e.thisSuper,fontStyle:"italic"}},{scope:["string","string.quoted.single","string.quoted.double"],settings:{foreground:e.string}},{scope:["string.quoted.backtick","string.template"],settings:{foreground:e.stringTemplate}},{scope:["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","meta.template.expression"],settings:{foreground:e.importExport,background:e.bgSubtle}},{scope:["string.regexp","constant.regexp"],settings:{foreground:e.regex}},{scope:["constant.numeric","constant.language","constant.language.boolean","constant.character","constant.other"],settings:{foreground:e.constant}},{scope:["entity.name.function","support.function","meta.function-call entity.name.function"],settings:{foreground:e.function}},{scope:["entity.name.type","entity.name.type.interface","entity.name.type.alias","entity.name.class","support.type","support.class","entity.other.inherited-class"],settings:{foreground:e.typeClass}},{scope:["meta.type.annotation","meta.return.type","support.type.primitive","support.type.builtin"],settings:{foreground:e.typeAnnotation}},{scope:["entity.name.type.type-parameter","variable.type.type-parameter"],settings:{foreground:e.typeParam,fontStyle:"italic"}},{scope:["variable.other.enummember"],settings:{foreground:e.enumMember}},{scope:["entity.name.namespace","entity.name.module"],settings:{foreground:e.namespace}},{scope:["meta.decorator","meta.decorator punctuation.decorator","entity.name.function.decorator","punctuation.decorator"],settings:{foreground:e.decorator,background:e.bgSubtle,fontStyle:"italic"}},{scope:["variable","variable.other","variable.other.readwrite","variable.parameter"],settings:{foreground:e.variable}},{scope:["variable.other.property","variable.other.object.property","support.type.property-name","meta.object-literal.key"],settings:{foreground:e.property}},{scope:["punctuation.definition.block","punctuation.definition.parameters","meta.brace.round","meta.brace.curly","meta.brace.square","punctuation.section"],settings:{foreground:e.punctuation}},{scope:["punctuation.terminator","punctuation.separator","punctuation.separator.comma","punctuation.separator.period","punctuation.accessor"],settings:{foreground:e.punctuationLight}},{scope:["entity.name.tag","entity.name.tag.html","entity.name.tag.js.jsx","meta.tag","support.class.component"],settings:{foreground:e.tag}},{scope:["entity.other.attribute-name","entity.other.attribute-name.html"],settings:{foreground:e.attribute}},{scope:["support.type.property-name.css","entity.name.tag.css","support.type.property-name.scss"],settings:{foreground:e.cssProperty}},{scope:["support.constant.property-value.css","constant.other.color.rgb-value.css","constant.other.color","support.constant.color"],settings:{foreground:e.cssValue}},{scope:["variable.css","variable.scss","variable.other.less","support.type.custom-property"],settings:{foreground:e.cssVariable}},{scope:["invalid","invalid.illegal"],settings:{foreground:e.invalid}}]};export{o as shikiTheme};
1
+ const e=o=>`var(--color-${o})`,t={bg:e("elevation-2"),fg:e("neutral-9"),comment:e("neutral-5"),keyword:e("primary-9"),function:e("primary-8"),importExport:e("primary-8"),punctuationLight:e("primary-8"),thisSuper:e("primary-7"),functionCall:e("primary-7"),builtinFunction:e("primary-6"),typeClass:e("secondary-9"),number:e("secondary-8"),constant:e("secondary-8"),enumMember:e("secondary-8"),colon:e("secondary-8"),typeAnnotation:e("secondary-7"),namespace:e("secondary-7"),property:e("secondary-6"),typeParam:e("secondary-6"),stringQuote:e("success-10"),string:e("success-9"),stringTemplate:e("success-8"),templateExprDelim:e("success-7"),regex:e("destructive-9"),invalid:e("destructive-9"),regexCharClass:e("destructive-8"),decorator:e("destructive-7"),hash:e("destructive-7"),computedKey:e("destructive-7"),regexQuantifier:e("destructive-7"),regexFlag:e("destructive-6"),deprecated:e("destructive-6"),variable:e("neutral-9"),operator:e("neutral-9"),parameter:e("neutral-8"),arrow:e("neutral-8"),spreadRest:e("neutral-8")},n=[{settings:{background:t.bg,foreground:t.fg}},{scope:["comment","punctuation.definition.comment","string.comment","comment.block","comment.line","comment.block.documentation"],settings:{foreground:t.comment,fontStyle:"italic"}},{scope:["keyword","keyword.control","keyword.control.flow","keyword.control.conditional","keyword.control.loop","keyword.control.trycatch","keyword.control.switch","keyword.control.return","keyword.control.throw","keyword.control.await","keyword.control.async","keyword.other","storage.type","storage.modifier"],settings:{foreground:t.keyword,fontStyle:"bold"}},{scope:["keyword.control.import","keyword.control.export","keyword.control.from","keyword.control.as","keyword.control.default","keyword.control.module"],settings:{foreground:t.importExport,fontStyle:"bold"}},{scope:["keyword.operator","keyword.operator.assignment","keyword.operator.assignment.compound","keyword.operator.comparison","keyword.operator.logical","keyword.operator.bitwise","keyword.operator.arithmetic","keyword.operator.ternary","keyword.operator.optional","keyword.operator.nullcoalescing","keyword.operator.type","keyword.operator.expression","keyword.operator.pipe"],settings:{foreground:t.operator,fontStyle:"bold"}},{scope:["keyword.operator.arrow","keyword.operator.scope-resolution","punctuation.separator.arrow","punctuation.definition.arrow"],settings:{foreground:t.arrow,fontStyle:"bold"}},{scope:["keyword.operator.spread","keyword.operator.rest","keyword.operator.optional-chaining","punctuation.accessor.optional"],settings:{foreground:t.spreadRest,fontStyle:"bold"}},{scope:["keyword.operator.new","keyword.operator.delete","keyword.operator.typeof","keyword.operator.instanceof","keyword.operator.void","keyword.operator.in","keyword.operator.of"],settings:{foreground:t.keyword,fontStyle:"bold italic"}},{scope:["variable.language.this","variable.language.super","variable.language.self","variable.language.cls","variable.language.special"],settings:{foreground:t.thisSuper,fontStyle:"bold italic"}},{scope:["string","string.quoted.single","string.quoted.double","string.quoted.other","string.interpolated","string.other"],settings:{foreground:t.string}},{scope:["string.quoted.backtick","string.template","string.template.ts","string.template.js"],settings:{foreground:t.stringTemplate}},{scope:["punctuation.definition.string.begin","punctuation.definition.string.end","punctuation.definition.template.begin","punctuation.definition.template.end","storage.type.string","punctuation.definition.string.begin.css","punctuation.definition.string.end.css"],settings:{foreground:t.stringQuote,fontStyle:"bold"}},{scope:["punctuation.definition.template-expression.begin","punctuation.definition.template-expression.end","meta.template.expression punctuation.definition.block"],settings:{foreground:t.templateExprDelim,fontStyle:"bold"}},{scope:["string.regexp","constant.regexp"],settings:{foreground:t.regex}},{scope:["string.regexp punctuation.definition.character-class","string.regexp meta.character-class","string.regexp constant.character.escape"],settings:{foreground:t.regexCharClass}},{scope:["string.regexp keyword.operator.quantifier","keyword.operator.quantifier.regexp"],settings:{foreground:t.regexQuantifier,fontStyle:"bold"}},{scope:["string.regexp keyword.other.regex.flags","punctuation.definition.regex.flags","keyword.other.regex.flags"],settings:{foreground:t.regexFlag,fontStyle:"italic"}},{scope:["constant.numeric","constant.numeric.integer","constant.numeric.float","constant.numeric.hex","constant.numeric.binary","constant.numeric.octal","constant.numeric.decimal","constant.numeric.scientific","constant.numeric.css"],settings:{foreground:t.number,fontStyle:"bold"}},{scope:["constant.language","constant.language.boolean","constant.language.boolean.true","constant.language.boolean.false","constant.language.null","constant.language.undefined","constant.language.infinity","constant.language.nan","constant.language.nil","constant.language.none","constant.other.boolean"],settings:{foreground:t.constant,fontStyle:"bold italic"}},{scope:["constant.character","constant.character.escape","constant.character.unicode","constant.other","constant.other.symbol","constant.other.key","constant.other.color"],settings:{foreground:t.constant}},{scope:["entity.name.function","meta.function entity.name.function","meta.method entity.name.function","meta.function.declaration entity.name.function"],settings:{foreground:t.function,fontStyle:"bold"}},{scope:["meta.function-call entity.name.function","meta.function-call.generic entity.name.function","support.function","support.function.dom","support.function.console"],settings:{foreground:t.functionCall}},{scope:["support.function.builtin","support.function.string","support.function.array","support.function.math","support.function.date","support.function.object","support.function.json","support.function.promise"],settings:{foreground:t.builtinFunction}},{scope:["entity.name.type","entity.name.type.interface","entity.name.type.alias","entity.name.type.enum","entity.name.class","entity.name.class.forward-decl","support.type","support.class","support.type.object","support.class.builtin","entity.other.inherited-class"],settings:{foreground:t.typeClass,fontStyle:"bold"}},{scope:["meta.type.annotation","meta.return.type","support.type.primitive","support.type.builtin","entity.name.type.primitive","keyword.type"],settings:{foreground:t.typeAnnotation}},{scope:["keyword.operator.expression.typeof","keyword.operator.expression.keyof","keyword.operator.expression.infer","keyword.operator.expression.satisfies","keyword.operator.expression.is","keyword.operator.type.annotation"],settings:{foreground:t.typeClass,fontStyle:"bold italic"}},{scope:["entity.name.type.type-parameter","variable.type.type-parameter","meta.type.parameters entity.name.type"],settings:{foreground:t.typeParam,fontStyle:"italic"}},{scope:["variable.other.enummember","constant.other.enum","meta.enum variable"],settings:{foreground:t.enumMember,fontStyle:"bold"}},{scope:["entity.name.namespace","entity.name.module","entity.name.section","storage.type.namespace","storage.type.module"],settings:{foreground:t.namespace}},{scope:["meta.decorator","meta.decorator punctuation.decorator","entity.name.function.decorator","punctuation.decorator","storage.type.annotation"],settings:{foreground:t.decorator,fontStyle:"bold italic"}},{scope:["variable","variable.other","variable.other.readwrite","variable.other.constant","variable.other.global","variable.other.local"],settings:{foreground:t.variable}},{scope:["variable.parameter","variable.parameter.function","meta.function.parameters variable.parameter","meta.arrow.parameters variable.parameter"],settings:{foreground:t.parameter}},{scope:["variable.other.property","variable.other.object.property","support.type.property-name","meta.object-literal.key","meta.object.key"],settings:{foreground:t.property}},{scope:["meta.computed.key","meta.objectliteral meta.template.expression"],settings:{foreground:t.computedKey,fontStyle:"bold"}},{scope:["punctuation.terminator","punctuation.terminator.statement","punctuation.separator","punctuation.separator.comma","punctuation.separator.period","punctuation.separator.dot","punctuation.separator.namespace","punctuation.separator.continuation","punctuation.accessor","punctuation.accessor.dot","meta.delimiter.object.comma","meta.delimiter.array.comma"],settings:{foreground:t.punctuationLight,fontStyle:"bold"}},{scope:["punctuation.separator.key-value","punctuation.separator.colon","punctuation.separator.type-annotation","punctuation.separator.dictionary.key-value","punctuation.definition.binding-pattern.object","punctuation.separator.case-statements"],settings:{foreground:t.colon,fontStyle:"bold"}},{scope:["punctuation.definition.id.css","punctuation.definition.entity.css","punctuation.definition.hash","entity.other.attribute-name.id.css punctuation","punctuation.definition.interpolation.begin","punctuation.definition.interpolation.end","punctuation.definition.directive","punctuation.definition.preprocessor","comment.line.number-sign punctuation.definition.comment"],settings:{foreground:t.hash,fontStyle:"bold"}},{scope:["invalid","invalid.illegal"],settings:{foreground:t.invalid,fontStyle:"bold underline"}},{scope:["invalid.deprecated"],settings:{foreground:t.deprecated,fontStyle:"strikethrough"}}],r={name:"shiki",settings:n};export{r as shikiTheme};
2
2
  //# sourceMappingURL=shiki.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shiki.js","sources":["../../lib/utilities/shiki.ts"],"sourcesContent":["import type { ThemeRegistration } from 'shiki';\n\nconst palette = {\n bg: 'var(--color-elevation-2)',\n bgSubtle: 'var(--color-elevation-1)',\n fg: 'var(--color-foreground)',\n comment: 'var(--color-muted-foreground)',\n keyword: 'var(--color-primary-9)',\n importExport: 'var(--color-primary-7)',\n operator: 'var(--color-primary-6)',\n thisSuper: 'var(--color-primary-8)',\n string: 'var(--color-success-8)',\n stringTemplate: 'var(--color-success-7)',\n regex: 'var(--color-destructive-7)',\n number: 'var(--color-secondary-8)',\n constant: 'var(--color-secondary-9)',\n function: 'var(--color-primary-8)',\n typeClass: 'var(--color-secondary-9)',\n typeAnnotation: 'var(--color-secondary-7)',\n typeParam: 'var(--color-secondary-6)',\n enumMember: 'var(--color-secondary-8)',\n namespace: 'var(--color-secondary-7)',\n decorator: 'var(--color-secondary-9)',\n variable: 'var(--color-foreground)',\n property: 'var(--color-secondary-6)',\n punctuation: 'var(--color-muted)',\n punctuationLight: 'var(--color-muted-foreground)',\n tag: 'var(--color-primary-8)',\n attribute: 'var(--color-secondary-5)',\n cssProperty: 'var(--color-primary-7)',\n cssValue: 'var(--color-success-7)',\n cssVariable: 'var(--color-secondary-6)',\n invalid: 'var(--color-destructive-7)',\n} as const;\n\nexport const shikiTheme: ThemeRegistration = {\n name: 'shiki-theme',\n\n settings: [\n {\n settings: {\n background: palette.bg,\n foreground: palette.fg,\n },\n },\n\n // ── Comments\n {\n scope: ['comment', 'punctuation.definition.comment', 'string.comment'],\n settings: {\n foreground: palette.comment,\n fontStyle: 'italic',\n },\n },\n\n // ── Keywords (control flow, storage)\n {\n scope: [\n 'keyword',\n 'keyword.control',\n 'keyword.control.flow',\n 'keyword.control.conditional',\n 'keyword.control.loop',\n 'keyword.operator.new',\n 'keyword.other',\n 'storage.type',\n 'storage.modifier',\n ],\n settings: { foreground: palette.keyword },\n },\n\n // ── Import / export / from / as\n {\n scope: ['keyword.control.import', 'keyword.control.export', 'keyword.control.from', 'keyword.control.as'],\n settings: { foreground: palette.importExport },\n },\n\n // ── Operators\n {\n scope: [\n 'keyword.operator',\n 'keyword.operator.assignment',\n 'keyword.operator.comparison',\n 'keyword.operator.logical',\n 'keyword.operator.arrow',\n 'keyword.operator.ternary',\n 'keyword.operator.optional',\n 'keyword.operator.nullcoalescing',\n 'keyword.operator.spread',\n ],\n settings: { foreground: palette.operator },\n },\n\n // ── this / super / self\n {\n scope: ['variable.language.this', 'variable.language.super', 'variable.language.self'],\n settings: { foreground: palette.thisSuper, fontStyle: 'italic' },\n },\n\n // ── Strings\n {\n scope: ['string', 'string.quoted.single', 'string.quoted.double'],\n settings: { foreground: palette.string },\n },\n\n // ── Template literals\n {\n scope: ['string.quoted.backtick', 'string.template'],\n settings: { foreground: palette.stringTemplate },\n },\n\n // ── Template expressions\n {\n scope: [\n 'punctuation.definition.template-expression.begin',\n 'punctuation.definition.template-expression.end',\n 'meta.template.expression',\n ],\n settings: {\n foreground: palette.importExport,\n background: palette.bgSubtle,\n },\n },\n\n // ── Regex\n {\n scope: ['string.regexp', 'constant.regexp'],\n settings: { foreground: palette.regex },\n },\n\n // ── Numbers, booleans, null, constants\n {\n scope: [\n 'constant.numeric',\n 'constant.language',\n 'constant.language.boolean',\n 'constant.character',\n 'constant.other',\n ],\n settings: { foreground: palette.constant },\n },\n\n // ── Function names\n {\n scope: ['entity.name.function', 'support.function', 'meta.function-call entity.name.function'],\n settings: { foreground: palette.function },\n },\n\n // ── Types, classes, interfaces\n {\n scope: [\n 'entity.name.type',\n 'entity.name.type.interface',\n 'entity.name.type.alias',\n 'entity.name.class',\n 'support.type',\n 'support.class',\n 'entity.other.inherited-class',\n ],\n settings: { foreground: palette.typeClass },\n },\n\n // ── Type annotations & builtins\n {\n scope: ['meta.type.annotation', 'meta.return.type', 'support.type.primitive', 'support.type.builtin'],\n settings: { foreground: palette.typeAnnotation },\n },\n\n // ── Generic type parameters\n {\n scope: ['entity.name.type.type-parameter', 'variable.type.type-parameter'],\n settings: { foreground: palette.typeParam, fontStyle: 'italic' },\n },\n\n // ── Enum members\n {\n scope: ['variable.other.enummember'],\n settings: { foreground: palette.enumMember },\n },\n\n // ── Namespaces / modules\n {\n scope: ['entity.name.namespace', 'entity.name.module'],\n settings: { foreground: palette.namespace },\n },\n\n // ── Decorators\n {\n scope: [\n 'meta.decorator',\n 'meta.decorator punctuation.decorator',\n 'entity.name.function.decorator',\n 'punctuation.decorator',\n ],\n settings: {\n foreground: palette.decorator,\n background: palette.bgSubtle,\n fontStyle: 'italic',\n },\n },\n\n // ── Variables & parameters\n {\n scope: ['variable', 'variable.other', 'variable.other.readwrite', 'variable.parameter'],\n settings: { foreground: palette.variable },\n },\n\n // ── Object properties / keys\n {\n scope: [\n 'variable.other.property',\n 'variable.other.object.property',\n 'support.type.property-name',\n 'meta.object-literal.key',\n ],\n settings: { foreground: palette.property },\n },\n\n // ── Punctuation: brackets & braces\n {\n scope: [\n 'punctuation.definition.block',\n 'punctuation.definition.parameters',\n 'meta.brace.round',\n 'meta.brace.curly',\n 'meta.brace.square',\n 'punctuation.section',\n ],\n settings: { foreground: palette.punctuation },\n },\n\n // ── Punctuation: terminators & separators\n {\n scope: [\n 'punctuation.terminator',\n 'punctuation.separator',\n 'punctuation.separator.comma',\n 'punctuation.separator.period',\n 'punctuation.accessor',\n ],\n settings: { foreground: palette.punctuationLight },\n },\n\n // ── JSX / HTML tags\n {\n scope: [\n 'entity.name.tag',\n 'entity.name.tag.html',\n 'entity.name.tag.js.jsx',\n 'meta.tag',\n 'support.class.component',\n ],\n settings: { foreground: palette.tag },\n },\n\n // ── JSX / HTML attributes\n {\n scope: ['entity.other.attribute-name', 'entity.other.attribute-name.html'],\n settings: { foreground: palette.attribute },\n },\n\n // ── CSS property names\n {\n scope: ['support.type.property-name.css', 'entity.name.tag.css', 'support.type.property-name.scss'],\n settings: { foreground: palette.cssProperty },\n },\n\n // ── CSS values & colors\n {\n scope: [\n 'support.constant.property-value.css',\n 'constant.other.color.rgb-value.css',\n 'constant.other.color',\n 'support.constant.color',\n ],\n settings: { foreground: palette.cssValue },\n },\n\n // ── CSS / SCSS variables\n {\n scope: ['variable.css', 'variable.scss', 'variable.other.less', 'support.type.custom-property'],\n settings: { foreground: palette.cssVariable },\n },\n\n // ── Invalid / errors\n {\n scope: ['invalid', 'invalid.illegal'],\n settings: { foreground: palette.invalid },\n },\n ],\n};\n"],"names":["palette","shikiTheme"],"mappings":"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"}
1
+ {"version":3,"file":"shiki.js","sources":["../../lib/utilities/shiki.ts"],"sourcesContent":["import type { ThemeRegistration } from 'shiki';\n\nconst v = (token: string) => `var(--color-${token})`;\n\nconst palette = {\n bg: v('elevation-2'),\n fg: v('neutral-9'),\n comment: v('neutral-5'),\n keyword: v('primary-9'),\n function: v('primary-8'),\n tag: v('primary-8'),\n importExport: v('primary-8'),\n punctuationLight: v('primary-8'),\n tagBracket: v('primary-7'),\n thisSuper: v('primary-7'),\n cssProperty: v('primary-7'),\n cssAtRule: v('primary-7'),\n shellBuiltin: v('primary-7'),\n functionCall: v('primary-7'),\n jsonKey: v('primary-7'),\n yamlKey: v('primary-7'),\n mdHeading: v('primary-9'),\n mdLink: v('primary-7'),\n builtinFunction: v('primary-6'),\n goBuiltin: v('primary-6'),\n typeClass: v('secondary-9'),\n cssIdSelector: v('secondary-9'),\n mdBold: v('secondary-9'),\n number: v('secondary-8'),\n constant: v('secondary-8'),\n enumMember: v('secondary-8'),\n cssSelector: v('secondary-8'),\n colon: v('secondary-8'),\n typeAnnotation: v('secondary-7'),\n namespace: v('secondary-7'),\n cssPseudo: v('secondary-7'),\n yamlTag: v('secondary-7'),\n rustLifetime: v('secondary-7'),\n shellVar: v('secondary-7'),\n pythonMagic: v('secondary-7'),\n rustMacro: v('secondary-8'),\n scssMixin: v('secondary-8'),\n property: v('secondary-6'),\n typeParam: v('secondary-6'),\n attribute: v('secondary-6'),\n cssVariable: v('secondary-6'),\n mdBullet: v('secondary-6'),\n stringQuote: v('success-10'),\n string: v('success-9'),\n stringTemplate: v('success-8'),\n cssValue: v('success-8'),\n pythonFStr: v('success-8'),\n templateExprDelim: v('success-7'),\n cssUnit: v('success-7'),\n mdItalic: v('success-7'),\n regex: v('destructive-9'),\n invalid: v('destructive-9'),\n regexCharClass: v('destructive-8'),\n cssImportant: v('destructive-8'),\n decorator: v('destructive-7'),\n hash: v('destructive-7'),\n jsxExprDelim: v('destructive-7'),\n computedKey: v('destructive-7'),\n yamlAnchor: v('destructive-7'),\n shellFlag: v('destructive-7'),\n mdCode: v('destructive-7'),\n regexQuantifier: v('destructive-7'),\n regexFlag: v('destructive-6'),\n deprecated: v('destructive-6'),\n rustAttr: v('destructive-6'),\n yamlAlias: v('destructive-6'),\n variable: v('neutral-9'),\n operator: v('neutral-9'),\n parameter: v('neutral-8'),\n arrow: v('neutral-8'),\n spreadRest: v('neutral-8'),\n mdBlockquote: v('neutral-5'),\n mdHr: v('neutral-4'),\n} as const;\n\nconst settings: ThemeRegistration['settings'] = [\n { settings: { background: palette.bg, foreground: palette.fg } },\n {\n scope: [\n 'comment',\n 'punctuation.definition.comment',\n 'string.comment',\n 'comment.block',\n 'comment.line',\n 'comment.block.documentation',\n ],\n settings: { foreground: palette.comment, fontStyle: 'italic' },\n },\n\n // Keywords — control / storage\n {\n scope: [\n 'keyword',\n 'keyword.control',\n 'keyword.control.flow',\n 'keyword.control.conditional',\n 'keyword.control.loop',\n 'keyword.control.trycatch',\n 'keyword.control.switch',\n 'keyword.control.return',\n 'keyword.control.throw',\n 'keyword.control.await',\n 'keyword.control.async',\n 'keyword.other',\n 'storage.type',\n 'storage.modifier',\n ],\n settings: { foreground: palette.keyword, fontStyle: 'bold' },\n },\n\n // import / export / from / as / default\n {\n scope: [\n 'keyword.control.import',\n 'keyword.control.export',\n 'keyword.control.from',\n 'keyword.control.as',\n 'keyword.control.default',\n 'keyword.control.module',\n ],\n settings: { foreground: palette.importExport, fontStyle: 'bold' },\n },\n\n // Operators\n {\n scope: [\n 'keyword.operator',\n 'keyword.operator.assignment',\n 'keyword.operator.assignment.compound',\n 'keyword.operator.comparison',\n 'keyword.operator.logical',\n 'keyword.operator.bitwise',\n 'keyword.operator.arithmetic',\n 'keyword.operator.ternary',\n 'keyword.operator.optional',\n 'keyword.operator.nullcoalescing',\n 'keyword.operator.type',\n 'keyword.operator.expression',\n 'keyword.operator.pipe',\n ],\n settings: { foreground: palette.operator, fontStyle: 'bold' },\n },\n\n // => ::\n {\n scope: [\n 'keyword.operator.arrow',\n 'keyword.operator.scope-resolution',\n 'punctuation.separator.arrow',\n 'punctuation.definition.arrow',\n ],\n settings: { foreground: palette.arrow, fontStyle: 'bold' },\n },\n\n // ... ?.\n {\n scope: [\n 'keyword.operator.spread',\n 'keyword.operator.rest',\n 'keyword.operator.optional-chaining',\n 'punctuation.accessor.optional',\n ],\n settings: { foreground: palette.spreadRest, fontStyle: 'bold' },\n },\n\n // new delete typeof instanceof void in of\n {\n scope: [\n 'keyword.operator.new',\n 'keyword.operator.delete',\n 'keyword.operator.typeof',\n 'keyword.operator.instanceof',\n 'keyword.operator.void',\n 'keyword.operator.in',\n 'keyword.operator.of',\n ],\n settings: { foreground: palette.keyword, fontStyle: 'bold italic' },\n },\n\n // this / super / self / cls\n {\n scope: [\n 'variable.language.this',\n 'variable.language.super',\n 'variable.language.self',\n 'variable.language.cls',\n 'variable.language.special',\n ],\n settings: { foreground: palette.thisSuper, fontStyle: 'bold italic' },\n },\n\n // Strings — single / double\n {\n scope: [\n 'string',\n 'string.quoted.single',\n 'string.quoted.double',\n 'string.quoted.other',\n 'string.interpolated',\n 'string.other',\n ],\n settings: { foreground: palette.string },\n },\n\n // Template literals — backtick body\n {\n scope: ['string.quoted.backtick', 'string.template', 'string.template.ts', 'string.template.js'],\n settings: { foreground: palette.stringTemplate },\n },\n\n // Quote delimiters \" ' `\n {\n scope: [\n 'punctuation.definition.string.begin',\n 'punctuation.definition.string.end',\n 'punctuation.definition.template.begin',\n 'punctuation.definition.template.end',\n 'storage.type.string',\n 'punctuation.definition.string.begin.css',\n 'punctuation.definition.string.end.css',\n ],\n settings: { foreground: palette.stringQuote, fontStyle: 'bold' },\n },\n\n // Template ${ } delimiters\n {\n scope: [\n 'punctuation.definition.template-expression.begin',\n 'punctuation.definition.template-expression.end',\n 'meta.template.expression punctuation.definition.block',\n ],\n settings: { foreground: palette.templateExprDelim, fontStyle: 'bold' },\n },\n\n // RegExp\n {\n scope: ['string.regexp', 'constant.regexp'],\n settings: { foreground: palette.regex },\n },\n {\n scope: [\n 'string.regexp punctuation.definition.character-class',\n 'string.regexp meta.character-class',\n 'string.regexp constant.character.escape',\n ],\n settings: { foreground: palette.regexCharClass },\n },\n {\n scope: ['string.regexp keyword.operator.quantifier', 'keyword.operator.quantifier.regexp'],\n settings: { foreground: palette.regexQuantifier, fontStyle: 'bold' },\n },\n {\n scope: [\n 'string.regexp keyword.other.regex.flags',\n 'punctuation.definition.regex.flags',\n 'keyword.other.regex.flags',\n ],\n settings: { foreground: palette.regexFlag, fontStyle: 'italic' },\n },\n\n // Numbers\n {\n scope: [\n 'constant.numeric',\n 'constant.numeric.integer',\n 'constant.numeric.float',\n 'constant.numeric.hex',\n 'constant.numeric.binary',\n 'constant.numeric.octal',\n 'constant.numeric.decimal',\n 'constant.numeric.scientific',\n 'constant.numeric.css',\n ],\n settings: { foreground: palette.number, fontStyle: 'bold' },\n },\n\n // Boolean / null / undefined / Infinity / NaN\n {\n scope: [\n 'constant.language',\n 'constant.language.boolean',\n 'constant.language.boolean.true',\n 'constant.language.boolean.false',\n 'constant.language.null',\n 'constant.language.undefined',\n 'constant.language.infinity',\n 'constant.language.nan',\n 'constant.language.nil',\n 'constant.language.none',\n 'constant.other.boolean',\n ],\n settings: { foreground: palette.constant, fontStyle: 'bold italic' },\n },\n\n // Other constants — escapes, symbols\n {\n scope: [\n 'constant.character',\n 'constant.character.escape',\n 'constant.character.unicode',\n 'constant.other',\n 'constant.other.symbol',\n 'constant.other.key',\n 'constant.other.color',\n ],\n settings: { foreground: palette.constant },\n },\n\n // Function declarations\n {\n scope: [\n 'entity.name.function',\n 'meta.function entity.name.function',\n 'meta.method entity.name.function',\n 'meta.function.declaration entity.name.function',\n ],\n settings: { foreground: palette.function, fontStyle: 'bold' },\n },\n\n // Function calls\n {\n scope: [\n 'meta.function-call entity.name.function',\n 'meta.function-call.generic entity.name.function',\n 'support.function',\n 'support.function.dom',\n 'support.function.console',\n ],\n settings: { foreground: palette.functionCall },\n },\n\n // Built-in functions\n {\n scope: [\n 'support.function.builtin',\n 'support.function.string',\n 'support.function.array',\n 'support.function.math',\n 'support.function.date',\n 'support.function.object',\n 'support.function.json',\n 'support.function.promise',\n ],\n settings: { foreground: palette.builtinFunction },\n },\n\n // Types / classes / interfaces\n {\n scope: [\n 'entity.name.type',\n 'entity.name.type.interface',\n 'entity.name.type.alias',\n 'entity.name.type.enum',\n 'entity.name.class',\n 'entity.name.class.forward-decl',\n 'support.type',\n 'support.class',\n 'support.type.object',\n 'support.class.builtin',\n 'entity.other.inherited-class',\n ],\n settings: { foreground: palette.typeClass, fontStyle: 'bold' },\n },\n\n // Type annotations / return types\n {\n scope: [\n 'meta.type.annotation',\n 'meta.return.type',\n 'support.type.primitive',\n 'support.type.builtin',\n 'entity.name.type.primitive',\n 'keyword.type',\n ],\n settings: { foreground: palette.typeAnnotation },\n },\n\n // typeof keyof infer satisfies is\n {\n scope: [\n 'keyword.operator.expression.typeof',\n 'keyword.operator.expression.keyof',\n 'keyword.operator.expression.infer',\n 'keyword.operator.expression.satisfies',\n 'keyword.operator.expression.is',\n 'keyword.operator.type.annotation',\n ],\n settings: { foreground: palette.typeClass, fontStyle: 'bold italic' },\n },\n\n // Generic type params <T>\n {\n scope: [\n 'entity.name.type.type-parameter',\n 'variable.type.type-parameter',\n 'meta.type.parameters entity.name.type',\n ],\n settings: { foreground: palette.typeParam, fontStyle: 'italic' },\n },\n\n // Enum members\n {\n scope: ['variable.other.enummember', 'constant.other.enum', 'meta.enum variable'],\n settings: { foreground: palette.enumMember, fontStyle: 'bold' },\n },\n\n // Namespaces / modules\n {\n scope: [\n 'entity.name.namespace',\n 'entity.name.module',\n 'entity.name.section',\n 'storage.type.namespace',\n 'storage.type.module',\n ],\n settings: { foreground: palette.namespace },\n },\n\n // Decorators (all languages)\n {\n scope: [\n 'meta.decorator',\n 'meta.decorator punctuation.decorator',\n 'entity.name.function.decorator',\n 'punctuation.decorator',\n 'storage.type.annotation',\n ],\n settings: { foreground: palette.decorator, fontStyle: 'bold italic' },\n },\n\n // Variables\n {\n scope: [\n 'variable',\n 'variable.other',\n 'variable.other.readwrite',\n 'variable.other.constant',\n 'variable.other.global',\n 'variable.other.local',\n ],\n settings: { foreground: palette.variable },\n },\n\n // Parameters\n {\n scope: [\n 'variable.parameter',\n 'variable.parameter.function',\n 'meta.function.parameters variable.parameter',\n 'meta.arrow.parameters variable.parameter',\n ],\n settings: { foreground: palette.parameter },\n },\n\n // Object properties\n {\n scope: [\n 'variable.other.property',\n 'variable.other.object.property',\n 'support.type.property-name',\n 'meta.object-literal.key',\n 'meta.object.key',\n ],\n settings: { foreground: palette.property },\n },\n\n // Computed keys [key]\n {\n scope: ['meta.computed.key', 'meta.objectliteral meta.template.expression'],\n settings: { foreground: palette.computedKey, fontStyle: 'bold' },\n },\n\n // Commas , semicolons ; dots .\n {\n scope: [\n 'punctuation.terminator',\n 'punctuation.terminator.statement',\n 'punctuation.separator',\n 'punctuation.separator.comma',\n 'punctuation.separator.period',\n 'punctuation.separator.dot',\n 'punctuation.separator.namespace',\n 'punctuation.separator.continuation',\n 'punctuation.accessor',\n 'punctuation.accessor.dot',\n 'meta.delimiter.object.comma',\n 'meta.delimiter.array.comma',\n ],\n settings: { foreground: palette.punctuationLight, fontStyle: 'bold' },\n },\n\n // Colons :\n {\n scope: [\n 'punctuation.separator.key-value',\n 'punctuation.separator.colon',\n 'punctuation.separator.type-annotation',\n 'punctuation.separator.dictionary.key-value',\n 'punctuation.definition.binding-pattern.object',\n 'punctuation.separator.case-statements',\n ],\n settings: { foreground: palette.colon, fontStyle: 'bold' },\n },\n\n // Hash #\n {\n scope: [\n 'punctuation.definition.id.css',\n 'punctuation.definition.entity.css',\n 'punctuation.definition.hash',\n 'entity.other.attribute-name.id.css punctuation',\n 'punctuation.definition.interpolation.begin',\n 'punctuation.definition.interpolation.end',\n 'punctuation.definition.directive',\n 'punctuation.definition.preprocessor',\n 'comment.line.number-sign punctuation.definition.comment',\n ],\n settings: { foreground: palette.hash, fontStyle: 'bold' },\n },\n\n // Errors\n\n {\n scope: ['invalid', 'invalid.illegal'],\n settings: { foreground: palette.invalid, fontStyle: 'bold underline' },\n },\n\n {\n scope: ['invalid.deprecated'],\n settings: { foreground: palette.deprecated, fontStyle: 'strikethrough' },\n },\n];\n\nexport const shikiTheme: ThemeRegistration = {\n name: 'shiki',\n settings,\n};\n"],"names":["v","token","palette","settings","shikiTheme"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { HighlightOptions } from './highlight-code';
2
+ export declare function useCodeHighlight(options: HighlightOptions): string;
@@ -0,0 +1,2 @@
1
+ "use client";import{useState as n,useEffect as u}from"react";import{highlightCode as c}from"./highlight-code.js";import"@shikijs/colorized-brackets";import"shiki";import"./shiki.js";function d(t){const[r,i]=n("");return u(()=>{let e=!1;async function o(){const l=await c(t);e||i(l)}return o(),()=>{e=!0}},[t.code,t.lang]),r}export{d as useCodeHighlight};
2
+ //# sourceMappingURL=use-code-highlight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-code-highlight.js","sources":["../../lib/utilities/use-code-highlight.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\nimport type { HighlightOptions } from './highlight-code';\nimport { highlightCode } from './highlight-code';\n\nexport function useCodeHighlight(options: HighlightOptions) {\n const [html, setHtml] = useState('');\n\n useEffect(() => {\n let cancelled = false;\n\n async function run() {\n const result = await highlightCode(options);\n if (!cancelled) setHtml(result);\n }\n\n void run();\n return () => {\n cancelled = true;\n };\n }, [options.code, options.lang]);\n\n return html;\n}\n"],"names":["useCodeHighlight","options","html","setHtml","useState","useEffect","cancelled","run","result","highlightCode"],"mappings":"sLAMO,SAASA,EAAiBC,EAA2B,CACxD,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAS,EAAE,EAEnC,OAAAC,EAAU,IAAM,CACZ,IAAIC,EAAY,GAEhB,eAAeC,GAAM,CACjB,MAAMC,EAAS,MAAMC,EAAcR,CAAO,EACrCK,GAAWH,EAAQK,CAAM,CAClC,CAEA,OAAKD,EAAA,EACE,IAAM,CACTD,EAAY,EAChB,CACJ,EAAG,CAACL,EAAQ,KAAMA,EAAQ,IAAI,CAAC,EAExBC,CACX"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptlex/web-components",
3
- "version": "6.6.6-alpha88",
3
+ "version": "6.6.6-alpha90",
4
4
  "description": "React component library for Cryptlex web applications",
5
5
  "author": "Cryptlex",
6
6
  "type": "module",
@@ -70,7 +70,8 @@
70
70
  "tailwindcss": "4.1.12",
71
71
  "tw-animate-css": "1.3.0",
72
72
  "zod": "4.1.1",
73
- "shiki": "^3.22.0"
73
+ "shiki": "^3.22.0",
74
+ "@shikijs/colorized-brackets": "^4.0.2"
74
75
  },
75
76
  "devDependencies": {
76
77
  "@rollup/plugin-node-resolve": "16.0.1",
@@ -1,2 +0,0 @@
1
- const e=Object.freeze(JSON.parse('{"colors":{"activityBar.background":"#23262E","activityBar.dropBackground":"#3a404e","activityBar.foreground":"#BAAFC0","activityBarBadge.background":"#00b0ff","activityBarBadge.foreground":"#20232B","badge.background":"#00b0ff","badge.foreground":"#20232B","button.background":"#00e8c5cc","button.hoverBackground":"#07d4b6cc","debugExceptionWidget.background":"#FF9F2E60","debugExceptionWidget.border":"#FF9F2E60","debugToolBar.background":"#20232A","diffEditor.insertedTextBackground":"#29BF1220","diffEditor.removedTextBackground":"#F21B3F20","dropdown.background":"#2b303b","dropdown.border":"#363c49","editor.background":"#23262E","editor.findMatchBackground":"#f39d1256","editor.findMatchBorder":"#f39d12b6","editor.findMatchHighlightBackground":"#59b8b377","editor.foreground":"#D5CED9","editor.hoverHighlightBackground":"#373941","editor.lineHighlightBackground":"#2e323d","editor.lineHighlightBorder":"#2e323d","editor.rangeHighlightBackground":"#372F3C","editor.selectionBackground":"#3D4352","editor.selectionHighlightBackground":"#4F435580","editor.wordHighlightBackground":"#4F4355","editor.wordHighlightStrongBackground":"#db45a280","editorBracketMatch.background":"#746f77","editorBracketMatch.border":"#746f77","editorCodeLens.foreground":"#746f77","editorCursor.foreground":"#FFF","editorError.foreground":"#FC644D","editorGroup.background":"#23262E","editorGroup.dropBackground":"#495061d7","editorGroupHeader.tabsBackground":"#23262E","editorGutter.addedBackground":"#9BC53DBB","editorGutter.deletedBackground":"#FC644DBB","editorGutter.modifiedBackground":"#5BC0EBBB","editorHoverWidget.background":"#373941","editorHoverWidget.border":"#00e8c5cc","editorIndentGuide.activeBackground":"#585C66","editorIndentGuide.background":"#333844","editorLineNumber.foreground":"#746f77","editorLink.activeForeground":"#3B79C7","editorOverviewRuler.border":"#1B1D23","editorRuler.foreground":"#4F4355","editorSuggestWidget.background":"#20232A","editorSuggestWidget.border":"#372F3C","editorSuggestWidget.selectedBackground":"#373941","editorWarning.foreground":"#FF9F2E","editorWhitespace.foreground":"#333844","editorWidget.background":"#20232A","errorForeground":"#FC644D","extensionButton.prominentBackground":"#07d4b6cc","extensionButton.prominentHoverBackground":"#07d4b5b0","focusBorder":"#746f77","foreground":"#D5CED9","gitDecoration.ignoredResourceForeground":"#555555","input.background":"#2b303b","input.placeholderForeground":"#746f77","inputOption.activeBorder":"#C668BA","inputValidation.errorBackground":"#D65343","inputValidation.errorBorder":"#D65343","inputValidation.infoBackground":"#3A6395","inputValidation.infoBorder":"#3A6395","inputValidation.warningBackground":"#DE9237","inputValidation.warningBorder":"#DE9237","list.activeSelectionBackground":"#23262E","list.activeSelectionForeground":"#00e8c6","list.dropBackground":"#3a404e","list.focusBackground":"#282b35","list.focusForeground":"#eee","list.hoverBackground":"#23262E","list.hoverForeground":"#eee","list.inactiveSelectionBackground":"#23262E","list.inactiveSelectionForeground":"#00e8c6","merge.currentContentBackground":"#F9267240","merge.currentHeaderBackground":"#F92672","merge.incomingContentBackground":"#3B79C740","merge.incomingHeaderBackground":"#3B79C7BB","minimapSlider.activeBackground":"#60698060","minimapSlider.background":"#58607460","minimapSlider.hoverBackground":"#60698060","notification.background":"#2d313b","notification.buttonBackground":"#00e8c5cc","notification.buttonHoverBackground":"#07d4b5b0","notification.errorBackground":"#FC644D","notification.infoBackground":"#00b0ff","notification.warningBackground":"#FF9F2E","panel.background":"#23262E","panel.border":"#1B1D23","panelTitle.activeBorder":"#23262E","panelTitle.inactiveForeground":"#746f77","peekView.border":"#23262E","peekViewEditor.background":"#1A1C22","peekViewEditor.matchHighlightBackground":"#FF9F2E60","peekViewResult.background":"#1A1C22","peekViewResult.matchHighlightBackground":"#FF9F2E60","peekViewResult.selectionBackground":"#23262E","peekViewTitle.background":"#1A1C22","peekViewTitleDescription.foreground":"#746f77","pickerGroup.border":"#4F4355","pickerGroup.foreground":"#746f77","progressBar.background":"#C668BA","scrollbar.shadow":"#23262E","scrollbarSlider.activeBackground":"#3A3F4CCC","scrollbarSlider.background":"#3A3F4C77","scrollbarSlider.hoverBackground":"#3A3F4CAA","selection.background":"#746f77","sideBar.background":"#23262E","sideBar.foreground":"#999999","sideBarSectionHeader.background":"#23262E","sideBarTitle.foreground":"#00e8c6","statusBar.background":"#23262E","statusBar.debuggingBackground":"#FC644D","statusBar.noFolderBackground":"#23262E","statusBarItem.activeBackground":"#00e8c5cc","statusBarItem.hoverBackground":"#07d4b5b0","statusBarItem.prominentBackground":"#07d4b5b0","statusBarItem.prominentHoverBackground":"#00e8c5cc","tab.activeBackground":"#23262e","tab.activeBorder":"#00e8c6","tab.activeForeground":"#00e8c6","tab.inactiveBackground":"#23262E","tab.inactiveForeground":"#746f77","terminal.ansiBlue":"#7cb7ff","terminal.ansiBrightBlue":"#7cb7ff","terminal.ansiBrightCyan":"#00e8c6","terminal.ansiBrightGreen":"#96E072","terminal.ansiBrightMagenta":"#ff00aa","terminal.ansiBrightRed":"#ee5d43","terminal.ansiBrightYellow":"#FFE66D","terminal.ansiCyan":"#00e8c6","terminal.ansiGreen":"#96E072","terminal.ansiMagenta":"#ff00aa","terminal.ansiRed":"#ee5d43","terminal.ansiYellow":"#FFE66D","terminalCursor.background":"#23262E","terminalCursor.foreground":"#FFE66D","titleBar.activeBackground":"#23262E","walkThrough.embeddedEditorBackground":"#23262E","widget.shadow":"#14151A"},"displayName":"Andromeeda","name":"andromeeda","semanticTokenColors":{"property.declaration:javascript":"#D5CED9","variable.defaultLibrary:javascript":"#f39c12"},"tokenColors":[{"settings":{"background":"#23262E","foreground":"#D5CED9"}},{"scope":["comment","markup.quote.markdown","meta.diff","meta.diff.header"],"settings":{"foreground":"#A0A1A7cc"}},{"scope":["meta.template.expression.js","constant.name.attribute.tag.jade","punctuation.definition.metadata.markdown","punctuation.definition.string.end.markdown","punctuation.definition.string.begin.markdown","string.unquoted.cmake"],"settings":{"foreground":"#D5CED9"}},{"scope":["variable","support.variable","entity.name.tag.yaml","constant.character.entity.html","source.css entity.name.tag.reference","beginning.punctuation.definition.list.markdown","source.css entity.other.attribute-name.parent-selector","meta.structure.dictionary.json support.type.property-name"],"settings":{"foreground":"#00e8c6"}},{"scope":["markup.bold","constant.numeric","meta.group.regexp","constant.other.php","support.constant.ext.php","constant.other.class.php","support.constant.core.php","fenced_code.block.language","constant.other.caps.python","entity.other.attribute-name","support.type.exception.python","source.css keyword.other.unit","variable.other.object.property.js.jsx","variable.other.object.js"],"settings":{"foreground":"#f39c12"}},{"scope":["markup.list","text.xml string","entity.name.type","support.function","entity.other.attribute-name","meta.at-rule.extend","entity.name.function","entity.other.inherited-class","entity.other.keyframe-offset.css","text.html.markdown string.quoted","meta.function-call.generic.python","meta.at-rule.extend support.constant","entity.other.attribute-name.class.jade","source.css entity.other.attribute-name","text.xml punctuation.definition.string"],"settings":{"foreground":"#FFE66D"}},{"scope":["markup.heading","variable.language.this.js","variable.language.special.self.python"],"settings":{"foreground":"#ff00aa"}},{"scope":["punctuation.definition.interpolation","punctuation.section.embedded.end.php","punctuation.section.embedded.end.ruby","punctuation.section.embedded.begin.php","punctuation.section.embedded.begin.ruby","punctuation.definition.template-expression","entity.name.tag"],"settings":{"foreground":"#f92672"}},{"scope":["storage","keyword","meta.link","meta.image","markup.italic","source.js support.type","support.type"],"settings":{"foreground":"#c74ded"}},{"scope":["string.regexp","markup.changed"],"settings":{"foreground":"#7cb7ff"}},{"scope":["constant","support.class","keyword.operator","support.constant","text.html.markdown string","source.css support.function","source.php support.function","support.function.magic.python","entity.other.attribute-name.id","markup.deleted"],"settings":{"foreground":"#ee5d43"}},{"scope":["string","text.html.php string","markup.inline.raw","markup.inserted","punctuation.definition.string","punctuation.definition.markdown","text.html meta.embedded source.js string","text.html.php punctuation.definition.string","text.html meta.embedded source.js punctuation.definition.string","text.html punctuation.definition.string","text.html string"],"settings":{"foreground":"#96E072"}},{"scope":["entity.other.inherited-class"],"settings":{"fontStyle":"underline"}}],"type":"dark"}'));export{e as default};
2
- //# sourceMappingURL=andromeeda.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"andromeeda.js","sources":["../node_modules/.pnpm/@shikijs+themes@3.22.0/node_modules/@shikijs/themes/dist/andromeeda.mjs"],"sourcesContent":["/* Theme: andromeeda */\nexport default Object.freeze(JSON.parse(\"{\\\"colors\\\":{\\\"activityBar.background\\\":\\\"#23262E\\\",\\\"activityBar.dropBackground\\\":\\\"#3a404e\\\",\\\"activityBar.foreground\\\":\\\"#BAAFC0\\\",\\\"activityBarBadge.background\\\":\\\"#00b0ff\\\",\\\"activityBarBadge.foreground\\\":\\\"#20232B\\\",\\\"badge.background\\\":\\\"#00b0ff\\\",\\\"badge.foreground\\\":\\\"#20232B\\\",\\\"button.background\\\":\\\"#00e8c5cc\\\",\\\"button.hoverBackground\\\":\\\"#07d4b6cc\\\",\\\"debugExceptionWidget.background\\\":\\\"#FF9F2E60\\\",\\\"debugExceptionWidget.border\\\":\\\"#FF9F2E60\\\",\\\"debugToolBar.background\\\":\\\"#20232A\\\",\\\"diffEditor.insertedTextBackground\\\":\\\"#29BF1220\\\",\\\"diffEditor.removedTextBackground\\\":\\\"#F21B3F20\\\",\\\"dropdown.background\\\":\\\"#2b303b\\\",\\\"dropdown.border\\\":\\\"#363c49\\\",\\\"editor.background\\\":\\\"#23262E\\\",\\\"editor.findMatchBackground\\\":\\\"#f39d1256\\\",\\\"editor.findMatchBorder\\\":\\\"#f39d12b6\\\",\\\"editor.findMatchHighlightBackground\\\":\\\"#59b8b377\\\",\\\"editor.foreground\\\":\\\"#D5CED9\\\",\\\"editor.hoverHighlightBackground\\\":\\\"#373941\\\",\\\"editor.lineHighlightBackground\\\":\\\"#2e323d\\\",\\\"editor.lineHighlightBorder\\\":\\\"#2e323d\\\",\\\"editor.rangeHighlightBackground\\\":\\\"#372F3C\\\",\\\"editor.selectionBackground\\\":\\\"#3D4352\\\",\\\"editor.selectionHighlightBackground\\\":\\\"#4F435580\\\",\\\"editor.wordHighlightBackground\\\":\\\"#4F4355\\\",\\\"editor.wordHighlightStrongBackground\\\":\\\"#db45a280\\\",\\\"editorBracketMatch.background\\\":\\\"#746f77\\\",\\\"editorBracketMatch.border\\\":\\\"#746f77\\\",\\\"editorCodeLens.foreground\\\":\\\"#746f77\\\",\\\"editorCursor.foreground\\\":\\\"#FFF\\\",\\\"editorError.foreground\\\":\\\"#FC644D\\\",\\\"editorGroup.background\\\":\\\"#23262E\\\",\\\"editorGroup.dropBackground\\\":\\\"#495061d7\\\",\\\"editorGroupHeader.tabsBackground\\\":\\\"#23262E\\\",\\\"editorGutter.addedBackground\\\":\\\"#9BC53DBB\\\",\\\"editorGutter.deletedBackground\\\":\\\"#FC644DBB\\\",\\\"editorGutter.modifiedBackground\\\":\\\"#5BC0EBBB\\\",\\\"editorHoverWidget.background\\\":\\\"#373941\\\",\\\"editorHoverWidget.border\\\":\\\"#00e8c5cc\\\",\\\"editorIndentGuide.activeBackground\\\":\\\"#585C66\\\",\\\"editorIndentGuide.background\\\":\\\"#333844\\\",\\\"editorLineNumber.foreground\\\":\\\"#746f77\\\",\\\"editorLink.activeForeground\\\":\\\"#3B79C7\\\",\\\"editorOverviewRuler.border\\\":\\\"#1B1D23\\\",\\\"editorRuler.foreground\\\":\\\"#4F4355\\\",\\\"editorSuggestWidget.background\\\":\\\"#20232A\\\",\\\"editorSuggestWidget.border\\\":\\\"#372F3C\\\",\\\"editorSuggestWidget.selectedBackground\\\":\\\"#373941\\\",\\\"editorWarning.foreground\\\":\\\"#FF9F2E\\\",\\\"editorWhitespace.foreground\\\":\\\"#333844\\\",\\\"editorWidget.background\\\":\\\"#20232A\\\",\\\"errorForeground\\\":\\\"#FC644D\\\",\\\"extensionButton.prominentBackground\\\":\\\"#07d4b6cc\\\",\\\"extensionButton.prominentHoverBackground\\\":\\\"#07d4b5b0\\\",\\\"focusBorder\\\":\\\"#746f77\\\",\\\"foreground\\\":\\\"#D5CED9\\\",\\\"gitDecoration.ignoredResourceForeground\\\":\\\"#555555\\\",\\\"input.background\\\":\\\"#2b303b\\\",\\\"input.placeholderForeground\\\":\\\"#746f77\\\",\\\"inputOption.activeBorder\\\":\\\"#C668BA\\\",\\\"inputValidation.errorBackground\\\":\\\"#D65343\\\",\\\"inputValidation.errorBorder\\\":\\\"#D65343\\\",\\\"inputValidation.infoBackground\\\":\\\"#3A6395\\\",\\\"inputValidation.infoBorder\\\":\\\"#3A6395\\\",\\\"inputValidation.warningBackground\\\":\\\"#DE9237\\\",\\\"inputValidation.warningBorder\\\":\\\"#DE9237\\\",\\\"list.activeSelectionBackground\\\":\\\"#23262E\\\",\\\"list.activeSelectionForeground\\\":\\\"#00e8c6\\\",\\\"list.dropBackground\\\":\\\"#3a404e\\\",\\\"list.focusBackground\\\":\\\"#282b35\\\",\\\"list.focusForeground\\\":\\\"#eee\\\",\\\"list.hoverBackground\\\":\\\"#23262E\\\",\\\"list.hoverForeground\\\":\\\"#eee\\\",\\\"list.inactiveSelectionBackground\\\":\\\"#23262E\\\",\\\"list.inactiveSelectionForeground\\\":\\\"#00e8c6\\\",\\\"merge.currentContentBackground\\\":\\\"#F9267240\\\",\\\"merge.currentHeaderBackground\\\":\\\"#F92672\\\",\\\"merge.incomingContentBackground\\\":\\\"#3B79C740\\\",\\\"merge.incomingHeaderBackground\\\":\\\"#3B79C7BB\\\",\\\"minimapSlider.activeBackground\\\":\\\"#60698060\\\",\\\"minimapSlider.background\\\":\\\"#58607460\\\",\\\"minimapSlider.hoverBackground\\\":\\\"#60698060\\\",\\\"notification.background\\\":\\\"#2d313b\\\",\\\"notification.buttonBackground\\\":\\\"#00e8c5cc\\\",\\\"notification.buttonHoverBackground\\\":\\\"#07d4b5b0\\\",\\\"notification.errorBackground\\\":\\\"#FC644D\\\",\\\"notification.infoBackground\\\":\\\"#00b0ff\\\",\\\"notification.warningBackground\\\":\\\"#FF9F2E\\\",\\\"panel.background\\\":\\\"#23262E\\\",\\\"panel.border\\\":\\\"#1B1D23\\\",\\\"panelTitle.activeBorder\\\":\\\"#23262E\\\",\\\"panelTitle.inactiveForeground\\\":\\\"#746f77\\\",\\\"peekView.border\\\":\\\"#23262E\\\",\\\"peekViewEditor.background\\\":\\\"#1A1C22\\\",\\\"peekViewEditor.matchHighlightBackground\\\":\\\"#FF9F2E60\\\",\\\"peekViewResult.background\\\":\\\"#1A1C22\\\",\\\"peekViewResult.matchHighlightBackground\\\":\\\"#FF9F2E60\\\",\\\"peekViewResult.selectionBackground\\\":\\\"#23262E\\\",\\\"peekViewTitle.background\\\":\\\"#1A1C22\\\",\\\"peekViewTitleDescription.foreground\\\":\\\"#746f77\\\",\\\"pickerGroup.border\\\":\\\"#4F4355\\\",\\\"pickerGroup.foreground\\\":\\\"#746f77\\\",\\\"progressBar.background\\\":\\\"#C668BA\\\",\\\"scrollbar.shadow\\\":\\\"#23262E\\\",\\\"scrollbarSlider.activeBackground\\\":\\\"#3A3F4CCC\\\",\\\"scrollbarSlider.background\\\":\\\"#3A3F4C77\\\",\\\"scrollbarSlider.hoverBackground\\\":\\\"#3A3F4CAA\\\",\\\"selection.background\\\":\\\"#746f77\\\",\\\"sideBar.background\\\":\\\"#23262E\\\",\\\"sideBar.foreground\\\":\\\"#999999\\\",\\\"sideBarSectionHeader.background\\\":\\\"#23262E\\\",\\\"sideBarTitle.foreground\\\":\\\"#00e8c6\\\",\\\"statusBar.background\\\":\\\"#23262E\\\",\\\"statusBar.debuggingBackground\\\":\\\"#FC644D\\\",\\\"statusBar.noFolderBackground\\\":\\\"#23262E\\\",\\\"statusBarItem.activeBackground\\\":\\\"#00e8c5cc\\\",\\\"statusBarItem.hoverBackground\\\":\\\"#07d4b5b0\\\",\\\"statusBarItem.prominentBackground\\\":\\\"#07d4b5b0\\\",\\\"statusBarItem.prominentHoverBackground\\\":\\\"#00e8c5cc\\\",\\\"tab.activeBackground\\\":\\\"#23262e\\\",\\\"tab.activeBorder\\\":\\\"#00e8c6\\\",\\\"tab.activeForeground\\\":\\\"#00e8c6\\\",\\\"tab.inactiveBackground\\\":\\\"#23262E\\\",\\\"tab.inactiveForeground\\\":\\\"#746f77\\\",\\\"terminal.ansiBlue\\\":\\\"#7cb7ff\\\",\\\"terminal.ansiBrightBlue\\\":\\\"#7cb7ff\\\",\\\"terminal.ansiBrightCyan\\\":\\\"#00e8c6\\\",\\\"terminal.ansiBrightGreen\\\":\\\"#96E072\\\",\\\"terminal.ansiBrightMagenta\\\":\\\"#ff00aa\\\",\\\"terminal.ansiBrightRed\\\":\\\"#ee5d43\\\",\\\"terminal.ansiBrightYellow\\\":\\\"#FFE66D\\\",\\\"terminal.ansiCyan\\\":\\\"#00e8c6\\\",\\\"terminal.ansiGreen\\\":\\\"#96E072\\\",\\\"terminal.ansiMagenta\\\":\\\"#ff00aa\\\",\\\"terminal.ansiRed\\\":\\\"#ee5d43\\\",\\\"terminal.ansiYellow\\\":\\\"#FFE66D\\\",\\\"terminalCursor.background\\\":\\\"#23262E\\\",\\\"terminalCursor.foreground\\\":\\\"#FFE66D\\\",\\\"titleBar.activeBackground\\\":\\\"#23262E\\\",\\\"walkThrough.embeddedEditorBackground\\\":\\\"#23262E\\\",\\\"widget.shadow\\\":\\\"#14151A\\\"},\\\"displayName\\\":\\\"Andromeeda\\\",\\\"name\\\":\\\"andromeeda\\\",\\\"semanticTokenColors\\\":{\\\"property.declaration:javascript\\\":\\\"#D5CED9\\\",\\\"variable.defaultLibrary:javascript\\\":\\\"#f39c12\\\"},\\\"tokenColors\\\":[{\\\"settings\\\":{\\\"background\\\":\\\"#23262E\\\",\\\"foreground\\\":\\\"#D5CED9\\\"}},{\\\"scope\\\":[\\\"comment\\\",\\\"markup.quote.markdown\\\",\\\"meta.diff\\\",\\\"meta.diff.header\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#A0A1A7cc\\\"}},{\\\"scope\\\":[\\\"meta.template.expression.js\\\",\\\"constant.name.attribute.tag.jade\\\",\\\"punctuation.definition.metadata.markdown\\\",\\\"punctuation.definition.string.end.markdown\\\",\\\"punctuation.definition.string.begin.markdown\\\",\\\"string.unquoted.cmake\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#D5CED9\\\"}},{\\\"scope\\\":[\\\"variable\\\",\\\"support.variable\\\",\\\"entity.name.tag.yaml\\\",\\\"constant.character.entity.html\\\",\\\"source.css entity.name.tag.reference\\\",\\\"beginning.punctuation.definition.list.markdown\\\",\\\"source.css entity.other.attribute-name.parent-selector\\\",\\\"meta.structure.dictionary.json support.type.property-name\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#00e8c6\\\"}},{\\\"scope\\\":[\\\"markup.bold\\\",\\\"constant.numeric\\\",\\\"meta.group.regexp\\\",\\\"constant.other.php\\\",\\\"support.constant.ext.php\\\",\\\"constant.other.class.php\\\",\\\"support.constant.core.php\\\",\\\"fenced_code.block.language\\\",\\\"constant.other.caps.python\\\",\\\"entity.other.attribute-name\\\",\\\"support.type.exception.python\\\",\\\"source.css keyword.other.unit\\\",\\\"variable.other.object.property.js.jsx\\\",\\\"variable.other.object.js\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#f39c12\\\"}},{\\\"scope\\\":[\\\"markup.list\\\",\\\"text.xml string\\\",\\\"entity.name.type\\\",\\\"support.function\\\",\\\"entity.other.attribute-name\\\",\\\"meta.at-rule.extend\\\",\\\"entity.name.function\\\",\\\"entity.other.inherited-class\\\",\\\"entity.other.keyframe-offset.css\\\",\\\"text.html.markdown string.quoted\\\",\\\"meta.function-call.generic.python\\\",\\\"meta.at-rule.extend support.constant\\\",\\\"entity.other.attribute-name.class.jade\\\",\\\"source.css entity.other.attribute-name\\\",\\\"text.xml punctuation.definition.string\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#FFE66D\\\"}},{\\\"scope\\\":[\\\"markup.heading\\\",\\\"variable.language.this.js\\\",\\\"variable.language.special.self.python\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#ff00aa\\\"}},{\\\"scope\\\":[\\\"punctuation.definition.interpolation\\\",\\\"punctuation.section.embedded.end.php\\\",\\\"punctuation.section.embedded.end.ruby\\\",\\\"punctuation.section.embedded.begin.php\\\",\\\"punctuation.section.embedded.begin.ruby\\\",\\\"punctuation.definition.template-expression\\\",\\\"entity.name.tag\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#f92672\\\"}},{\\\"scope\\\":[\\\"storage\\\",\\\"keyword\\\",\\\"meta.link\\\",\\\"meta.image\\\",\\\"markup.italic\\\",\\\"source.js support.type\\\",\\\"support.type\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#c74ded\\\"}},{\\\"scope\\\":[\\\"string.regexp\\\",\\\"markup.changed\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#7cb7ff\\\"}},{\\\"scope\\\":[\\\"constant\\\",\\\"support.class\\\",\\\"keyword.operator\\\",\\\"support.constant\\\",\\\"text.html.markdown string\\\",\\\"source.css support.function\\\",\\\"source.php support.function\\\",\\\"support.function.magic.python\\\",\\\"entity.other.attribute-name.id\\\",\\\"markup.deleted\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#ee5d43\\\"}},{\\\"scope\\\":[\\\"string\\\",\\\"text.html.php string\\\",\\\"markup.inline.raw\\\",\\\"markup.inserted\\\",\\\"punctuation.definition.string\\\",\\\"punctuation.definition.markdown\\\",\\\"text.html meta.embedded source.js string\\\",\\\"text.html.php punctuation.definition.string\\\",\\\"text.html meta.embedded source.js punctuation.definition.string\\\",\\\"text.html punctuation.definition.string\\\",\\\"text.html string\\\"],\\\"settings\\\":{\\\"foreground\\\":\\\"#96E072\\\"}},{\\\"scope\\\":[\\\"entity.other.inherited-class\\\"],\\\"settings\\\":{\\\"fontStyle\\\":\\\"underline\\\"}}],\\\"type\\\":\\\"dark\\\"}\"))\n"],"names":["andromeeda"],"mappings":"AACA,MAAAA,EAAe,OAAO,OAAO,KAAK,MAAM,6vRAAinT,CAAC","x_google_ignoreList":[0]}