@crisp-ui-kit/crisp 0.54.11 → 0.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/cjs/components/datatable/datatable.js +130 -38
  2. package/dist/cjs/components/resizablepanel/resizablepanel.js +10 -1
  3. package/dist/cjs/components/table/table.js +8 -1
  4. package/dist/cjs/components/tabletoolbar/tabletoolbar.js +110 -27
  5. package/dist/cjs/index.js +0 -2
  6. package/dist/cjs/product/recordpage/index.js +6 -1
  7. package/dist/cjs/product/recordpage/recordpage.js +20 -4
  8. package/dist/esm/components/datatable/datatable.js +131 -39
  9. package/dist/esm/components/resizablepanel/resizablepanel.js +10 -1
  10. package/dist/esm/components/table/table.js +8 -1
  11. package/dist/esm/components/tabletoolbar/tabletoolbar.js +111 -28
  12. package/dist/esm/index.js +0 -2
  13. package/dist/esm/product/recordpage/index.js +2 -0
  14. package/dist/esm/product/recordpage/recordpage.js +20 -4
  15. package/dist/styles.css +0 -272
  16. package/dist/styles.layered.css +0 -272
  17. package/dist/types/components/table/table.d.ts +14 -0
  18. package/dist/types/index.d.ts +0 -2
  19. package/dist/types/product/recordpage/index.d.ts +2 -0
  20. package/package.json +2 -12
  21. package/dist/cjs/product/recordstable/company-logos.js +0 -29
  22. package/dist/cjs/product/recordstable/index.js +0 -13
  23. package/dist/cjs/product/recordstable/recordstable.js +0 -1362
  24. package/dist/cjs/product/recordstable/recordstable.recipe.js +0 -175
  25. package/dist/cjs/product/recordstable/recordstable.tag.js +0 -26
  26. package/dist/cjs/product/taskstable/index.js +0 -7
  27. package/dist/cjs/product/taskstable/taskstable.js +0 -32
  28. package/dist/cjs/product/taskstable/taskstable.recipe.js +0 -56
  29. package/dist/esm/product/recordstable/company-logos.js +0 -26
  30. package/dist/esm/product/recordstable/index.js +0 -3
  31. package/dist/esm/product/recordstable/recordstable.js +0 -1322
  32. package/dist/esm/product/recordstable/recordstable.recipe.js +0 -172
  33. package/dist/esm/product/recordstable/recordstable.tag.js +0 -23
  34. package/dist/esm/product/taskstable/index.js +0 -2
  35. package/dist/esm/product/taskstable/taskstable.js +0 -29
  36. package/dist/esm/product/taskstable/taskstable.recipe.js +0 -53
  37. package/dist/recordstable.css +0 -240
  38. package/dist/recordstable.d.ts +0 -7
  39. package/dist/recordstable.layered.css +0 -242
  40. package/dist/taskstable.css +0 -30
  41. package/dist/taskstable.d.ts +0 -7
  42. package/dist/taskstable.layered.css +0 -32
  43. package/dist/types/product/recordstable/company-logos.d.ts +0 -1
  44. package/dist/types/product/recordstable/index.d.ts +0 -3
  45. package/dist/types/product/recordstable/recordstable.d.ts +0 -294
  46. package/dist/types/product/recordstable/recordstable.recipe.d.ts +0 -5
  47. package/dist/types/product/recordstable/recordstable.tag.d.ts +0 -15
  48. package/dist/types/product/taskstable/index.d.ts +0 -2
  49. package/dist/types/product/taskstable/taskstable.d.ts +0 -59
  50. package/dist/types/product/taskstable/taskstable.recipe.d.ts +0 -3
@@ -2988,247 +2988,6 @@
2988
2988
  }
2989
2989
  }
2990
2990
 
2991
- .crisp-recordstable {
2992
- box-sizing: border-box; position: relative; display: flex; flex-direction: column; min-height: 0; height: 100%; width: 100%; font-family: var(--crisp-font-sans); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
2993
- & * { box-sizing: border-box; }
2994
- /* toolbar */
2995
- & .crisp-recordstable-toolbar { display: flex; align-items: center; gap: var(--crisp-space-2); padding: 0 var(--crisp-space-3) var(--crisp-space-2); }
2996
- & .crisp-recordstable-toolbar[data-inline] { padding-bottom: 0; }
2997
- & .crisp-recordstable-search { display: flex; align-items: center; gap: var(--crisp-space-1-5); height: var(--crisp-size-row); padding: 0 var(--crisp-space-2-5); border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-border-subtle); color: var(--crisp-fg-muted); }
2998
- & .crisp-recordstable-search svg { flex-shrink: 0; }
2999
- & .crisp-recordstable-search input { border: none; outline: none; background: transparent; font-family: inherit; font-size: var(--crisp-text-md); color: var(--crisp-fg-primary); width: 180px; }
3000
- & .crisp-recordstable-search input::placeholder { color: var(--crisp-fg-muted); }
3001
- & .crisp-recordstable-tool { display: inline-flex; align-items: center; gap: var(--crisp-space-1); height: var(--crisp-size-row); margin: 0; padding: 0 var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-border-divider); color: var(--crisp-fg-primary); font-family: inherit; font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); white-space: nowrap; cursor: pointer; transition: background-color .12s; }
3002
- & .crisp-recordstable-tool:hover { background: var(--crisp-bg-raised); }
3003
- & .crisp-recordstable-tool svg { flex-shrink: 0; color: var(--crisp-fg-muted); }
3004
- /* crisp/#772: re-measured live on Sort with an actual sort applied -- an active trigger's own fill is white (bgSurface), the same as the
3005
- base .tool rule above now already sets; this override existed to
3006
- distinguish active from a base state that used to be transparent.
3007
- Kept explicit (not just deleted) so a future change to the base
3008
- rule's background can't silently change this one too. */
3009
- & .crisp-recordstable-tool--active { background: var(--crisp-bg-surface); }
3010
- & .crisp-recordstable-tool--ghost { box-shadow: none; background: color-mix(in srgb, var(--crisp-fg-primary) 3%, transparent); color: var(--crisp-fg-muted); }
3011
- & .crisp-recordstable-tool--ghost:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); }
3012
- /* crisp/#772 follow-up, re-measured live 2026-09-25: an EMPTY Sort/Filter
3013
- trigger (no sort/condition set) isn't a solid-ring chip at all -- it's
3014
- a dashed ::before (1px dashed, border-radius: inherit, absolutely
3015
- positioned inset: 0) over a barely-there fill, confirmed on Attio's own empty Filter chip (its ::before border computes to exactly "1px dashed rgba(0, 0, 0, 0.06)"). Once a value IS set, the trigger drops the dashed pseudo and picks up the base tool's own solid ring
3016
- instead (the --active modifier, unchanged) -- confirmed on Sort with
3017
- an actual sort applied. color-mix (not the raw rgba Attio computes
3018
- to) so both the border and the fill flip correctly in dark mode, the
3019
- same reasoning --ghost above already uses. Only wired into
3020
- TableToolbar itself (tabletoolbar.tsx) this pass -- RecordsTable's own Sort/Filter triggers share this same chrome function but are deprecated, not touched here. */
3021
- & .crisp-recordstable-tool--dashed { position: relative; box-shadow: none; background: color-mix(in srgb, var(--crisp-fg-primary) 2%, transparent); }
3022
- & .crisp-recordstable-tool--dashed::before { content: ""; position: absolute; inset: 0; border-radius: inherit; border: 1px dashed color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); pointer-events: none; }
3023
- & .crisp-recordstable-tool--dashed:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, transparent); }
3024
- & .crisp-recordstable-toolgroup { position: relative; display: inline-flex; }
3025
- & .crisp-recordstable-divider { flex-shrink: 0; width: 1px; height: 20px; background: var(--crisp-border-subtle); }
3026
- & .crisp-recordstable-menu { position: absolute; top: calc(100% + var(--crisp-space-1)); left: 0; z-index: 30; min-width: 232px; padding: var(--crisp-space-1); border-radius: var(--crisp-radius-xl); background: var(--crisp-bg-popover); box-shadow: inset 0 0 0 1px var(--crisp-ring-popover), 0 0 0 1px var(--crisp-shadow-popover1), 0 4px 8px -4px var(--crisp-shadow-popover2), 0 4px 12px -2px var(--crisp-shadow-popover3); display: flex; flex-direction: column; gap: var(--crisp-space-px); transform-origin: top; opacity: 1; transform: none; transition: opacity .13s ease, transform .13s ease; }
3027
- & .crisp-recordstable-menu { @starting-style { opacity: 0; transform: scale(0.96); } }
3028
- & .crisp-recordstable-ctx { z-index: 60; }
3029
- & .crisp-recordstable-th[data-drop] { box-shadow: inset 2px 0 0 var(--crisp-bg-brand-solid); }
3030
- & .crisp-recordstable-th-inner[draggable="true"]:active { cursor: grabbing; }
3031
- & .crisp-recordstable-menu-head { padding: var(--crisp-space-1) var(--crisp-space-2) var(--crisp-space-0-5); font-size: var(--crisp-text-sm); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-muted); }
3032
- & .crisp-recordstable-sortpop { min-width: 480px; overflow: visible; padding: var(--crisp-space-3) var(--crisp-space-1-5); gap: var(--crisp-space-2); }
3033
- & .crisp-recordstable-sort-empty { padding: var(--crisp-space-1) var(--crisp-space-1) var(--crisp-space-2); font-size: var(--crisp-text-md); color: var(--crisp-fg-muted); }
3034
- & .crisp-recordstable-sort-row { display: flex; align-items: center; gap: var(--crisp-space-1-5); }
3035
- & .crisp-recordstable-sort-grip { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 28px; flex-shrink: 0; margin-right: calc(-1 * var(--crisp-space-1)); padding: 0; border: none; background: none; color: var(--crisp-fg-muted); cursor: grab; }
3036
- & .crisp-recordstable-sort-grip:active { cursor: grabbing; }
3037
- & .crisp-recordstable-sort-grip:hover { color: var(--crisp-fg-primary); }
3038
- & .crisp-recordstable-sort-optlabel { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); min-width: 0; }
3039
- & .crisp-recordstable-sort-optlabel svg { flex-shrink: 0; color: var(--crisp-fg-muted); }
3040
- & .crisp-recordstable-sort-field { flex: 1; min-width: 0; }
3041
- & .crisp-recordstable-sort-dir { width: 136px; flex-shrink: 0; }
3042
- & .crisp-recordstable-sort-field .crisp-select-trigger, & .crisp-recordstable-sort-dir .crisp-select-trigger { height: 28px; padding-right: var(--crisp-space-1); }
3043
- & .crisp-recordstable-sort-remove { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; flex-shrink: 0; padding: 0; margin: 0; border: none; border-radius: var(--crisp-radius-md); background: none; color: var(--crisp-fg-muted); cursor: pointer; transition: background-color .12s, color .12s; }
3044
- & .crisp-recordstable-sort-remove:hover { background: var(--crisp-bg-raised); color: var(--crisp-fg-primary); }
3045
- & .crisp-recordstable-sort-addrow { display: flex; padding: var(--crisp-space-0-5) 0; }
3046
- & .crisp-recordstable-sort-add { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); height: 28px; padding: 0 var(--crisp-space-2) 0 var(--crisp-space-1-5); margin: 0; border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-ring-neutral), 0 0 2px rgba(28,40,64,0.18), 0 1px 3px rgba(0,0,0,0.04); font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-regular); color: var(--crisp-fg-primary); cursor: pointer; transition: background-color .12s; }
3047
- & .crisp-recordstable-sort-add:hover { background: var(--crisp-bg-raised); }
3048
- & .crisp-recordstable-sort-add svg { flex-shrink: 0; color: var(--crisp-fg-muted); }
3049
- & .crisp-recordstable-sort-foot { display: flex; padding: var(--crisp-space-1-5) var(--crisp-space-1) var(--crisp-space-0-5); }
3050
- & .crisp-recordstable-sort-learn { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); font-size: var(--crisp-text-lg); color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); text-decoration: none; }
3051
- & .crisp-recordstable-sort-learn svg { flex-shrink: 0; }
3052
- & .crisp-recordstable-sort-learn:hover { color: var(--crisp-fg-primary); }
3053
- & .crisp-recordstable-menu-item { display: flex; align-items: center; gap: var(--crisp-space-1-5); width: 100%; height: var(--crisp-size-menuRow); margin: 0; padding: 0 var(--crisp-space-2); border: none; background: none; border-radius: var(--crisp-radius-md); font-family: inherit; font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-primary); text-align: left; text-decoration: none; cursor: pointer; }
3054
- & .crisp-recordstable-menu-item:hover { background: var(--crisp-bg-raised); }
3055
- & .crisp-recordstable-menu-item:disabled { opacity: 0.4; cursor: default; }
3056
- & .crisp-recordstable-menu-item:disabled:hover { background: none; }
3057
- & .crisp-recordstable-menu-item svg { flex-shrink: 0; color: var(--crisp-fg-muted); }
3058
- & .crisp-recordstable-menu-item[data-on] svg { color: var(--crisp-bg-brand-solid); }
3059
- & .crisp-recordstable-menu-item .crisp-recordstable-menu-check { margin-left: auto; }
3060
- & .crisp-recordstable-menu-input { height: var(--crisp-size-row); margin: var(--crisp-space-0-5); padding: 0 var(--crisp-space-2); border: none; border-radius: var(--crisp-radius-md); box-shadow: inset 0 0 0 1px var(--crisp-border-subtle); background: var(--crisp-bg-surface); font-family: inherit; font-size: var(--crisp-text-lg); color: var(--crisp-fg-primary); outline: none; }
3061
- & .crisp-recordstable-menu-sep { height: 1px; border: none; background: var(--crisp-border-subtle); margin: var(--crisp-space-0-5) 0; }
3062
- /* #592: the Filter field picker's nested-scope header (back control +
3063
- search, once drilled into a nestedColumns column) and a search
3064
- result's own breadcrumb row ("Team › Twitter follower count", surfaced by the SAME query matching a nested column). menu-back reuses the established 28px icon-only control pattern this file already uses twice (sort-remove, the kebab segment) rather than an independent measurement of Attio's own back arrow. The breadcrumb
3065
- colours ARE measured live: the parent segment muted at the same
3066
- exact color-mix 63% sort-learn above already uses, the
3067
- separator chevron and leaf segment both full fgPrimary (the
3068
- generic menu-item svg rule below defaults every icon to
3069
- fgMuted, so the separator needs its own override to read
3070
- correctly here). */
3071
- & .crisp-recordstable-menu-nesthead { display: flex; align-items: center; gap: var(--crisp-space-1); margin: var(--crisp-space-0-5); }
3072
- & .crisp-recordstable-menu-nesthead .crisp-recordstable-menu-input { flex: 1; margin: 0; }
3073
- & .crisp-recordstable-menu-back { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; flex-shrink: 0; padding: 0; border: none; border-radius: var(--crisp-radius-md); background: none; color: var(--crisp-fg-muted); cursor: pointer; }
3074
- & .crisp-recordstable-menu-back:hover { background: var(--crisp-bg-raised); color: var(--crisp-fg-primary); }
3075
- & .crisp-recordstable-menu-item--expand { justify-content: space-between; }
3076
- & .crisp-recordstable-menu-item-path { display: inline-flex; align-items: center; gap: 2px; min-width: 0; overflow: hidden; }
3077
- & .crisp-recordstable-menu-item-path-parent { flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; max-width: 100px; color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); }
3078
- & .crisp-recordstable-menu-item-path-sep { flex-shrink: 0; color: var(--crisp-fg-primary); }
3079
- & .crisp-recordstable-menu-item-path > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
3080
- & .crisp-recordstable-menu--up { top: auto; bottom: calc(100% + var(--crisp-space-1)); transform-origin: bottom; }
3081
- & .crisp-recordstable-menu--right { left: auto; right: 0; }
3082
- & .crisp-recordstable-menu--fixed { position: fixed; top: auto; left: auto; z-index: 40; }
3083
- & .crisp-recordstable-menu--hdr { min-width: 200px; }
3084
- & .crisp-recordstable-menu--op { min-width: 0; }
3085
- & .crisp-recordstable-menu-item--danger { color: var(--crisp-bg-danger); }
3086
- & .crisp-recordstable-menu-item--danger svg { color: var(--crisp-bg-danger); }
3087
- & .crisp-recordstable-menu-item--danger:hover { background: color-mix(in srgb, var(--crisp-bg-danger) 10%, transparent); }
3088
- & .crisp-recordstable-menu-check { margin-left: auto; color: var(--crisp-bg-brand-solid); }
3089
- & .crisp-recordstable-fchip { display: inline-flex; align-items: center; height: var(--crisp-size-row); padding-right: var(--crisp-space-1); border-radius: var(--crisp-radius-md); box-shadow: inset 0 0 0 1px var(--crisp-border-default); background: var(--crisp-bg-surface); font-size: var(--crisp-text-md); color: var(--crisp-fg-primary); white-space: nowrap; }
3090
- & .crisp-recordstable-fchip-main { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); height: 100%; margin: 0; padding: 0 var(--crisp-space-1) 0 var(--crisp-space-2); border: none; background: none; font-family: inherit; font-size: var(--crisp-text-md); color: var(--crisp-fg-primary); cursor: pointer; }
3091
- & .crisp-recordstable-fchip-field { font-weight: var(--crisp-weight-medium); }
3092
- & .crisp-recordstable-fchip-op { color: var(--crisp-fg-muted); }
3093
- & .crisp-recordstable-fchip-val { font-weight: var(--crisp-weight-medium); max-width: 140px; overflow: hidden; text-overflow: ellipsis; }
3094
- & .crisp-recordstable-fchip-x { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; padding: 0; border: none; border-radius: var(--crisp-radius-sm); background: none; color: var(--crisp-fg-muted); cursor: pointer; }
3095
- & .crisp-recordstable-fchip-x:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 10%, transparent); color: var(--crisp-fg-primary); }
3096
- & .crisp-recordstable-spacer { flex: 1; }
3097
- & .crisp-recordstable-count { font-size: var(--crisp-text-md); color: var(--crisp-fg-muted); }
3098
- & .crisp-recordstable-new { display: inline-flex; align-items: center; gap: var(--crisp-space-1); height: var(--crisp-size-row); padding: 0 var(--crisp-space-2-5); border: none; border-radius: var(--crisp-radius-md); background: var(--crisp-bg-brand-solid); color: var(--crisp-fg-on-brand); font-family: inherit; font-size: var(--crisp-text-md); font-weight: var(--crisp-weight-medium); cursor: pointer; transition: background-color .12s; }
3099
- & .crisp-recordstable-new:hover { background: var(--crisp-bg-brand-solid-pressed); }
3100
-
3101
- /* scroll frame + table */
3102
- & .crisp-recordstable-scroll { flex: 1; min-height: 0; overflow: auto; background: var(--crisp-bg-surface); border-top: 1px solid var(--crisp-border-subtle); scrollbar-width: thin; scrollbar-color: color-mix(in srgb, var(--crisp-fg-primary) 22%, transparent) transparent; }
3103
- & .crisp-recordstable-scroll::-webkit-scrollbar { width: 10px; height: 10px; }
3104
- & .crisp-recordstable-scroll::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--crisp-fg-primary) 20%, transparent); border-radius: var(--crisp-radius-full); border: 2px solid var(--crisp-bg-surface); background-clip: padding-box; }
3105
- & .crisp-recordstable-scroll::-webkit-scrollbar-thumb:hover { background: color-mix(in srgb, var(--crisp-fg-primary) 34%, transparent); background-clip: padding-box; }
3106
- & .crisp-recordstable-scroll::-webkit-scrollbar-corner { background: transparent; }
3107
- & .crisp-recordstable-table { table-layout: fixed; border-collapse: separate; border-spacing: 0; }
3108
- & .crisp-recordstable-th, & .crisp-recordstable-td { position: relative; height: var(--crisp-size-tableRow); padding: 0 var(--crisp-space-2); border-bottom: 1px solid var(--crisp-border-subtle); border-inline-end: 1px solid var(--crisp-border-subtle); text-align: start; white-space: nowrap; overflow: hidden; }
3109
- & .crisp-recordstable-th { position: sticky; top: 0; z-index: 2; padding: 0; height: var(--crisp-size-tableHeader); background: var(--crisp-bg-surface); font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); letter-spacing: -0.14px; color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); user-select: none; }
3110
- & .crisp-recordstable-th-inner { display: flex; align-items: center; gap: var(--crisp-space-1-5); width: 100%; height: 100%; margin: 0; padding: 0 var(--crisp-space-2); border: none; background: none; color: inherit; font: inherit; letter-spacing: inherit; text-align: start; cursor: pointer; }
3111
- & .crisp-recordstable-th-inner svg { flex-shrink: 0; color: color-mix(in srgb, var(--crisp-fg-primary) 45%, transparent); }
3112
- & .crisp-recordstable-th-label { flex: 1; overflow: hidden; text-overflow: ellipsis; }
3113
- & .crisp-recordstable-th-rename { width: 100%; min-width: 0; height: 100%; margin: 0; padding: 0; border: none; outline: none; background: none; color: inherit; font: inherit; letter-spacing: inherit; }
3114
- & .crisp-recordstable-th-rename:focus { box-shadow: inset 0 0 0 1px var(--crisp-bg-brand-solid); }
3115
- & .crisp-recordstable-sort { flex-shrink: 0; opacity: 0.4; transition: opacity .12s; color: color-mix(in srgb, var(--crisp-fg-primary) 45%, transparent); }
3116
- & .crisp-recordstable-th:hover .crisp-recordstable-sort, & .crisp-recordstable-th[data-sorted] .crisp-recordstable-sort { opacity: 1; }
3117
- & .crisp-recordstable-th[data-sorted="desc"] .crisp-recordstable-sort svg { transform: rotate(180deg); }
3118
-
3119
- /* column resize handle */
3120
- & .crisp-recordstable-resize { position: absolute; top: 0; inset-inline-end: -3px; width: 9px; height: 100%; cursor: col-resize; z-index: 6; touch-action: none; }
3121
- & .crisp-recordstable-resize::after { content: ""; position: absolute; top: 0; inset-inline-start: 3px; width: 2px; height: 100%; background: var(--crisp-bg-brand-solid); opacity: 0; transition: opacity .12s; }
3122
- & .crisp-recordstable-resize:hover::after, & .crisp-recordstable-resize[data-resizing]::after { opacity: 1; }
3123
-
3124
- /* add-column header */
3125
- & .crisp-recordstable-addcol { min-width: 44px; }
3126
- & .crisp-recordstable-addcol button { display: flex; align-items: center; justify-content: center; width: 44px; height: 100%; border: none; background: none; color: var(--crisp-fg-muted); cursor: pointer; }
3127
- & .crisp-recordstable-addcol button:hover { background: var(--crisp-bg-raised); color: var(--crisp-fg-primary); }
3128
-
3129
- /* cells */
3130
- /* font-weight is explicit because the first cell of each row is a
3131
- th[scope=row] — the record's name is what the row IS — and a th defaults to bold. Measured before the change and unchanged after: 400. */
3132
- & .crisp-recordstable-td { font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-regular); color: var(--crisp-fg-primary); background: var(--crisp-bg-surface); cursor: default; }
3133
- & .crisp-recordstable-td--editable { cursor: text; }
3134
- /* keyboard/click cell selection (spreadsheet-style) */
3135
- & .crisp-recordstable-td[data-selected] { outline: 2px solid var(--crisp-bg-brand-solid); outline-offset: -2px; border-radius: var(--crisp-radius-sm); z-index: 3; }
3136
- & .crisp-recordstable-scroll:focus { outline: none; }
3137
- /* picker cells (status / date / reference) host a ghost control edge-to-edge */
3138
- & .crisp-recordstable-td--picker { padding: 0; }
3139
- & .crisp-recordstable-td--picker .crisp-select-trigger, & .crisp-recordstable-td--picker .crisp-datepicker-trigger, & .crisp-recordstable-td--picker .crisp-multiselect-trigger { width: 100%; height: 100%; min-height: 0; border-radius: 0; box-shadow: none; padding: 0 var(--crisp-space-2); }
3140
- & .crisp-recordstable-td--picker .crisp-multiselect-trigger:hover { background: none; }
3141
- & .crisp-recordstable-td--picker .crisp-multiselect-trigger[data-open] { box-shadow: inset 0 0 0 1.5px var(--crisp-bg-brand-solid); }
3142
- /* tag cell: one compact clipped line of full chips, no chevron (opens the picker on click) */
3143
- & .crisp-recordstable-td--picker .crisp-multiselect-chips { flex-wrap: nowrap; overflow: hidden; }
3144
- & .crisp-recordstable-td--picker .crisp-multiselect-chips .crisp-recordstable-tag { flex-shrink: 0; max-width: none; }
3145
- & .crisp-recordstable-td--picker .crisp-multiselect-chevron { display: none; }
3146
- & .crisp-recordstable-td--picker .crisp-multiselect-placeholder { color: var(--crisp-fg-muted); }
3147
- /* reference picker: a leading 16px avatar per option, plus a trailing "Create X" row when the consumer supplies one (#449) -- measured live against Attio's own picker (16px circular avatar, 16px plain icon for
3148
- the create row, both sitting in the option's existing 8px gap, no new gap value invented). */
3149
- & .crisp-recordstable-refoption { display: flex; align-items: center; gap: var(--crisp-space-2); min-width: 0; overflow: hidden; text-overflow: ellipsis; }
3150
- & .crisp-recordstable-refoption-avatar { flex-shrink: 0; }
3151
- & .crisp-recordstable-refoption--create { color: var(--crisp-fg-muted); }
3152
- & .crisp-recordstable-status { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); min-width: 0; }
3153
- & .crisp-recordstable-status-dot { flex-shrink: 0; width: 8px; height: 8px; border-radius: var(--crisp-radius-full); }
3154
- & .crisp-recordstable-cell { display: flex; align-items: center; gap: var(--crisp-space-2); height: 100%; min-width: 0; }
3155
- & .crisp-recordstable-cell--num { justify-content: flex-end; font-variant-numeric: tabular-nums; }
3156
- & .crisp-recordstable-cell--tags { gap: var(--crisp-space-1); }
3157
- & .crisp-recordstable-tag { display: inline-flex; align-items: center; height: var(--crisp-size-chip); padding: 0 var(--crisp-space-1); border-radius: var(--crisp-radius-chip); font-size: var(--crisp-text-lg); line-height: 20px; font-weight: var(--crisp-weight-medium); white-space: nowrap; background: color-mix(in srgb, var(--crisp-fg-primary) 6%, transparent); color: color-mix(in srgb, var(--crisp-fg-primary) 82%, transparent); box-shadow: inset 0 0 0 1px var(--crisp-border-subtle); }
3158
- & .crisp-recordstable-tag[data-tone="brand"] { background: color-mix(in srgb, var(--crisp-bg-brand-solid) 14%, transparent); color: color-mix(in srgb, var(--crisp-bg-brand-solid) 82%, var(--crisp-fg-primary)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-bg-brand-solid) 30%, transparent); }
3159
- & .crisp-recordstable-tag[data-tone="success"] { background: color-mix(in srgb, var(--crisp-bg-success) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-success) 78%, var(--crisp-fg-primary)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-bg-success) 30%, transparent); }
3160
- & .crisp-recordstable-tag[data-tone="warning"] { background: color-mix(in srgb, var(--crisp-bg-warning) 18%, transparent); color: color-mix(in srgb, var(--crisp-bg-warning) 82%, var(--crisp-fg-primary)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-bg-warning) 30%, transparent); }
3161
- & .crisp-recordstable-tag[data-tone="danger"] { background: color-mix(in srgb, var(--crisp-bg-danger) 15%, transparent); color: color-mix(in srgb, var(--crisp-bg-danger) 80%, var(--crisp-fg-primary)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-bg-danger) 30%, transparent); }
3162
- & .crisp-recordstable-tag[data-tone="purple"] { background: color-mix(in srgb, var(--crisp-bg-purple) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-purple) 80%, var(--crisp-fg-primary)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-bg-purple) 30%, transparent); }
3163
- & .crisp-recordstable-tag[data-tone="cyan"] { background: color-mix(in srgb, var(--crisp-bg-cyan) 18%, transparent); color: color-mix(in srgb, var(--crisp-bg-cyan) 82%, var(--crisp-fg-primary)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-bg-cyan) 30%, transparent); }
3164
- & .crisp-recordstable-tag[data-tone="orange"] { background: color-mix(in srgb, var(--crisp-bg-orange) 16%, transparent); color: color-mix(in srgb, var(--crisp-bg-orange) 82%, var(--crisp-fg-primary)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-bg-orange) 30%, transparent); }
3165
- & .crisp-recordstable-muted { color: var(--crisp-fg-muted); }
3166
- & .crisp-recordstable-entity { display: flex; align-items: center; gap: var(--crisp-space-1-5); min-width: 0; color: var(--crisp-fg-primary); font-weight: var(--crisp-weight-medium); text-decoration: none; }
3167
- & .crisp-recordstable-entity:hover .crisp-recordstable-entity-name { text-decoration: underline; }
3168
- & .crisp-recordstable-entity-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
3169
- & button.crisp-recordstable-entity-name--link { margin: 0; padding: 0; border: none; background: none; font: inherit; color: inherit; letter-spacing: inherit; text-align: start; cursor: pointer; max-width: 100%; }
3170
- & .crisp-recordstable-fav { width: var(--crisp-size-icon); height: var(--crisp-size-icon); border-radius: var(--crisp-radius-sm); flex-shrink: 0; object-fit: cover; background: var(--crisp-bg-raised); }
3171
- & .crisp-recordstable-open { position: absolute; inset-inline-end: var(--crisp-space-1); top: 50%; transform: translateY(-50%); display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; padding: 0; border: none; border-radius: var(--crisp-radius-sm); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px var(--crisp-border-default); color: var(--crisp-fg-muted); font-family: inherit; cursor: pointer; opacity: 0; transition: opacity .12s, background-color .12s; z-index: 3; }
3172
- & .crisp-recordstable-open:hover { background: var(--crisp-bg-raised); color: var(--crisp-fg-primary); }
3173
- & tbody tr:hover .crisp-recordstable-open { opacity: 1; }
3174
- & .crisp-recordstable-link { color: var(--crisp-fg-primary); text-decoration: none; overflow: hidden; text-overflow: ellipsis; }
3175
- & .crisp-recordstable-link:hover { text-decoration: underline; }
3176
- /* inline edit input */
3177
- & .crisp-recordstable-edit { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; padding: 0 var(--crisp-space-2); border: none; outline: 2px solid var(--crisp-bg-brand-solid); outline-offset: -2px; border-radius: var(--crisp-radius-sm); background: var(--crisp-bg-surface); font-family: inherit; font-size: var(--crisp-text-lg); color: var(--crisp-fg-primary); z-index: 5; }
3178
- & .crisp-recordstable-edit--num { text-align: end; font-variant-numeric: tabular-nums; }
3179
- /* selection / hover / sticky */
3180
- & .crisp-recordstable-col-check { width: 40px; min-width: 40px; padding: 0; }
3181
- & .crisp-recordstable-check-inner { display: flex; align-items: center; justify-content: center; height: 100%; }
3182
- & .crisp-recordstable-col-check, & .crisp-recordstable-col-entity { position: sticky; z-index: 3; background: var(--crisp-bg-surface); }
3183
- /* The sticky pin is a LOGICAL offset: with physical `left` these columns were not pinned at all under RTL -- scrolled, they left the viewport entirely (measured: viewport 13..773, check column at x=1333). Nothing in JS measures these, so converting them is safe; the two properties below that have no logical form get an explicit RTL rule rather than being left to point the wrong way. */
3184
- & .crisp-recordstable-col-check { inset-inline-start: 0; }
3185
- & .crisp-recordstable-col-entity { inset-inline-start: 40px; clip-path: inset(0 -38px 0 0); transition: box-shadow .2s ease; }
3186
- [dir="rtl"] & .crisp-recordstable-col-entity { clip-path: inset(0 0 0 -38px); }
3187
- & thead .crisp-recordstable-col-check, & thead .crisp-recordstable-col-entity { z-index: 4; }
3188
- /* soft shadow on the sticky column edge once the grid is scrolled horizontally */
3189
- & .crisp-recordstable-scroll[data-scrolled] .crisp-recordstable-col-entity { box-shadow: 6px 0 16px 4px rgba(0,0,0,0.12); }
3190
- /* box-shadow has no logical form either: the bleed follows the scrolled content, which is the opposite side under RTL. */
3191
- [dir="rtl"] & .crisp-recordstable-scroll[data-scrolled] .crisp-recordstable-col-entity { box-shadow: -6px 0 16px 4px rgba(0,0,0,0.12); }
3192
- /* AI-enriched values carry a purple wash. Measured live: a full-bleed overlay at #9b69ff 4% (== bgPurple), composited OVER whatever row-state background the cell already has, which is why it is an ::after and not a background. */
3193
- & .crisp-recordstable-td[data-enriched]::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: color-mix(in srgb, var(--crisp-bg-purple) 4%, transparent); }
3194
- & tbody tr:hover .crisp-recordstable-td { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, var(--crisp-bg-surface)); }
3195
- & tbody tr[data-selected] .crisp-recordstable-td { background: color-mix(in srgb, var(--crisp-bg-brand-solid) 10%, var(--crisp-bg-surface)); }
3196
- & tbody tr[data-selected]:hover .crisp-recordstable-td { background: color-mix(in srgb, var(--crisp-fg-primary) 4%, color-mix(in srgb, var(--crisp-bg-brand-solid) 10%, var(--crisp-bg-surface))); }
3197
- & .crisp-recordstable-th:last-child, & .crisp-recordstable-td:last-child { border-inline-end: none; }
3198
- /* add-row footer */
3199
- & .crisp-recordstable-addrow { display: flex; align-items: center; gap: var(--crisp-space-2); width: 100%; height: var(--crisp-size-tableRow); padding: 0 var(--crisp-space-2); border: none; border-top: 1px solid var(--crisp-border-subtle); background: var(--crisp-bg-surface); color: var(--crisp-fg-muted); font-family: inherit; font-size: var(--crisp-text-lg); cursor: pointer; }
3200
- & .crisp-recordstable-addrow:hover { background: var(--crisp-bg-raised); color: var(--crisp-fg-primary); }
3201
- /* zero-row empty state — centred in the body region (headers + summary stay) */
3202
- & .crisp-recordstable-empty { display: flex; align-items: center; justify-content: center; min-height: 320px; padding: var(--crisp-space-8) var(--crisp-space-4); }
3203
- /* summary footer — per-column aggregation, sticky to the bottom */
3204
- & .crisp-recordstable-sum { position: sticky; bottom: 0; z-index: 2; height: var(--crisp-size-tableRow); padding: 0; border-top: 1px solid var(--crisp-border-subtle); border-bottom: 1px solid var(--crisp-border-subtle); border-inline-end: 1px solid var(--crisp-border-subtle); background: var(--crisp-bg-surface); }
3205
- & tfoot .crisp-recordstable-col-check, & tfoot .crisp-recordstable-col-entity { position: sticky; bottom: 0; z-index: 3; }
3206
- & .crisp-recordstable-sum:last-child { border-inline-end: none; }
3207
- & .crisp-recordstable-sum-btn { display: flex; align-items: center; justify-content: flex-end; gap: var(--crisp-space-1-5); width: 100%; height: 100%; margin: 0; padding: 0 var(--crisp-space-3); border: none; background: none; color: color-mix(in srgb, var(--crisp-fg-primary) 63%, transparent); font-family: inherit; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); cursor: pointer; white-space: nowrap; overflow: hidden; }
3208
- & .crisp-recordstable-sum-btn:hover { background: var(--crisp-bg-raised); }
3209
- & .crisp-recordstable-sum-label { color: color-mix(in srgb, var(--crisp-fg-primary) 45%, transparent); text-transform: capitalize; }
3210
- & .crisp-recordstable-sum-value { color: var(--crisp-fg-primary); font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; }
3211
- & .crisp-recordstable-sumgroup { width: 100%; height: 100%; }
3212
- & .crisp-recordstable-pin { flex-shrink: 0; margin-inline-start: var(--crisp-space-1); color: var(--crisp-bg-warning); fill: color-mix(in srgb, var(--crisp-bg-warning) 35%, transparent); }
3213
- & .crisp-recordstable-sum-btn[data-empty] { opacity: 0; justify-content: flex-start; }
3214
- & .crisp-recordstable-sum-btn[data-empty]:hover { opacity: 1; }
3215
- /* bulk action bar lives in its own component now — see components/bulkbar */
3216
- & .crisp-recordstable-bulk-sep { width: 1px; height: 20px; margin: 0 var(--crisp-space-0-5); background: var(--crisp-border-subtle); }
3217
- & .crisp-recordstable-bulk-close { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; border: none; border-radius: var(--crisp-radius-md); background: transparent; color: var(--crisp-fg-muted); cursor: pointer; }
3218
- & .crisp-recordstable-bulk-close:hover { background: var(--crisp-bg-raised); color: var(--crisp-fg-primary); }
3219
- /* announced, never drawn */
3220
- & .crisp-recordstable-live { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
3221
- [dir="rtl"] & [data-rtl-flip] { transform: scaleX(-1); }
3222
- }
3223
-
3224
- @media (prefers-reduced-motion: reduce) {
3225
- .crisp-recordstable, .crisp-recordstable * {
3226
- animation-duration: 0.01ms !important;
3227
- animation-iteration-count: 1 !important;
3228
- transition-duration: 0.01ms !important;
3229
- }
3230
- }
3231
-
3232
2991
  .crisp-richtext {
3233
2992
  display: flex; flex-direction: column; box-sizing: border-box; font-family: var(--crisp-font-sans); color: var(--crisp-fg-primary); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
3234
2993
  & .crisp-rte-title { font-size: 32px; line-height: 36px; font-weight: var(--crisp-weight-semibold); letter-spacing: -0.6px; color: var(--crisp-fg-primary); outline: none; }
@@ -3519,37 +3278,6 @@
3519
3278
  }
3520
3279
  }
3521
3280
 
3522
- .crisp-taskstable {
3523
- display: flex; flex-direction: column; min-height: 0; box-sizing: border-box; font-family: var(--crisp-font-sans); color: var(--crisp-fg-primary); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
3524
- & .crisp-taskstable-colhead { display: flex; align-items: center; gap: var(--crisp-space-1-5); min-height: 49px; max-height: 49px; padding: var(--crisp-space-2-5) var(--crisp-space-3); box-shadow: inset 0 -1px 0 var(--crisp-border-subtle); font-size: var(--crisp-text-sm); color: var(--crisp-fg-muted); }
3525
- & .crisp-taskstable-colhead-cell { display: inline-flex; align-items: center; gap: var(--crisp-space-1-5); min-width: 0; }
3526
- & .crisp-taskstable-row { display: flex; align-items: center; gap: var(--crisp-space-1-5); }
3527
- /* #642: measured live -- title, due date and assignee name are ALL 14px/500 on Attio's own Tasks page. Only -title/-due set their own
3528
- font-size (and only -title its own weight), so an unstyled consumer
3529
- slot (a plain PersonChip/RecordChip name span with no font-size of
3530
- its own) fell through to the browser/body default, 16px/400. Set
3531
- the ambient font here so it cascades to any slot content that
3532
- doesn't override it -- -title/-due's own declarations still apply,
3533
- unchanged, they're just now redundant with this baseline rather than the only source of it. */
3534
- & .crisp-taskstable-cell { display: flex; align-items: center; min-width: 0; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); }
3535
- & .crisp-taskstable-check { appearance: none; -webkit-appearance: none; box-sizing: border-box; flex-shrink: 0; margin: 0; width: 16px; height: 16px; border: none; border-radius: var(--crisp-radius-full); background: var(--crisp-bg-surface); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-fg-primary) 9%, transparent); cursor: pointer; transition: background-color .12s, box-shadow .12s; }
3536
- & .crisp-taskstable-check:hover { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--crisp-fg-primary) 30%, transparent); }
3537
- & .crisp-taskstable-check:checked { background: var(--crisp-bg-brand-solid) center / 10px no-repeat; box-shadow: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 6.5 5 9l4.5-5'/%3E%3C/svg%3E"); }
3538
- & .crisp-taskstable-check:focus-visible { outline: 2px solid var(--crisp-bg-brand-solid); outline-offset: 1px; }
3539
- & .crisp-taskstable-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--crisp-text-lg); font-weight: var(--crisp-weight-medium); color: var(--crisp-fg-primary); }
3540
- & .crisp-taskstable-due { font-size: var(--crisp-text-lg); color: var(--crisp-fg-muted); white-space: nowrap; }
3541
- & .crisp-taskstable-due[data-overdue] { color: var(--crisp-fg-danger); }
3542
- & .crisp-taskstable-empty { padding: var(--crisp-space-8) var(--crisp-space-4); text-align: center; font-size: var(--crisp-text-md); color: var(--crisp-fg-muted); }
3543
- }
3544
-
3545
- @media (prefers-reduced-motion: reduce) {
3546
- .crisp-taskstable, .crisp-taskstable * {
3547
- animation-duration: 0.01ms !important;
3548
- animation-iteration-count: 1 !important;
3549
- transition-duration: 0.01ms !important;
3550
- }
3551
- }
3552
-
3553
3281
  .crisp-themepicker {
3554
3282
  display: flex; gap: var(--crisp-space-2); font-family: var(--crisp-font-sans); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
3555
3283
  & .crisp-themepicker-option { box-sizing: border-box; display: flex; flex-direction: column; align-items: center; gap: var(--crisp-space-1-5); width: 224px; padding: var(--crisp-space-1); border: 1px solid var(--crisp-border-subtle); border-radius: 16px; background: var(--crisp-bg-surface); cursor: pointer; font-family: inherit; }
@@ -82,8 +82,22 @@ export declare const TableHead: React.ForwardRefExoticComponent<Omit<React.Detai
82
82
  } & React.RefAttributes<HTMLTableCellElement>>;
83
83
  export type TableCellProps = React.ComponentPropsWithoutRef<"td"> & {
84
84
  align?: TableCellAlign;
85
+ /** Renders `<th>` instead of `<td>` -- a row's own identity cell (its
86
+ * name), not a plain value it holds (crisp/#779, matching RecordsTable's
87
+ * own #231 fix: a screen reader crossing the row reads "Google,
88
+ * Employees, 182,000" instead of a bare "182,000"). Pass `scope="row"`
89
+ * alongside it. */
90
+ as?: "td" | "th";
91
+ scope?: "row" | "col" | "rowgroup" | "colgroup";
85
92
  };
86
93
  export declare const TableCell: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.TdHTMLAttributes<HTMLTableDataCellElement>, HTMLTableDataCellElement>, "ref"> & {
87
94
  align?: TableCellAlign;
95
+ /** Renders `<th>` instead of `<td>` -- a row's own identity cell (its
96
+ * name), not a plain value it holds (crisp/#779, matching RecordsTable's
97
+ * own #231 fix: a screen reader crossing the row reads "Google,
98
+ * Employees, 182,000" instead of a bare "182,000"). Pass `scope="row"`
99
+ * alongside it. */
100
+ as?: "td" | "th";
101
+ scope?: "row" | "col" | "rowgroup" | "colgroup";
88
102
  } & React.RefAttributes<HTMLTableCellElement>>;
89
103
  export declare const TableCaption: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & React.RefAttributes<HTMLTableCaptionElement>>;
@@ -78,7 +78,6 @@ export * from "./product/objectsettings";
78
78
  export * from "./product/onboarding";
79
79
  export * from "./product/recordpage";
80
80
  export * from "./product/recordpanel";
81
- export * from "./product/recordstable";
82
81
  export * from "./product/richtext";
83
82
  export * from "./product/savedviews";
84
83
  export * from "./product/settingssection";
@@ -86,7 +85,6 @@ export * from "./product/settingsshell";
86
85
  export * from "./product/sidebar";
87
86
  export * from "./product/statlist";
88
87
  export * from "./product/tasklist";
89
- export * from "./product/taskstable";
90
88
  export * from "./product/themepicker";
91
89
  export * from "./product/trialbanner";
92
90
  export * from "./product/viewtoggle";
@@ -1,2 +1,4 @@
1
+ export { type Column, type ColumnType, type EntityValue, type ReferenceOption, type Row, type StatusOption, tagTone, } from "./column";
2
+ export { type EditableOption, editableInputType, useEditableField, } from "./editable-field";
1
3
  export { RecordDetails, type RecordDetailsProps, RecordPage, type RecordPageHighlight, type RecordPageLabels, type RecordPageLabelsInput, type RecordPageNote, type RecordPageProps, type RecordPageSection, type RecordPageTab, type RecordPageTask, recordPageLabels, } from "./recordpage";
2
4
  export { recordpageRecipe } from "./recordpage.recipe";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crisp-ui-kit/crisp",
3
- "version": "0.54.11",
3
+ "version": "0.55.0",
4
4
  "description": "A lean React design system, measured pixel-for-pixel from Attio.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -428,11 +428,6 @@
428
428
  "import": "./dist/esm/product/recordpanel/index.js",
429
429
  "require": "./dist/cjs/product/recordpanel/index.js"
430
430
  },
431
- "./recordstable": {
432
- "types": "./dist/types/product/recordstable/index.d.ts",
433
- "import": "./dist/esm/product/recordstable/index.js",
434
- "require": "./dist/cjs/product/recordstable/index.js"
435
- },
436
431
  "./richtext": {
437
432
  "types": "./dist/types/product/richtext/index.d.ts",
438
433
  "import": "./dist/esm/product/richtext/index.js",
@@ -468,11 +463,6 @@
468
463
  "import": "./dist/esm/product/tasklist/index.js",
469
464
  "require": "./dist/cjs/product/tasklist/index.js"
470
465
  },
471
- "./taskstable": {
472
- "types": "./dist/types/product/taskstable/index.d.ts",
473
- "import": "./dist/esm/product/taskstable/index.js",
474
- "require": "./dist/cjs/product/taskstable/index.js"
475
- },
476
466
  "./themepicker": {
477
467
  "types": "./dist/types/product/themepicker/index.d.ts",
478
468
  "import": "./dist/esm/product/themepicker/index.js",
@@ -524,7 +514,7 @@
524
514
  "prepublishOnly": "bun run build && bun run check:dist && bun run check:css",
525
515
  "typecheck": "tsc --noEmit",
526
516
  "lint": "biome check .",
527
- "test": "bun test",
517
+ "test": "bun test ./tokens/ ./core/ ./components/ ./product/ ./build/",
528
518
  "spec": "bun build/spec-check.mjs",
529
519
  "lynx": "bun build/lynx-lint.mjs",
530
520
  "lynx:emit": "bun build/emit-lynx.mjs",
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.companyLogos = void 0;
4
- // Clean, self-contained brand-mark data URIs for the built-in demo dataset
5
- // (defaultRows below). Each PNG is a real favicon, fetched once from
6
- // Google's public favicon service, then hard-thresholded on alpha (<128
7
- // -> fully transparent, >=128 -> fully opaque) before being baked in here.
8
- //
9
- // Why: those source PNGs anti-alias their edges against an assumed white
10
- // canvas, so boundary pixels come back literally white-colored at partial
11
- // alpha even though the corners are properly transparent. On a light page
12
- // that blends in invisibly; on dark rows it reads as a white halo/outline
13
- // around every logo. Thresholding removes that halo. It does NOT remove a
14
- // company's own opaque branding (e.g. Google's white circle, Notion's
15
- // white backing, OpenAI/Anthropic's light square) — those pixels are fully
16
- // opaque real brand-icon content, not an artifact, and are left as-is.
17
- //
18
- // Baking these in as data URIs (instead of the live s2/favicons URL) also
19
- // means the demo never depends on a live network request.
20
- exports.companyLogos = {
21
- "google.com": "data:image/png;base64,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",
22
- "stripe.com": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAACzklEQVR42u2az24SURTGv3M7BdsoRUKopcUqiU2jMRpbJWl0V7vqzufxDUx8Ct/AhakkbozJaGNq/JPGGkwL0tIgUmqk0OFeFzgMA5gopcDMnLOCS1h8v++7597JGUrMPUNzTQYTEMKnRsQY3FQ1WYaUVcoVddu6aP4SCy+rUW3CdeIBYESMYVSbULHwsuoIYCa8opSdhytLQWAmvKJsAFqpeKFMzWIymIAXnO+UhHq/Ez7Pud+Iv/Ap4caG9z+NUcDjxQAYAANgAAzAySWNk11jNKeJNQzgV8Fam5kn/Cy5EIApFqgL/pGuf75+n3BvFZiNE24m6muPHyrkdhSERs4FUD1SNmfHQ0AoQrh2xxI7FQXOBez/O/zjvmEAPs0hCWiOsuns+RhwZZEQvwrcvkuIxjoL7nVpg3A3EAGm44T4qiX20mXA5++/GVq/3F1cIdxaIkSi6Ju7pw7gb135wkU0xC4khkNozwFUjxS+vWvvylNRwO8fTJz7BkAaCtNxwqMnhLn5FjAV54jv+iZons9T0fbfnCSenwUYAANgAAyAATAABsAAGAADYAAMgAEwAAbAAJxcmuby2WC1AlQqwG4WyKaBNy8VUp+ArXWF8RDgO0PuA3BYqgve0IG3rxT2doDCfvuQpZuZ4FABaHZ3Qwe2Uwp6EviqW6Pv6RtW1INRctZorFN93rSi/H0P+PIBKGaVbTg6u3Ayd4cCgBnjbBrYzwIvnipsrSvb2Gw81HtnBwaged9upxQ+vgZKBYXSPmzuDkJszwCYR85utl3s++dWjAft7r8UPViSXb9kczYAZDbt+1bTTn/fDs0WKBXU0Drbl5ugk5zmZwEGwAAYAANgAB0A1GTZs+JrsgwhZZW8CkDKKolcUQdBek48QSJX1Os9IJ1Pei4FpuZGE8zk18gLSSBIZPJr1PEUSOeTdGwckBsbY02WcWwcUGvafwM6ARIBbCv6CwAAAABJRU5ErkJggg==",
23
- "figma.com": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAADAUlEQVR42u2bP0+TURTGf0/BNIGWqoMuDsYQpi4GTGtY3BQ3ln4EdwIDTKSTLJbZz+Dgnxj0G2CxboZBcOEjFJrwLx4HCokRor3v5fa273vHpr1vz3Of85xznt7KzEjzypHyNepll3IZikVwodNsD+8VYIBJlPZh9XsEDKhWoVAwQuTS+RNkRnvcWHqceEs5f+9aDfb2kgc96wGYiaZYtcAM8BG8r9WuWtgUqFYjkzKDpUogAMpliLF2mox6OQAAxSJIcda09ngAAOLunCzdjZADM4cLAMta4QyADIBrB0Cx1kBA6PoBODmJ9ziLBwEY0GrFyQJDLuOxmwZsbsZX/xpfAotgs6lYEp+JLYV3hM46YlGpgGR9o31js89lsNmE01NhJoKMCXam9gencqW9d0+w/qBF/rjbivZIxuVXf39CH4GRK5rb81c6Tp2vfwaszUP+6MyqxIMq6DMw0t3vKmNUGAVMG/SPAW9q8POoG7SPwN8AhR4PVZg2kD3vAwMugvfWxDgyWpg+BQZgbd7PqV/EsEHShHZOh54BqNfADG9yrw/dnE7eDpjqATQgf+y5qt3wuFclAAMMf6fv7uNcudP1e4IRD8OBRNAyRygDgFS7wvFKYBgGKIdvGRSD5AneuuM5/DGPe80FYMCL12AepwB74nZyl0Ti5Mo4ieDKe6+jAPYscSLIngauAocPPWvBvjMPZHP9uCPUXS/nQQmGo+V3f4bdHW0tRPBe+oCVt3D7LvLlDtgccID+wQexlTx4LwwAKG/XOey0u2Ntb0jszDQ00Bclp1qLGGaDOiSNunt4NSbv3zOU0llgGIJ3BmCqtQhK6TRY3q5j/LLUjsOHnTZDc/wuAOQ0XP+w6N0UzTzBzBLLAEi3BqB0AyDzKYP9l9SeASjlOt4enh+72XcGOI3DU18XsOQXo7Qz0xhMEfzxaD3xXckYgk9UBXamJ5woYIjdmVI0SprYEZr8toDsv7FQLCfvrQ/YnV6npI6QdOlv5xJgKqkTXfDePMGsExzg9Rvv7eoPX7dwVQAAAABJRU5ErkJggg==",
24
- "notion.so": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAEmElEQVR42uVb4XGrMAyW3/V/3AniDUo3MBOUDUomKJ0gZALYADpBsgFkAtjAMAF0Ar0/jxwFg02AQni640gv4EhfJfmzJRP4JUHEzq/uGI4AABBCRutFJjQGYRkhY4AgCgOXMurXQCASw1dldJZlt8+UUqCUTgoE+S3jy7K8XVmWQVmW8P39ffu7Mrb+XFmWrXE452DbNry/v08CQh0AHPpfybLs9jnP85by9eemFtu2wfO8Po/QBwIRARsihEDHcZBzjoZhIGMMKaX4z0tWcTHGMEkS7BE9D2g+maYpmKYpdcEphDF2u1dxXV37/V76XZZlkKYpnE6nlke5rgvH4/EuT5ACYJomxHGsNKSuYFPhLkMUSUxLXNeF0+nUAjWKohu4g4CQ+E3L1c7nM0ZRhEIIFELg0iKEQMbYDz0ppej7/vCQ0AFgDUbLQLBtu6Wvbdu9+g4GoEL3fD7jGsXzvFaCZoxhGIZ6IOgAUF2u664SBCGEdJZyHAeLoujEQJoEVfOnZVngeV5fwhnF+po8oiJMdXJUJ00qrtGVIEmVFocCUA3qui68vb0BpbRXuTzPWwRKdp9TOOcQRdF0ADyiNEOfEEKeHtmgOqGq3wEA4jjW8qxFAKgToqby1Xe73a5FoJrv9Ekcx2Ca5n1UeEgIUErBsqwfilUsUGbAFExwwCaBMgQGT4PNK4oiXKs0dZXNg6M9YMAqeoltIqUH/IH/XB5iFrhcLnC9Xlukp7pzziEIgvUBEMcxXK/XltJ1Vue6Lnx8fHSOEYYhHA6H3t95eXkZTRDuToJdEgSB1vuU0t6Vm+d5yDlvLX0BAIMgUK36lElwNgA459pjcM4nyeqrAqAoChRCYBRFWuMoNjIeD4Ch46lCYS4AVjMNlmWpTHZzrpIW9wCdUNhMCMgyuk4obAYAVWLsmhU2AwAiomVZg0NhUwAURdFbaqOUtjYzNwVAxfL6xrYsa9sA6DDGei1ikwB07efLQmGTRIgxBo7j9BKkZiH04YmQTPq4QdfUuYkQqETFDWQAbQoARETHcSb97YcDoCgKZShsdjVY1RHu3dt7+CRYFxVN3mwI6HKD2UNg6rr/Pdygp+tr/hBwXXdWD1D09mnT5NlCQLVSG6JE1/xOKUXLsnr3AVWhMCUAINuPHwOA7/tKEHW2w5MkaY1DKcXj8ThdcbSrV/jz8xN837+rOHo4HCCOY2n9f7/fg2EYwDnX7h26XC4AAGAYBhiGoVVm1y6Pd3lBURRoGMboHLD68nhfy3yWZfD6+trZN7yp8vi/F0hzSlqEnY2UNE1HHZnRzgdLe0DzjEJZlpDnOfi+32qSknlA35mhlmWyLvIoirST2djGSNk7Y9vkiOLhVj4wTfMHstWOzm63m6Srcy4xDAOSJBl2pEQ2M+hWe9d2BUEw/DgJdMxzuiQJVnCkxrKsrk42/YOTMrRs24avr6/Zu0C7eg2rRsrmqRTdxVzl/k8DTpdhs3fn+fkZwjBsJaOmMjLlms2UTYPnpgiDj872nSusktpvd4JOccqUDF02P3BLoDTpk3v2DtZklC4Nnuv0OC6p/BTyFxmRx6YRUfIyAAAAAElFTkSuQmCC",
25
- "linear.app": "data:image/png;base64,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",
26
- "vercel.com": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAACMUlEQVR42u3ZLa+yYBgH8Os8nqKbjY2RCAYMWHXTIgaKm4FCsBFJJJMfgG9Aur+DnXwHGo1iYCYyATfHdp10zjzu2c458ipc/83mG7/7ut/fAAChx/kHPQ8BEAABEAABEAABEAABEAABEAAB1B1FUUBV1cYRsKlXkiTIOccm/0NjAJZlYZ7niIhoWVa/AARBwCiK8DNRFKEkSf0BcF0Xsyz7AsiyDF3X7QeApmkYhiE+JgxDVFW1+wCMsa++f588z9HzvG4D6Lr+re8/Jo5jNE2zuwCMMfwpjLFuAjiO89/Sf0ySJLVOi7WsBGVZhvV6DYPB4Mf3iqIIu90OZFnuzkrQtu1ftf79gGjbdje6gCRJGAQB/jVBEKAgCK8PcDwe8dnUNBZU+wNpmj4NkCTJaw+Ch8MBxuPx058XRRE8z6t0AHyDCq/H0zQtBAAAcL1eYTQavd6BSBiGhR8eAGA4HMLpdHqtadA0zUJ9/zFpmla5RC7/SznnWHY455VMi6V3AcdxYDKZlF6ms9kMLMtqdxeYz+eVtP5nfN9HRVHaWwGGYcBisahssFqtVrDf79tZAVW3/v35oa7r7asAXddhuVxWvnObTqew2WzaVQGGYfxpt1c0cRyXVgWlVMB2u/3VXr/M8wXTNNtRAZqm1dr692cGhmE0vxDyfR+bShAEhQHei5bP+XyGy+XSyKXm7XZr926QrscJgAAIgAAIgAAIgAAIgAAIgAAIgAAIgAAIoH35AMeAlc846gXqAAAAAElFTkSuQmCC",
27
- "openai.com": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAFm0lEQVR42u2av2v6ThjHn8+XbwsfcShWqFvTRZycLB3s0MlFaGP/Ae0WKNhJcLJ0ckuhk50UOgecnAuhUHBJu8SlQwtxMtNZ5drhvpPhklxiTo31S3MQSO1pcq88P973PPlDCCHwi8c/8MtHBCACEAGIAEQAIgARgN87/l3XhcbjMby9vcH39zcAAMTjcchkMj9PgIQ8FEUh2WyWAADzkCSJ6LpOfmqEBkBVVSIIgufCnUetViMY47UD+BPGZqjT6cDFxYX1dzabhUqlAoeHh5BMJmE8HsPHxwc8PDxAt9u1zbu+vobn52d4eXmBz89P2NnZgWQyCaenp3BycgKJRGKzXUBRFOupJhIJ0uv1fOcbhkGKxSKXpSCENtMFDMOwbjSbzZLJZDL3O+12m8RiMddCc7kcEUXR0436/f7mARBF0brBeYtXVZUkEgnbokRRJJqmMef3+31SKBRs8+dZ11oB6Lpu3ZiiKL5WQoOaWUvQJ0q7GAAQwzA2A0Cr1bJuijUwxqTRaLhM2Q+W1+j1etb38/n8zwIwTZPIskxSqRQBAFIul31veHY0Gg1fN5mnDWiYqqr+DIBms+lamCzLvosvl8u+ZkvPFwTBc3EIIdtvrhUAQojk83lmdHYCoF3D70npuu4KcnRwZEGTJMmas6iI4gaAMSbpdNq6cLFYJLquW5/5AWCNyWRCarUa00WcnzWbTdtC2+229T/TNNcDoFqt2kTJbMxiAA8AZ0R3Ch3TNG3XAwASi8Ws9Nfv963PvdLnSgHQF6T9DmPMBUDTNJcL5XI5z9jAcg9RFG0WsOiGigsALVlpORoUAMbY9UR5AyRLNTrvJxQApmna/NMZF4IAcB7tdtv2FGlfD6o51hYDVFX19DdeAE4NMJlMuEUSQoiUy2WbmlwkE8AiuzynuQUFIEmSr4kbhmFLbTOl5xfgZFm25lar1c0GEPimGO5SrVY9zZy2BN5sELgo+vfvX+v86+trLeW6YrFond/d3cHu7i7c39+75smybJ3f3t6GUxChU6BT0WGMra1tKpWy7eyWsYB2u00wxi6hVCwWffUJTywAHgXo52vOLa4oisQ0TVuU5wXQarVs8YEurjrdkA7SPMUSLh1A+xormLFSGi14lgHgtCYnADpN8xRKuBoj9XrdOr+8vHT9v1KpAEIIGo2G9dnT09Na4sX29rZ1Pp1Ow+kMZTIZqNVqAADQ7Xbh6urKNScej8PNzQ3oum4LYgAApVIJBoOB5+8PBgMolUpLw6ADdihVYdrfC4WCb25n1f6clV2EEHNHyOMCdJAOLQbQym3eVjVIfPCSwosAoAEGqUYvBYAOOLzylSV56exCZ5ugAOhyPG91CFZRAXamQD/5quu6q1dYKBRs21leAPRWmXdbvBAATdNc0pPVC5QkyZKvCCHmVpiVsoIAmLkbnZrpAk2oAGiTcy6AtftjLdwvZswDkEqliKqqJJfL+arDtQRBFnWEkGtXt0hV2M8C5knj0MvitOl5RV269JVOp33Tk67rrjKZ07rora8XpLUBoLX3vAqO3xNnaYB0Os0soc+sShAE0mq1Fq4CrawxQkffRRqVLA3g90Rp/UA2oT1OB0OeG1NV1dZbmFfwcBZklm2IrrQ3SLvCTAP0ej1mXNA0zaUZcrnc3Ny9qjZYaN1hWhg5mxiiKNrSFe3nQdwGIWSzllX4fSjtcYwxs1nqdeTz+blPXlVVWx9gmS4wWddLUtPpFB4fH+H5+Rne399hNBrB1tYWHB0dwfHxMdTrdVuNQBRFODs7g729PTg4OIDRaAT9fh86nQ68vr5a8xRFgfPz8//fe4LLWoogCCt7H2it7wkGySB+ILLZ7EJvj2zEe4K8YzgcwnA4tCpK+/v7fFWdJcZGAIjeFo8ARAAiABGACEAEIAIQAfiB8R/yJaxaNgYgiwAAAABJRU5ErkJggg==",
28
- "anthropic.com": "data:image/png;base64,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",
29
- };
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.recordstableRecipe = exports.tagTone = exports.RecordsTable = exports.defaultRows = exports.defaultColumns = exports.useEditableField = exports.editableInputType = void 0;
4
- var editable_field_1 = require("../recordpage/editable-field");
5
- Object.defineProperty(exports, "editableInputType", { enumerable: true, get: function () { return editable_field_1.editableInputType; } });
6
- Object.defineProperty(exports, "useEditableField", { enumerable: true, get: function () { return editable_field_1.useEditableField; } });
7
- var recordstable_1 = require("./recordstable");
8
- Object.defineProperty(exports, "defaultColumns", { enumerable: true, get: function () { return recordstable_1.defaultColumns; } });
9
- Object.defineProperty(exports, "defaultRows", { enumerable: true, get: function () { return recordstable_1.defaultRows; } });
10
- Object.defineProperty(exports, "RecordsTable", { enumerable: true, get: function () { return recordstable_1.RecordsTable; } });
11
- Object.defineProperty(exports, "tagTone", { enumerable: true, get: function () { return recordstable_1.tagTone; } });
12
- var recordstable_recipe_1 = require("./recordstable.recipe");
13
- Object.defineProperty(exports, "recordstableRecipe", { enumerable: true, get: function () { return recordstable_recipe_1.recordstableRecipe; } });