@crisp-ui-kit/crisp 0.31.3 → 0.31.5
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.
- package/dist/authshell.css +1 -1
- package/dist/cjs/components/accordion/accordion.js +1 -1
- package/dist/cjs/components/accordion/accordion.recipe.js +1 -1
- package/dist/cjs/components/avatargroup/avatargroup.js +1 -1
- package/dist/cjs/components/barchart/barchart.js +1 -1
- package/dist/cjs/components/barchart/barchart.recipe.js +1 -1
- package/dist/cjs/components/breadcrumb/breadcrumb.js +1 -1
- package/dist/cjs/components/breadcrumb/breadcrumb.recipe.js +1 -1
- package/dist/cjs/components/bulkbar/bulkbar.js +1 -1
- package/dist/cjs/components/bulkbar/bulkbar.recipe.js +1 -1
- package/dist/cjs/components/callout/callout.js +1 -1
- package/dist/cjs/components/callout/callout.recipe.js +1 -1
- package/dist/cjs/components/checkbox/checkbox.js +1 -1
- package/dist/cjs/components/checkbox/checkbox.recipe.js +1 -1
- package/dist/cjs/components/columncalc/columncalc.js +2 -2
- package/dist/cjs/components/columncalc/columncalc.recipe.js +2 -2
- package/dist/cjs/components/datatable/datatable.js +5 -5
- package/dist/cjs/components/datatable/datatable.recipe.js +5 -5
- package/dist/cjs/components/datepicker/datepicker.recipe.js +3 -3
- package/dist/cjs/components/datepickerfield/datepickerfield.js +1 -1
- package/dist/cjs/components/datepickerfield/datepickerfield.recipe.js +2 -2
- package/dist/cjs/components/dialog/dialog.js +1 -1
- package/dist/cjs/components/dialog/dialog.recipe.js +1 -1
- package/dist/cjs/components/donutchart/donutchart.js +1 -1
- package/dist/cjs/components/donutchart/donutchart.recipe.js +1 -1
- package/dist/cjs/components/emptystate/emptystate.recipe.js +2 -2
- package/dist/cjs/components/fileupload/fileupload.js +1 -1
- package/dist/cjs/components/fileupload/fileupload.recipe.js +6 -6
- package/dist/cjs/components/formfield/formfield.js +1 -1
- package/dist/cjs/components/formfield/formfield.recipe.js +1 -1
- package/dist/cjs/components/input/input.recipe.js +1 -1
- package/dist/cjs/components/linechart/linechart.js +1 -1
- package/dist/cjs/components/linechart/linechart.recipe.js +1 -1
- package/dist/cjs/components/menu/menu.js +1 -1
- package/dist/cjs/components/menu/menu.recipe.js +2 -2
- package/dist/cjs/components/multiselect/multiselect.js +1 -1
- package/dist/cjs/components/multiselect/multiselect.recipe.js +1 -1
- package/dist/cjs/components/progress/progress.recipe.js +1 -1
- package/dist/cjs/components/quantitypicker/quantitypicker.recipe.js +2 -2
- package/dist/cjs/components/radiogroup/radiogroup.js +1 -1
- package/dist/cjs/components/radiogroup/radiogroup.recipe.js +1 -1
- package/dist/cjs/components/resizablepanel/resizablepanel.js +1 -1
- package/dist/cjs/components/resizablepanel/resizablepanel.recipe.js +2 -2
- package/dist/cjs/components/segmented/segmented.js +1 -1
- package/dist/cjs/components/segmented/segmented.recipe.js +1 -1
- package/dist/cjs/components/select/select.js +1 -1
- package/dist/cjs/components/select/select.recipe.js +2 -2
- package/dist/cjs/components/slider/slider.recipe.js +2 -2
- package/dist/cjs/components/stagebar/stagebar.js +1 -1
- package/dist/cjs/components/stagebar/stagebar.recipe.js +1 -1
- package/dist/cjs/components/statcard/statcard.js +1 -1
- package/dist/cjs/components/statcard/statcard.recipe.js +2 -2
- package/dist/cjs/components/switch/switch.js +1 -1
- package/dist/cjs/components/switch/switch.recipe.js +1 -1
- package/dist/cjs/components/table/table.recipe.js +1 -1
- package/dist/cjs/components/tabletoolbar/tabletoolbar.chrome.js +2 -2
- package/dist/cjs/components/tabletoolbar/tabletoolbar.js +2 -2
- package/dist/cjs/components/tabletoolbar/tabletoolbar.recipe.js +1 -1
- package/dist/cjs/components/tabs/tabs.js +2 -2
- package/dist/cjs/components/tabs/tabs.recipe.js +1 -1
- package/dist/cjs/components/textarea/textarea.js +1 -1
- package/dist/cjs/components/textarea/textarea.recipe.js +1 -1
- package/dist/cjs/components/tooltip/tooltip.js +1 -1
- package/dist/cjs/components/tooltip/tooltip.recipe.js +1 -1
- package/dist/cjs/product/appshell/appshell.js +4 -4
- package/dist/cjs/product/appshell/appshell.recipe.js +1 -1
- package/dist/cjs/product/authshell/authshell.js +1 -1
- package/dist/cjs/product/authshell/authshell.recipe.js +3 -3
- package/dist/cjs/product/board/board.js +1 -1
- package/dist/cjs/product/board/board.recipe.js +1 -1
- package/dist/cjs/product/command/command.js +1 -1
- package/dist/cjs/product/entitycard/entitycard.js +1 -1
- package/dist/cjs/product/entitycard/entitycard.recipe.js +1 -1
- package/dist/cjs/product/flowcanvas/flowcanvas.js +1 -1
- package/dist/cjs/product/flowcanvas/flowcanvas.recipe.js +1 -1
- package/dist/cjs/product/inbox/inbox.js +1 -1
- package/dist/cjs/product/inbox/inbox.recipe.js +1 -1
- package/dist/cjs/product/listpage/listpage.js +1 -1
- package/dist/cjs/product/listpage/listpage.recipe.js +1 -1
- package/dist/cjs/product/onboarding/onboarding.js +1 -1
- package/dist/cjs/product/onboarding/onboarding.recipe.js +1 -1
- package/dist/cjs/product/recordpage/recordpage.js +7 -7
- package/dist/cjs/product/recordpage/recordpage.recipe.js +2 -2
- package/dist/cjs/product/recordpanel/recordpanel.recipe.js +1 -1
- package/dist/cjs/product/recordstable/recordstable.js +9 -9
- package/dist/cjs/product/recordstable/recordstable.recipe.js +2 -2
- package/dist/cjs/product/recordstable/recordstable.tag.js +1 -1
- package/dist/cjs/product/richtext/richtext.js +1 -1
- package/dist/cjs/product/richtext/richtext.recipe.js +1 -1
- package/dist/cjs/product/settingssection/settingssection.js +1 -1
- package/dist/cjs/product/settingssection/settingssection.recipe.js +1 -1
- package/dist/cjs/product/settingsshell/settingsshell.js +1 -1
- package/dist/cjs/product/settingsshell/settingsshell.recipe.js +2 -2
- package/dist/cjs/product/sidebar/sidebar.js +6 -6
- package/dist/cjs/product/tasklist/tasklist.js +1 -1
- package/dist/cjs/product/tasklist/tasklist.recipe.js +1 -1
- package/dist/cjs/product/trialbanner/trialbanner.js +1 -1
- package/dist/cjs/product/trialbanner/trialbanner.recipe.js +2 -2
- package/dist/cjs/product/viewtoggle/viewtoggle.js +1 -1
- package/dist/cjs/product/viewtoggle/viewtoggle.recipe.js +1 -1
- package/dist/columncalc.css +1 -1
- package/dist/datatable.css +5 -5
- package/dist/esm/components/accordion/accordion.js +1 -1
- package/dist/esm/components/accordion/accordion.recipe.js +1 -1
- package/dist/esm/components/avatargroup/avatargroup.js +1 -1
- package/dist/esm/components/barchart/barchart.js +1 -1
- package/dist/esm/components/barchart/barchart.recipe.js +1 -1
- package/dist/esm/components/breadcrumb/breadcrumb.js +1 -1
- package/dist/esm/components/breadcrumb/breadcrumb.recipe.js +1 -1
- package/dist/esm/components/bulkbar/bulkbar.js +1 -1
- package/dist/esm/components/bulkbar/bulkbar.recipe.js +1 -1
- package/dist/esm/components/callout/callout.js +1 -1
- package/dist/esm/components/callout/callout.recipe.js +1 -1
- package/dist/esm/components/checkbox/checkbox.js +1 -1
- package/dist/esm/components/checkbox/checkbox.recipe.js +1 -1
- package/dist/esm/components/columncalc/columncalc.js +2 -2
- package/dist/esm/components/columncalc/columncalc.recipe.js +2 -2
- package/dist/esm/components/datatable/datatable.js +5 -5
- package/dist/esm/components/datatable/datatable.recipe.js +5 -5
- package/dist/esm/components/datepicker/datepicker.recipe.js +3 -3
- package/dist/esm/components/datepickerfield/datepickerfield.js +1 -1
- package/dist/esm/components/datepickerfield/datepickerfield.recipe.js +2 -2
- package/dist/esm/components/dialog/dialog.js +1 -1
- package/dist/esm/components/dialog/dialog.recipe.js +1 -1
- package/dist/esm/components/donutchart/donutchart.js +1 -1
- package/dist/esm/components/donutchart/donutchart.recipe.js +1 -1
- package/dist/esm/components/emptystate/emptystate.recipe.js +2 -2
- package/dist/esm/components/fileupload/fileupload.js +1 -1
- package/dist/esm/components/fileupload/fileupload.recipe.js +6 -6
- package/dist/esm/components/formfield/formfield.js +1 -1
- package/dist/esm/components/formfield/formfield.recipe.js +1 -1
- package/dist/esm/components/input/input.recipe.js +1 -1
- package/dist/esm/components/linechart/linechart.js +1 -1
- package/dist/esm/components/linechart/linechart.recipe.js +1 -1
- package/dist/esm/components/menu/menu.js +1 -1
- package/dist/esm/components/menu/menu.recipe.js +2 -2
- package/dist/esm/components/multiselect/multiselect.js +1 -1
- package/dist/esm/components/multiselect/multiselect.recipe.js +1 -1
- package/dist/esm/components/progress/progress.recipe.js +1 -1
- package/dist/esm/components/quantitypicker/quantitypicker.recipe.js +2 -2
- package/dist/esm/components/radiogroup/radiogroup.js +1 -1
- package/dist/esm/components/radiogroup/radiogroup.recipe.js +1 -1
- package/dist/esm/components/resizablepanel/resizablepanel.js +1 -1
- package/dist/esm/components/resizablepanel/resizablepanel.recipe.js +2 -2
- package/dist/esm/components/segmented/segmented.js +1 -1
- package/dist/esm/components/segmented/segmented.recipe.js +1 -1
- package/dist/esm/components/select/select.js +1 -1
- package/dist/esm/components/select/select.recipe.js +2 -2
- package/dist/esm/components/slider/slider.recipe.js +2 -2
- package/dist/esm/components/stagebar/stagebar.js +1 -1
- package/dist/esm/components/stagebar/stagebar.recipe.js +1 -1
- package/dist/esm/components/statcard/statcard.js +1 -1
- package/dist/esm/components/statcard/statcard.recipe.js +2 -2
- package/dist/esm/components/switch/switch.js +1 -1
- package/dist/esm/components/switch/switch.recipe.js +1 -1
- package/dist/esm/components/table/table.recipe.js +1 -1
- package/dist/esm/components/tabletoolbar/tabletoolbar.chrome.js +2 -2
- package/dist/esm/components/tabletoolbar/tabletoolbar.js +2 -2
- package/dist/esm/components/tabletoolbar/tabletoolbar.recipe.js +1 -1
- package/dist/esm/components/tabs/tabs.js +2 -2
- package/dist/esm/components/tabs/tabs.recipe.js +1 -1
- package/dist/esm/components/textarea/textarea.js +1 -1
- package/dist/esm/components/textarea/textarea.recipe.js +1 -1
- package/dist/esm/components/tooltip/tooltip.js +1 -1
- package/dist/esm/components/tooltip/tooltip.recipe.js +1 -1
- package/dist/esm/product/appshell/appshell.js +4 -4
- package/dist/esm/product/appshell/appshell.recipe.js +1 -1
- package/dist/esm/product/authshell/authshell.js +1 -1
- package/dist/esm/product/authshell/authshell.recipe.js +3 -3
- package/dist/esm/product/board/board.js +1 -1
- package/dist/esm/product/board/board.recipe.js +1 -1
- package/dist/esm/product/command/command.js +1 -1
- package/dist/esm/product/entitycard/entitycard.js +1 -1
- package/dist/esm/product/entitycard/entitycard.recipe.js +1 -1
- package/dist/esm/product/flowcanvas/flowcanvas.js +1 -1
- package/dist/esm/product/flowcanvas/flowcanvas.recipe.js +1 -1
- package/dist/esm/product/inbox/inbox.js +1 -1
- package/dist/esm/product/inbox/inbox.recipe.js +1 -1
- package/dist/esm/product/listpage/listpage.js +1 -1
- package/dist/esm/product/listpage/listpage.recipe.js +1 -1
- package/dist/esm/product/onboarding/onboarding.js +1 -1
- package/dist/esm/product/onboarding/onboarding.recipe.js +1 -1
- package/dist/esm/product/recordpage/recordpage.js +7 -7
- package/dist/esm/product/recordpage/recordpage.recipe.js +2 -2
- package/dist/esm/product/recordpanel/recordpanel.recipe.js +1 -1
- package/dist/esm/product/recordstable/recordstable.js +9 -9
- package/dist/esm/product/recordstable/recordstable.recipe.js +2 -2
- package/dist/esm/product/recordstable/recordstable.tag.js +1 -1
- package/dist/esm/product/richtext/richtext.js +1 -1
- package/dist/esm/product/richtext/richtext.recipe.js +1 -1
- package/dist/esm/product/settingssection/settingssection.js +1 -1
- package/dist/esm/product/settingssection/settingssection.recipe.js +1 -1
- package/dist/esm/product/settingsshell/settingsshell.js +1 -1
- package/dist/esm/product/settingsshell/settingsshell.recipe.js +2 -2
- package/dist/esm/product/sidebar/sidebar.js +6 -6
- package/dist/esm/product/tasklist/tasklist.js +1 -1
- package/dist/esm/product/tasklist/tasklist.recipe.js +1 -1
- package/dist/esm/product/trialbanner/trialbanner.js +1 -1
- package/dist/esm/product/trialbanner/trialbanner.recipe.js +2 -2
- package/dist/esm/product/viewtoggle/viewtoggle.js +1 -1
- package/dist/esm/product/viewtoggle/viewtoggle.recipe.js +1 -1
- package/dist/fileupload.css +2 -2
- package/dist/recordpage.css +1 -1
- package/dist/recordstable.css +1 -1
- package/dist/settingsshell.css +1 -1
- package/dist/styles.css +12 -12
- package/dist/types/components/avatargroup/avatargroup.d.ts +1 -1
- package/dist/types/components/barchart/barchart.d.ts +1 -1
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +1 -1
- package/dist/types/components/bulkbar/bulkbar.d.ts +1 -1
- package/dist/types/components/callout/callout.d.ts +1 -1
- package/dist/types/components/checkbox/checkbox.d.ts +1 -1
- package/dist/types/components/columncalc/columncalc.d.ts +5 -5
- package/dist/types/components/datatable/datatable.d.ts +5 -5
- package/dist/types/components/datepickerfield/datepickerfield.d.ts +1 -1
- package/dist/types/components/dialog/dialog.d.ts +1 -1
- package/dist/types/components/donutchart/donutchart.d.ts +1 -1
- package/dist/types/components/emptystate/emptystate.d.ts +1 -1
- package/dist/types/components/formfield/formfield.d.ts +1 -1
- package/dist/types/components/linechart/linechart.d.ts +1 -1
- package/dist/types/components/menu/menu.d.ts +1 -1
- package/dist/types/components/multiselect/multiselect.d.ts +1 -1
- package/dist/types/components/progress/progress.d.ts +1 -1
- package/dist/types/components/radiogroup/radiogroup.d.ts +1 -1
- package/dist/types/components/resizablepanel/resizablepanel.d.ts +4 -4
- package/dist/types/components/segmented/segmented.d.ts +1 -1
- package/dist/types/components/select/select.d.ts +2 -2
- package/dist/types/components/stagebar/stagebar.d.ts +1 -1
- package/dist/types/components/statcard/statcard.d.ts +1 -1
- package/dist/types/components/switch/switch.d.ts +1 -1
- package/dist/types/components/tabletoolbar/tabletoolbar.d.ts +1 -1
- package/dist/types/components/tabs/tabs.d.ts +2 -2
- package/dist/types/components/textarea/textarea.d.ts +1 -1
- package/dist/types/components/tooltip/tooltip.d.ts +1 -1
- package/dist/types/product/appshell/appshell.d.ts +2 -2
- package/dist/types/product/authshell/authshell.d.ts +1 -1
- package/dist/types/product/board/board.d.ts +1 -1
- package/dist/types/product/entitycard/entitycard.d.ts +1 -1
- package/dist/types/product/flowcanvas/flowcanvas.d.ts +1 -1
- package/dist/types/product/inbox/inbox.d.ts +1 -1
- package/dist/types/product/listpage/listpage.d.ts +1 -1
- package/dist/types/product/onboarding/onboarding.d.ts +1 -1
- package/dist/types/product/recordpage/recordpage.d.ts +2 -2
- package/dist/types/product/recordstable/recordstable.d.ts +10 -4
- package/dist/types/product/recordstable/recordstable.tag.d.ts +1 -1
- package/dist/types/product/richtext/richtext.d.ts +1 -1
- package/dist/types/product/settingssection/settingssection.d.ts +1 -1
- package/dist/types/product/settingsshell/settingsshell.d.ts +1 -1
- package/dist/types/product/sidebar/sidebar.d.ts +10 -10
- package/dist/types/product/tasklist/tasklist.d.ts +1 -1
- package/dist/types/product/trialbanner/trialbanner.d.ts +1 -1
- package/dist/types/product/viewtoggle/viewtoggle.d.ts +1 -1
- package/package.json +1 -1
package/dist/authshell.css
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
& .authshell-body .button { height: 36px; padding-inline: var(--space-3); border-radius: 10px; }
|
|
39
39
|
& .authshell-body .button--intent_primary { box-shadow: inset 0 0 0 1px rgba(0,0,0,0.06), 0 2px 4px -2px rgba(38,109,240,0.12), 0 3px 6px -2px rgba(38,109,240,0.08); }
|
|
40
40
|
|
|
41
|
-
/*
|
|
41
|
+
/* The preview pane drops out in JS on narrow viewports (measured: two
|
|
42
42
|
panes at 1393px, one at 954px), so 1200px is a chosen threshold inside
|
|
43
43
|
that bracket, not a measured value. A CONTAINER query, not a media
|
|
44
44
|
query: the shell is embedded in the docs inside an ~800px column, where
|
|
@@ -39,7 +39,7 @@ const lucide_react_1 = require("lucide-react");
|
|
|
39
39
|
const React = __importStar(require("react"));
|
|
40
40
|
const accordion_recipe_1 = require("./accordion.recipe");
|
|
41
41
|
/**
|
|
42
|
-
* A collapsible section list — measured from
|
|
42
|
+
* A collapsible section list — measured from sidebar groups. Single or
|
|
43
43
|
* multiple open; panels animate their height (grid-rows 0fr->1fr). Headers are
|
|
44
44
|
* buttons with `aria-expanded` / `aria-controls`.
|
|
45
45
|
*/
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.accordionRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A stack of collapsible sections —
|
|
6
|
+
// A stack of collapsible sections — sidebar sections / "view all".
|
|
7
7
|
// The panel animates height via the grid-template-rows 0fr->1fr technique.
|
|
8
8
|
const config = (0, core_1.defineRecipe)({
|
|
9
9
|
name: "accordion",
|
|
@@ -40,7 +40,7 @@ const avatar_1 = require("../avatar/avatar");
|
|
|
40
40
|
const avatargroup_recipe_1 = require("./avatargroup.recipe");
|
|
41
41
|
/**
|
|
42
42
|
* A stack of overlapping avatars with an optional "+N" overflow chip — measured
|
|
43
|
-
* from
|
|
43
|
+
* from team / member rows. Pass `<Avatar>` children; each is ringed in
|
|
44
44
|
* the surface colour so it reads against its neighbour.
|
|
45
45
|
*/
|
|
46
46
|
function AvatarGroup({ children, max, size = "md", className, "aria-label": ariaLabel, ...rest }) {
|
|
@@ -14,7 +14,7 @@ function niceNum(raw) {
|
|
|
14
14
|
return step * mag;
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
* A responsive bar chart
|
|
17
|
+
* A responsive bar chart for dashboards. Pure CSS, so
|
|
18
18
|
* it scales with its container. Renders `role="img"` with an accessible summary.
|
|
19
19
|
*/
|
|
20
20
|
function BarChart({ data, height = 240, max, ticks = 5, color, format = (n) => n.toLocaleString(), yAxisWidth, xAxisTitle, "aria-label": ariaLabel, className, ...rest }) {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.barchartRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A responsive bar chart — measured from
|
|
6
|
+
// A responsive bar chart — measured from a Reports dashboard: brand bars
|
|
7
7
|
// with rounded tops over dashed horizontal gridlines, a value axis on the left,
|
|
8
8
|
// and category labels below. Pure CSS (no SVG), so it scales with its container.
|
|
9
9
|
const config = (0, core_1.defineRecipe)({
|
|
@@ -39,7 +39,7 @@ const lucide_react_1 = require("lucide-react");
|
|
|
39
39
|
const React = __importStar(require("react"));
|
|
40
40
|
const breadcrumb_recipe_1 = require("./breadcrumb.recipe");
|
|
41
41
|
/**
|
|
42
|
-
* A breadcrumb trail — measured from
|
|
42
|
+
* A breadcrumb trail — measured from a record-page nav. The last item is
|
|
43
43
|
* marked `aria-current="page"`; earlier items render as links or buttons.
|
|
44
44
|
*/
|
|
45
45
|
function Breadcrumb({ items, separator, "aria-label": ariaLabel = "Breadcrumb", className, ...rest }) {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.breadcrumbRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A breadcrumb trail —
|
|
6
|
+
// A breadcrumb trail — record-page nav ("Companies / Google").
|
|
7
7
|
const config = (0, core_1.defineRecipe)({
|
|
8
8
|
name: "breadcrumb",
|
|
9
9
|
base: `display: flex; align-items: center; gap: ${tokens_1.contract.space["0.5"]}; font-family: ${tokens_1.contract.font.sans}; font-size: ${tokens_1.contract.text.lg};
|
|
@@ -42,7 +42,7 @@ const bulkbar_recipe_1 = require("./bulkbar.recipe");
|
|
|
42
42
|
/**
|
|
43
43
|
* A floating bulk-action bar. Rises from the bottom-centre of its nearest
|
|
44
44
|
* positioned ancestor when a selection is active; render it conditionally
|
|
45
|
-
* (e.g. `count > 0 && <BulkBar …/>`). Measured from
|
|
45
|
+
* (e.g. `count > 0 && <BulkBar …/>`). Measured from a records table.
|
|
46
46
|
*/
|
|
47
47
|
function BulkBar({ count, onClear, countLabel = "selected", countText = (count, label) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [count, " ", label] })), children, className, clearLabel = "Clear selection", ...rest }) {
|
|
48
48
|
return ((0, jsx_runtime_1.jsx)("div", { className: (0, bulkbar_recipe_1.bulkbarRecipe)({ className }), ...rest, children: (0, jsx_runtime_1.jsxs)("div", { className: "bulkbar-bar", children: [count != null && ((0, jsx_runtime_1.jsxs)("button", { type: "button", className: "bulkbar-count", onClick: onClear, title: clearLabel, children: [countText(count, countLabel), (0, jsx_runtime_1.jsx)(lucide_react_1.X, { size: 13, strokeWidth: 2, "aria-hidden": "true" })] })), children] }) }));
|
|
@@ -5,7 +5,7 @@ const core_1 = require("../../core");
|
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
6
|
// A floating bulk-action bar — the pill that rises from the bottom of a
|
|
7
7
|
// selection surface (a table, a gallery) when one or more rows are selected.
|
|
8
|
-
// Measured from
|
|
8
|
+
// Measured from a records-table bulk bar. The root is an absolutely-
|
|
9
9
|
// positioned anchor that centres the bar with flex (NOT a transform): a resting
|
|
10
10
|
// transform on the bar would reparent any `position: fixed` menu inside it (the
|
|
11
11
|
// "More" overflow), detaching it — the enter slide lives in @starting-style only.
|
|
@@ -12,7 +12,7 @@ const DEFAULT_ICONS = {
|
|
|
12
12
|
danger: lucide_react_1.CircleAlert,
|
|
13
13
|
};
|
|
14
14
|
/**
|
|
15
|
-
* An inline callout / banner — measured from
|
|
15
|
+
* An inline callout / banner — measured from info notices. `tone` tints
|
|
16
16
|
* the background and icon; pass a `title` and/or body `children`.
|
|
17
17
|
*/
|
|
18
18
|
function Callout({ tone = "neutral", icon, title, children, action, className, ...rest }) {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.calloutRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A callout / banner —
|
|
6
|
+
// A callout / banner — inline info notices (e.g. "Changes apply to all
|
|
7
7
|
// workspaces", the trial banner). Tone tints the background + icon.
|
|
8
8
|
const config = (0, core_1.defineRecipe)({
|
|
9
9
|
name: "callout",
|
|
@@ -39,7 +39,7 @@ const React = __importStar(require("react"));
|
|
|
39
39
|
const core_1 = require("../../core");
|
|
40
40
|
const checkbox_recipe_1 = require("./checkbox.recipe");
|
|
41
41
|
/**
|
|
42
|
-
* A native `<input type="checkbox">` styled to
|
|
42
|
+
* A native `<input type="checkbox">` styled to the measured grid checkbox (16px,
|
|
43
43
|
* r6, brand fill + white check). Native on purpose: keyboard, focus, and form
|
|
44
44
|
* semantics come for free. `indeterminate` is a DOM-only property, so it is
|
|
45
45
|
* applied via ref rather than an attribute.
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.checkboxRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A 16px square checkbox measured from
|
|
6
|
+
// A 16px square checkbox measured from a record grid: r6, a subtle 1px
|
|
7
7
|
// inset ring when empty, brand fill + white check when on. The check is a
|
|
8
8
|
// data-URI SVG background so it renders reliably (input pseudo-content doesn't).
|
|
9
9
|
const CHECK = "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\")";
|
|
@@ -42,14 +42,14 @@ const lucide_react_1 = require("lucide-react");
|
|
|
42
42
|
const React = __importStar(require("react"));
|
|
43
43
|
const menu_1 = require("../menu");
|
|
44
44
|
const columncalc_recipe_1 = require("./columncalc.recipe");
|
|
45
|
-
/** The four
|
|
45
|
+
/** The four calcs offered on every column, in their order. */
|
|
46
46
|
exports.UNIVERSAL_CALCS = [
|
|
47
47
|
"countEmpty",
|
|
48
48
|
"countFilled",
|
|
49
49
|
"percentEmpty",
|
|
50
50
|
"percentFilled",
|
|
51
51
|
];
|
|
52
|
-
/** The four
|
|
52
|
+
/** The four calcs added for numeric columns, in their order. */
|
|
53
53
|
exports.NUMERIC_CALCS = ["sum", "average", "min", "max"];
|
|
54
54
|
exports.CALC_LABEL = {
|
|
55
55
|
none: "None",
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.columncalcRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
//
|
|
6
|
+
// The column footer calculation. The summary row is 36px and sticky at the
|
|
7
7
|
// grid's bottom edge; each cell holds a quiet trigger that reads "Add
|
|
8
8
|
// calculation" until an aggregation is chosen, then shows the value with its
|
|
9
9
|
// operation name beside it.
|
|
@@ -14,7 +14,7 @@ const config = (0, core_1.defineRecipe)({
|
|
|
14
14
|
shrink the button back to its text. Make the wrapper fill too, so the
|
|
15
15
|
whole cell stays clickable. */
|
|
16
16
|
& .menu { width: 100%; height: 100%; }
|
|
17
|
-
/*
|
|
17
|
+
/* The hit target is the WHOLE summary cell -- measured 246x37 with
|
|
18
18
|
padding 0 12px, not a content-sized chip. Clicking anywhere in the cell
|
|
19
19
|
opens the aggregation menu. */
|
|
20
20
|
& .columncalc-trigger { display: flex; align-items: center; gap: ${tokens_1.contract.space["1"]}; width: 100%; height: 100%; min-height: ${tokens_1.contract.size.tableRow}; margin: 0; padding: 0 ${tokens_1.contract.space["3"]}; border: none; border-radius: ${tokens_1.contract.radius.md}; background: transparent; color: ${tokens_1.contract.fgMuted}; font-family: inherit; font-size: ${tokens_1.contract.text.md}; font-weight: ${tokens_1.contract.weight.medium}; white-space: nowrap; cursor: pointer; transition: background-color .12s, color .12s; }
|
|
@@ -69,7 +69,7 @@ function asText(v) {
|
|
|
69
69
|
return v.join(", ");
|
|
70
70
|
return String(v);
|
|
71
71
|
}
|
|
72
|
-
// stable pastel tone per string value — colour-coded tags/statuses
|
|
72
|
+
// stable pastel tone per string value — colour-coded tags/statuses
|
|
73
73
|
const TAG_TONES = [
|
|
74
74
|
"brand",
|
|
75
75
|
"success",
|
|
@@ -277,8 +277,8 @@ function DataTable({ columns: columnsProp, data, selectable = false, selectedIds
|
|
|
277
277
|
});
|
|
278
278
|
}, [filtered, sorts, colByKey]);
|
|
279
279
|
/**
|
|
280
|
-
* Rows bucketed under a heading, preserving first-seen group order (
|
|
281
|
-
*
|
|
280
|
+
* Rows bucketed under a heading, preserving first-seen group order (a
|
|
281
|
+
* grouped view without reordering within a group). One bucket with a null
|
|
282
282
|
* group when `groupBy` is absent, so the render path is identical either way.
|
|
283
283
|
*/
|
|
284
284
|
const groupedRows = React.useMemo(() => {
|
|
@@ -310,7 +310,7 @@ function DataTable({ columns: columnsProp, data, selectable = false, selectedIds
|
|
|
310
310
|
}
|
|
311
311
|
function cycleSort(key) {
|
|
312
312
|
// Clicking a header drives a single sort, as before. Multi-sort is supplied
|
|
313
|
-
// by the caller through the `sort` prop (
|
|
313
|
+
// by the caller through the `sort` prop (built in a sort popover).
|
|
314
314
|
const dir = sortDirByKey.get(key);
|
|
315
315
|
if (!dir)
|
|
316
316
|
setSort({ key, dir: "asc" });
|
|
@@ -320,7 +320,7 @@ function DataTable({ columns: columnsProp, data, selectable = false, selectedIds
|
|
|
320
320
|
setSort(null);
|
|
321
321
|
}
|
|
322
322
|
/**
|
|
323
|
-
* Which editor a column gets. Mirrors RecordsTable — the
|
|
323
|
+
* Which editor a column gets. Mirrors RecordsTable — the measured
|
|
324
324
|
* sibling — rather than giving every type the same text box:
|
|
325
325
|
* number/currency numeric, with a decimal keypad on touch
|
|
326
326
|
* date a native date field
|
|
@@ -17,7 +17,7 @@ const config = (0, core_1.defineRecipe)({
|
|
|
17
17
|
& .datatable-search input::placeholder { color: ${tokens_1.contract.fgMuted}; }
|
|
18
18
|
& .datatable-search input:focus { box-shadow: inset 0 0 0 1px ${tokens_1.contract.bgBrandSolid}; }
|
|
19
19
|
& .datatable-count { margin-inline-start: auto; font-size: ${tokens_1.contract.text.md}; color: ${tokens_1.contract.fgMuted}; }
|
|
20
|
-
/*
|
|
20
|
+
/* The header cell has no padding of its own -- the button owns the
|
|
21
21
|
full cell so the whole header is clickable (its own inset is 12px).
|
|
22
22
|
Mirrors the summary-row fix. */
|
|
23
23
|
& th { padding: 0; }
|
|
@@ -31,11 +31,11 @@ const config = (0, core_1.defineRecipe)({
|
|
|
31
31
|
& th .menu { width: 100%; height: 100%; }
|
|
32
32
|
& .datatable-th-inner { display: inline-flex; align-items: center; gap: ${tokens_1.contract.space["1.5"]}; width: 100%; min-width: 0; height: 100%; }
|
|
33
33
|
& .datatable-th-inner > svg { flex-shrink: 0; color: ${tokens_1.contract.fgMuted}; }
|
|
34
|
-
/*
|
|
34
|
+
/* The summary cell has NO padding of its own -- the calculation trigger
|
|
35
35
|
owns the whole 246x37 area so a click anywhere in the cell opens the
|
|
36
36
|
menu. Zero the cell's inset and let ColumnCalc supply the 12px. */
|
|
37
37
|
& tfoot td { padding: 0; }
|
|
38
|
-
/* Group heading row --
|
|
38
|
+
/* Group heading row -- a view is grouped under a subtle label with the
|
|
39
39
|
bucket's count beside it. */
|
|
40
40
|
& .datatable-viewsettings { display: inline-flex; align-items: center; gap: ${tokens_1.contract.space["1.5"]}; height: ${tokens_1.contract.size.row}; margin: 0; padding: 0 ${tokens_1.contract.space["2"]}; border: none; border-radius: ${tokens_1.contract.radius.md}; background: transparent; color: ${tokens_1.contract.fgMuted}; font-family: inherit; font-size: ${tokens_1.contract.text.md}; font-weight: ${tokens_1.contract.weight.medium}; white-space: nowrap; cursor: pointer; transition: background-color .12s, color .12s; }
|
|
41
41
|
& .datatable-viewsettings:hover { background: color-mix(in srgb, ${tokens_1.contract.fgPrimary} 4%, transparent); color: ${tokens_1.contract.fgPrimary}; }
|
|
@@ -93,13 +93,13 @@ const config = (0, core_1.defineRecipe)({
|
|
|
93
93
|
& .datatable-tag[data-tone="orange"] { background: color-mix(in srgb, ${tokens_1.contract.bgOrange} 16%, transparent); color: color-mix(in srgb, ${tokens_1.contract.bgOrange} 82%, ${tokens_1.contract.fgPrimary}); }
|
|
94
94
|
& .datatable-num { font-variant-numeric: tabular-nums; }
|
|
95
95
|
& .datatable-muted { color: ${tokens_1.contract.fgMuted}; }
|
|
96
|
-
/* row drag-to-reorder --
|
|
96
|
+
/* row drag-to-reorder -- a Settings > Objects > Attributes screen measures
|
|
97
97
|
a leading 20px grip column, a 16px grip icon, and the row's own
|
|
98
98
|
hairline doubling as the drop indicator (it tints toward the brand
|
|
99
99
|
colour as the active drop target). The affordance + geometry are
|
|
100
100
|
measured; the drag MECHANISM is crisp's existing house idiom -- HTML5
|
|
101
101
|
draggable + dataTransfer, the same one column reorder already uses
|
|
102
|
-
(RecordsTable's reorderColumn) -- not
|
|
102
|
+
(RecordsTable's reorderColumn) -- not a proprietary
|
|
103
103
|
pointer-events implementation. */
|
|
104
104
|
& .datatable-col-grip { width: 20px; padding: 0; text-align: center; }
|
|
105
105
|
& .datatable-grip { display: inline-flex; align-items: center; justify-content: center; width: 100%; height: 100%; margin: 0; border: none; border-radius: 0; background: none; font-family: inherit; color: ${tokens_1.contract.fgMuted}; cursor: grab; }
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.datepickerRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// seed-design's calendar structure on
|
|
7
|
-
// markup and range model are seed's; every visual value is measured from
|
|
8
|
-
//
|
|
6
|
+
// seed-design's calendar structure on the measured scale. The behaviour,
|
|
7
|
+
// markup and range model are seed's; every visual value is measured from a
|
|
8
|
+
// live date picker (task due-date field): a 32px day on a 34px
|
|
9
9
|
// pitch, an 8px-radius highlight rather than a circle, 14/20 medium numerals and
|
|
10
10
|
// the brand blue for the selection.
|
|
11
11
|
//
|
|
@@ -53,7 +53,7 @@ const fromDate = (d) => ({
|
|
|
53
53
|
day: d.getDate(),
|
|
54
54
|
});
|
|
55
55
|
/**
|
|
56
|
-
*
|
|
56
|
+
* A measured date field: a trigger showing the value, opening a calendar in a
|
|
57
57
|
* popover. This is what `DatePicker` used to be; `DatePicker` is now
|
|
58
58
|
* seed-design's bare calendar, and this composes it.
|
|
59
59
|
*/
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.datepickerfieldRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// The trigger crisp's DatePicker used to own, measured
|
|
6
|
+
// The trigger crisp's DatePicker used to own, measured live: a 32px
|
|
7
7
|
// outlined chip showing the value, opening a calendar in a popover. Split out
|
|
8
|
-
// when DatePicker became seed-design's bare calendar, so this
|
|
8
|
+
// when DatePicker became seed-design's bare calendar, so this measured
|
|
9
9
|
// field survives unchanged for the consumers already using it.
|
|
10
10
|
const config = (0, core_1.defineRecipe)({
|
|
11
11
|
name: "datepickerfield",
|
|
@@ -57,7 +57,7 @@ function useDialogInstanceId() {
|
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
59
|
* A modal dialog — composes Zag's dialog machine (focus trap, scroll lock,
|
|
60
|
-
* Escape / outside-click dismissal) with the measured
|
|
60
|
+
* Escape / outside-click dismissal) with the measured modal surface.
|
|
61
61
|
* Compose the body with `DialogBody` and actions with `DialogFooter`.
|
|
62
62
|
*/
|
|
63
63
|
function Dialog({ open, onOpenChange, title, icon, width = 640, "aria-label": ariaLabel, closeLabel = "Close", children, className, style, "aria-describedby": describedBy, ...rest }) {
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.dialogRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A modal dialog surface — measured from
|
|
6
|
+
// A modal dialog surface — measured from a create-record modal: a radius-16
|
|
7
7
|
// frosted-glass card (60% tinted background + 15px backdrop blur, both re-measured
|
|
8
8
|
// per theme — light uses a blue-tinted 3-layer shadow, dark drops to a plain
|
|
9
9
|
// 2-layer black shadow) with a bordered header (title + close), a scrollable
|
|
@@ -15,7 +15,7 @@ const PALETTE = [
|
|
|
15
15
|
tokens_1.contract.bgDanger,
|
|
16
16
|
];
|
|
17
17
|
/**
|
|
18
|
-
* A donut / ring chart — measured from
|
|
18
|
+
* A donut / ring chart — measured from a reports breakdown report. SVG
|
|
19
19
|
* ring using the r=15.915 (circumference 100) trick so slices are percentages;
|
|
20
20
|
* a centred total and an optional legend. `role="img"` with a summary.
|
|
21
21
|
*/
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.donutchartRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A donut / ring chart — measured from
|
|
6
|
+
// A donut / ring chart — measured from Reports breakdown reports: a
|
|
7
7
|
// segmented ring with a centred total, plus a legend of coloured swatches with
|
|
8
8
|
// labels and values. Pure SVG ring; HTML legend.
|
|
9
9
|
const config = (0, core_1.defineRecipe)({
|
|
@@ -15,9 +15,9 @@ const config = (0, core_1.defineRecipe)({
|
|
|
15
15
|
variant: {
|
|
16
16
|
// compact icon tile (default)
|
|
17
17
|
default: ``,
|
|
18
|
-
// a large icon on a dotted-grid backdrop —
|
|
18
|
+
// a large icon on a dotted-grid backdrop — a Developers/Reports empty state
|
|
19
19
|
illustrated: `& .emptystate-icon { width: 132px; height: 96px; margin-bottom: ${tokens_1.contract.space["2"]}; border-radius: 0; color: color-mix(in srgb, ${tokens_1.contract.fgPrimary} 22%, transparent); background: radial-gradient(circle, color-mix(in srgb, ${tokens_1.contract.fgPrimary} 12%, transparent) 1.2px, transparent 1.2px) 0 0 / 16px 16px; }`,
|
|
20
|
-
//
|
|
20
|
+
// A full-view empty state (measured from a filtered-to-zero records table):
|
|
21
21
|
// a 45px ringed circle icon, a 20/24 semibold heading, a 14/20 medium muted body,
|
|
22
22
|
// then a primary action. Gaps are 16 / 8 / 16 (icon→title→desc→action).
|
|
23
23
|
page: `gap: ${tokens_1.contract.space["2"]};
|
|
@@ -43,7 +43,7 @@ const React = __importStar(require("react"));
|
|
|
43
43
|
const core_1 = require("../../core");
|
|
44
44
|
const fileupload_recipe_1 = require("./fileupload.recipe");
|
|
45
45
|
exports.fileUploadLabels = {
|
|
46
|
-
//
|
|
46
|
+
// Matches the copy on the record Files pane.
|
|
47
47
|
title: "No files",
|
|
48
48
|
hint: "Drag a file here or choose one from your computer.",
|
|
49
49
|
remove: "Remove file",
|
|
@@ -3,17 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.fileuploadRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// seed-design's file-upload behaviour on
|
|
6
|
+
// seed-design's file-upload behaviour on the measured scale.
|
|
7
7
|
//
|
|
8
|
-
// Measured from
|
|
8
|
+
// Measured from a record Files pane (Deal record → Files, empty state):
|
|
9
9
|
// the title is 16/20 at weight 600 in `rgb(16,17,18)` (= gray900 = fgPrimary),
|
|
10
10
|
// the hint 14/20 at weight 500 in `rgba(0,0,0,0.63)`, and the action button is
|
|
11
11
|
// 28px tall with an 8px corner.
|
|
12
12
|
//
|
|
13
|
-
//
|
|
13
|
+
// That pane draws NO boundary around itself -- the whole surface is the drop
|
|
14
14
|
// target -- but a reusable dropzone needs an edge, so the dashed affordance is
|
|
15
15
|
// crisp's own measured one from `sidebar-newlist` (1px dashed borderDefault,
|
|
16
|
-
// r8, bgRaised on hover) rather than a new invention.
|
|
16
|
+
// r8, bgRaised on hover) rather than a new invention. The drag-OVER
|
|
17
17
|
// treatment could not be measured: synthetic DragEvents do not trigger its
|
|
18
18
|
// handlers. The active state therefore reuses the brand emphasis crisp already
|
|
19
19
|
// uses for a live drag affordance (`appshell-resize[data-dragging]`).
|
|
@@ -43,12 +43,12 @@ const config = (0, core_1.defineRecipe)({
|
|
|
43
43
|
& .fileupload-zone[data-disabled] { opacity: .5; cursor: not-allowed; }
|
|
44
44
|
& .fileupload-zone[data-invalid] { border-color: ${tokens_1.contract.bgDanger}; }
|
|
45
45
|
|
|
46
|
-
/*
|
|
46
|
+
/* "No files" 16/20 weight 600 */
|
|
47
47
|
& .fileupload-title {
|
|
48
48
|
color: ${tokens_1.contract.fgPrimary}; font-size: ${tokens_1.contract.text.xl}; line-height: 20px;
|
|
49
49
|
font-weight: ${tokens_1.contract.weight.semibold};
|
|
50
50
|
}
|
|
51
|
-
/*
|
|
51
|
+
/* The hint line, 14/20 weight 500 at 63% of the foreground */
|
|
52
52
|
& .fileupload-hint {
|
|
53
53
|
color: color-mix(in srgb, ${tokens_1.contract.fgPrimary} 63%, transparent);
|
|
54
54
|
font-size: ${tokens_1.contract.text.lg}; line-height: 20px;
|
|
@@ -88,7 +88,7 @@ function useFieldWiring({ htmlFor, messageId, invalid, required, }) {
|
|
|
88
88
|
}, [htmlFor, messageId, invalid, required]);
|
|
89
89
|
}
|
|
90
90
|
/**
|
|
91
|
-
* A labelled form field — measured from
|
|
91
|
+
* A labelled form field — measured from settings forms. A muted label
|
|
92
92
|
* above any control, with an optional description or error line below. When
|
|
93
93
|
* `error` is set it replaces the description; the control is given
|
|
94
94
|
* `aria-describedby`, plus `aria-invalid` and `aria-required` as they apply.
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.formfieldRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A labelled form field — measured from
|
|
6
|
+
// A labelled form field — measured from Settings forms: a 12px/500 muted
|
|
7
7
|
// label above the control, with an optional description or danger error line
|
|
8
8
|
// below. Wraps any control (Input, Select, Textarea…).
|
|
9
9
|
const config = (0, core_1.defineRecipe)({
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.inputRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// Geometry is
|
|
6
|
+
// Geometry is measured: 32/36px tall, r8/r10, 10/12px side padding.
|
|
7
7
|
// The FOCUS TREATMENT is seed-design's, measured from @seed-design/css: a 2px
|
|
8
8
|
// ring on an ::after overlay that is present-but-transparent at rest, so
|
|
9
9
|
// focusing cannot shift layout the way a width change would, and animates
|
|
@@ -13,7 +13,7 @@ function niceNum(raw) {
|
|
|
13
13
|
return step * mag;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
* A responsive line chart — measured from
|
|
16
|
+
* A responsive line chart — measured from a reports historical chart.
|
|
17
17
|
* A stretched SVG line/area (non-scaling stroke keeps it crisp) over dashed
|
|
18
18
|
* gridlines; dots are HTML so they stay round. `role="img"` with a summary.
|
|
19
19
|
*/
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.linechartRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A responsive line chart — measured from
|
|
6
|
+
// A responsive line chart — measured from Reports historical charts: a
|
|
7
7
|
// brand line with a soft area fill over dashed horizontal gridlines, a value
|
|
8
8
|
// axis on the left, and category labels below. The plot is an SVG stretched to
|
|
9
9
|
// its box (non-scaling stroke keeps the line crisp); axes are HTML.
|
|
@@ -46,7 +46,7 @@ const menu_recipe_1 = require("./menu.recipe");
|
|
|
46
46
|
const menu_keyboard_1 = require("./menu-keyboard");
|
|
47
47
|
const MenuContext = React.createContext(null);
|
|
48
48
|
/**
|
|
49
|
-
* A dropdown menu — the ⋯ / sort / filter menu surface, on
|
|
49
|
+
* A dropdown menu — the ⋯ / sort / filter menu surface, on a measured
|
|
50
50
|
* popover. Give it a `trigger` element and Menu items as children. Opens on
|
|
51
51
|
* click / ↓ / Enter; roving-focus keyboard model (↑/↓ move, Home/End jump,
|
|
52
52
|
* typeahead, Enter/Space select, Esc closes and returns focus to the trigger);
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.menuRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A dropdown menu — same popover surface
|
|
7
|
-
// menus (measured from
|
|
6
|
+
// A dropdown menu — same popover surface used for ⋯ / sort / filter
|
|
7
|
+
// menus (measured from listboxes): radius 12, 4px padding, a layered
|
|
8
8
|
// soft shadow, over 32px items (radius 8, icon + label + optional shortcut /
|
|
9
9
|
// check). The content is rendered inside this relative root so it keeps these
|
|
10
10
|
// nested styles while escaping the trigger's own box.
|
|
@@ -60,7 +60,7 @@ function Chip({ opt }) {
|
|
|
60
60
|
return ((0, jsx_runtime_1.jsx)("span", { className: "recordstable-tag", "data-tone": opt.tone ?? toneFor(opt.value), children: opt.label }));
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
|
-
* A multi-select / tag editor — measured from
|
|
63
|
+
* A multi-select / tag editor — measured from a cell tag picker. The
|
|
64
64
|
* outlined trigger shows the selected values as coloured chips; it opens a
|
|
65
65
|
* popover with a search field over rows of "[chip] … [checkbox]" that toggle on
|
|
66
66
|
* click (the menu stays open). Keyboard: ↑/↓ move, Enter toggles, Esc closes.
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.multiselectRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A multi-select / tag editor — measured from
|
|
6
|
+
// A multi-select / tag editor — measured from a cell tag picker: an
|
|
7
7
|
// outlined trigger showing the selected values as coloured chips, opening a
|
|
8
8
|
// popover with a search field over rows of "[coloured chip] … [checkbox]" that
|
|
9
9
|
// toggle on click. The popover keeps these nested styles by rendering inside
|
|
@@ -4,7 +4,7 @@ exports.progressRecipe = void 0;
|
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
6
|
// A progress indicator — a continuous brand-filled track, or a segmented row of
|
|
7
|
-
// pills (
|
|
7
|
+
// pills (a "Getting started 3/6" bar).
|
|
8
8
|
const config = (0, core_1.defineRecipe)({
|
|
9
9
|
name: "progress",
|
|
10
10
|
base: `display: block; box-sizing: border-box; height: 6px; border-radius: ${tokens_1.contract.radius.full}; background: color-mix(in srgb, ${tokens_1.contract.fgPrimary} 8%, transparent); overflow: hidden;
|
|
@@ -5,8 +5,8 @@ const core_1 = require("../../core");
|
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
6
|
// seed-design's quantity-picker, shape for shape, in crisp's colours.
|
|
7
7
|
//
|
|
8
|
-
//
|
|
9
|
-
// as with Slider there is nothing
|
|
8
|
+
// No stepper exists — quantity-ish fields are plain number inputs — so
|
|
9
|
+
// as with Slider there is nothing measured to draw from and the GEOMETRY is
|
|
10
10
|
// seed's own, read from `@seed-design/css/recipes/quantity-picker.css`:
|
|
11
11
|
//
|
|
12
12
|
// size root height / button square radius icon text
|
|
@@ -42,7 +42,7 @@ const radiogroup_recipe_1 = require("./radiogroup.recipe");
|
|
|
42
42
|
const radiogroup_keyboard_1 = require("./radiogroup-keyboard");
|
|
43
43
|
const RadioContext = React.createContext(null);
|
|
44
44
|
/**
|
|
45
|
-
* A radio group — measured from
|
|
45
|
+
* A radio group — measured from a settings page. `default` renders rows (a ring
|
|
46
46
|
* that fills brand when selected + a label); `card` renders a row of bordered
|
|
47
47
|
* preview cards whose border turns brand when picked (the Theme picker). Arrow
|
|
48
48
|
* keys move between options (roving focus). Controlled or uncontrolled.
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.radiogroupRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A radio group with two shapes, measured from
|
|
6
|
+
// A radio group with two shapes, measured from settings: the default is
|
|
7
7
|
// a column of rows (a 16px ring that fills brand when selected + a label); the
|
|
8
8
|
// `card` variant is a row of bordered preview cards (radius 16) whose border
|
|
9
9
|
// turns brand (#266df0) when selected — the Appearance "Theme" picker.
|
|
@@ -94,7 +94,7 @@ function writeStoredPercent(key, percent, storage = window.localStorage) {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
/**
|
|
97
|
-
*
|
|
97
|
+
* An adjustable-panel primitive: a spacer that reserves layout width
|
|
98
98
|
* plus a panel that overlays it, so the panel can move between docked
|
|
99
99
|
* (in-flow) and floating (`position: fixed`, an overlay) without a reflow
|
|
100
100
|
* glitch. Drag the edge handle to resize; constraints are CSS `min-width`/
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.resizablepanelRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
//
|
|
7
|
-
//
|
|
6
|
+
// The adjustable-panel primitive (measured live). Two elements carry the
|
|
7
|
+
// layout: an
|
|
8
8
|
// invisible SPACER that reserves flow width (it alone animates `width`, a
|
|
9
9
|
// cheap reflow of a leaf node) and the PANEL, taken out of flow with
|
|
10
10
|
// `position: absolute` and drawn on top of the spacer. That split is what
|
|
@@ -40,7 +40,7 @@ const core_1 = require("../../core");
|
|
|
40
40
|
const radiogroup_1 = require("../radiogroup");
|
|
41
41
|
const segmented_recipe_1 = require("./segmented.recipe");
|
|
42
42
|
/**
|
|
43
|
-
* A segmented control (single-choice toggle) — measured from
|
|
43
|
+
* A segmented control (single-choice toggle) — measured from a view
|
|
44
44
|
* switcher. `role="radiogroup"` over `role="radio"` buttons with roving
|
|
45
45
|
* tabindex and ←/→ (Home/End) keyboard selection.
|
|
46
46
|
*/
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.segmentedRecipe = void 0;
|
|
4
4
|
const core_1 = require("../../core");
|
|
5
5
|
const tokens_1 = require("../../tokens");
|
|
6
|
-
// A segmented control —
|
|
6
|
+
// A segmented control — a view switcher: a subtle track holding options,
|
|
7
7
|
// the selected one raised on a white pill.
|
|
8
8
|
const config = (0, core_1.defineRecipe)({
|
|
9
9
|
name: "segmented",
|
|
@@ -46,7 +46,7 @@ function optionText(o) {
|
|
|
46
46
|
return typeof o.label === "string" ? o.label : o.value;
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
|
-
* A select / dropdown — the settings control, measured
|
|
49
|
+
* A select / dropdown — the settings control, measured live, with an
|
|
50
50
|
* optional Linear-style search. A `role="combobox"` trigger opens a
|
|
51
51
|
* `role="listbox"`; pass `searchable` to add a filter field at the top (with a
|
|
52
52
|
* "No results" empty state). Full keyboard model — ↑/↓ move, Enter/Space pick,
|