@estiva-app/ui 0.41.0 → 0.43.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.
- package/dist/CommandPalette.d.ts +16 -0
- package/dist/CommandPalette.d.ts.map +1 -1
- package/dist/Field.d.ts.map +1 -1
- package/dist/Form.d.ts +18 -1
- package/dist/Form.d.ts.map +1 -1
- package/dist/Select.d.ts.map +1 -1
- package/dist/eslint/index.js +15 -1
- package/dist/eslint/index.js.map +3 -3
- package/dist/eslint/no-restyled-part.d.ts +4 -0
- package/dist/eslint/no-restyled-part.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -17
- package/dist/index.js.map +2 -2
- package/dist/looks.d.ts +6 -4
- package/dist/looks.d.ts.map +1 -1
- package/package.json +1 -1
- package/registry.json +67 -16
- package/src/ChipInput.tsx +1 -1
- package/src/CommandPalette.mdx +6 -0
- package/src/CommandPalette.stories.tsx +26 -1
- package/src/CommandPalette.test.tsx +14 -0
- package/src/CommandPalette.tsx +35 -4
- package/src/DialogShell.stories.tsx +4 -3
- package/src/Field.mdx +5 -0
- package/src/Field.tsx +4 -1
- package/src/Form.mdx +9 -3
- package/src/Form.stories.tsx +18 -1
- package/src/Form.test.tsx +17 -3
- package/src/Form.tsx +20 -2
- package/src/ListColumn.stories.tsx +1 -1
- package/src/Select.tsx +3 -0
- package/src/eslint/no-restyled-part.test.ts +17 -1
- package/src/eslint/no-restyled-part.ts +26 -1
- package/src/index.ts +2 -0
- package/src/looks.ts +6 -4
- package/src/registry/registry.test.ts +3 -3
package/dist/CommandPalette.d.ts
CHANGED
|
@@ -124,4 +124,20 @@ export interface CommandPaletteQuoteProps {
|
|
|
124
124
|
}
|
|
125
125
|
/** Text written to be used elsewhere, set off by a rule at its left edge. */
|
|
126
126
|
export declare function CommandPaletteQuote({ children }: CommandPaletteQuoteProps): import("react").JSX.Element;
|
|
127
|
+
export interface CommandPaletteProposalProps {
|
|
128
|
+
/** Where it would be made: the app and the action — "App › New item". */
|
|
129
|
+
source: string;
|
|
130
|
+
/** The app's mark before the source, as small as the line (about 10px). */
|
|
131
|
+
mark?: ReactNode;
|
|
132
|
+
/** What would be made, in a sentence. */
|
|
133
|
+
children: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Something the palette offers to make, before anything is made: a card with
|
|
137
|
+
* where it would be made on top, then what it would be. A card because it is a
|
|
138
|
+
* thing about to exist, not text to read or use; the source first because two
|
|
139
|
+
* apps may offer something alike (UIG-40, Katerina 28 September: the look Peek's
|
|
140
|
+
* launcher already had, now drawn by the palette, ruling P4).
|
|
141
|
+
*/
|
|
142
|
+
export declare function CommandPaletteProposal({ source, mark, children }: CommandPaletteProposalProps): import("react").JSX.Element;
|
|
127
143
|
//# sourceMappingURL=CommandPalette.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../src/CommandPalette.tsx"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,SAAS,EAEf,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../src/CommandPalette.tsx"],"names":[],"mappings":"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"}
|
package/dist/Field.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../src/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIvF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,SAAS,CAAA;CACpB;AAYD,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,QAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,+
|
|
1
|
+
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../src/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAmD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIvF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,SAAS,CAAA;CACpB;AAYD,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,QAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,+BAwDrF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,cAAc;IAC7B,sGAAsG;IACtG,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,+BAMjF"}
|
package/dist/Form.d.ts
CHANGED
|
@@ -32,6 +32,15 @@ import { type FormHTMLAttributes, type ReactNode } from 'react';
|
|
|
32
32
|
* from sending, for a form where only Ctrl+Enter may send (`CommandPalette`).
|
|
33
33
|
* Every way of sending goes through the form's submit, so Base UI's field
|
|
34
34
|
* check runs for each.
|
|
35
|
+
*
|
|
36
|
+
* **The form places its fields** (Katerina, 28 September). It drew no box and
|
|
37
|
+
* left the space between fields to every caller, and they chose three: Peek's
|
|
38
|
+
* dialogs 8px — the label's own distance from its box, so a label sat as close
|
|
39
|
+
* to the field above it as to its own — Ship's 24px, and the package's own
|
|
40
|
+
* launcher 16px. Everything inside now stacks 24px apart, and the gate lint
|
|
41
|
+
* refuses a layout passed in (`no-restyled-part`). A form that is not a list
|
|
42
|
+
* of fields — a field and its button, a composer — says `layout="free"` and
|
|
43
|
+
* lays itself out.
|
|
35
44
|
*/
|
|
36
45
|
export interface FormProps extends Omit<FormHTMLAttributes<HTMLFormElement>, 'onSubmit' | 'children' | 'noValidate'> {
|
|
37
46
|
/** Enter in a field, or a submit button. The page's own submit is already prevented. */
|
|
@@ -43,7 +52,15 @@ export interface FormProps extends Omit<FormHTMLAttributes<HTMLFormElement>, 'on
|
|
|
43
52
|
* Ctrl+Enter may send — a form inside `CommandPalette`. Ctrl+Enter sends either way.
|
|
44
53
|
*/
|
|
45
54
|
enterSends?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* `fields`, the default: everything inside stacks 24px apart. `free`: the
|
|
57
|
+
* form places nothing, for a form that is not a list of fields — a field and
|
|
58
|
+
* its button, a composer — which lays itself out through `className`.
|
|
59
|
+
*/
|
|
60
|
+
layout?: 'fields' | 'free';
|
|
46
61
|
children: ReactNode;
|
|
47
62
|
}
|
|
48
|
-
|
|
63
|
+
/** A list of fields: one column, 24px apart. `CommandPalette` stacks its fields with it too. */
|
|
64
|
+
export declare const FIELDS_CLASSES = "flex flex-col gap-6";
|
|
65
|
+
export declare function Form({ onSubmit, busy: ownBusy, enterSends, layout, className, children, ...props }: FormProps): import("react").JSX.Element;
|
|
49
66
|
//# sourceMappingURL=Form.d.ts.map
|
package/dist/Form.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../src/Form.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,kBAAkB,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAM5G
|
|
1
|
+
{"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../src/Form.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,kBAAkB,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAM5G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;IAClH,wFAAwF;IACxF,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,iGAAiG;IACjG,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;OAIG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAA;IAC1B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,gGAAgG;AAChG,eAAO,MAAM,cAAc,wBAAwB,CAAA;AAqBnD,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAe,EAAE,UAAiB,EAAE,MAAiB,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,+BA2GvI"}
|
package/dist/Select.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../src/Select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOtC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAOD,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAgB,EAAE,SAAS,EAAE,WAAuB,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,WAAW,+
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../src/Select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAOtC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,OAAO,CAAC,EAAE,SAAS,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAOD,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAgB,EAAE,SAAS,EAAE,WAAuB,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,WAAW,+BA2InK"}
|
package/dist/eslint/index.js
CHANGED
|
@@ -213,6 +213,11 @@ function isPlacement(token) {
|
|
|
213
213
|
if (variants.some((variant) => REACHING_VARIANT.test(variant))) return false;
|
|
214
214
|
return PLACEMENT.some(({ pattern }) => pattern.test(utility));
|
|
215
215
|
}
|
|
216
|
+
var FIELDS_LAYOUT = /^(?:block|flex|grid|inline-flex|inline-grid|contents|flow-root)$|^(?:gap|gap-x|gap-y|space-x|space-y|grid-cols|grid-rows|grid-flow|auto-cols|auto-rows|items|justify|justify-items|place-content|place-items)-|^flex-(?:row|col|wrap|nowrap)|^content-(?!\[)/;
|
|
217
|
+
var isFieldsLayout = (token) => {
|
|
218
|
+
const { variants, utility } = splitClass(token);
|
|
219
|
+
return !variants.some((variant) => REACHING_VARIANT.test(variant)) && FIELDS_LAYOUT.test(utility);
|
|
220
|
+
};
|
|
216
221
|
var isPadding = (token) => {
|
|
217
222
|
const { variants, utility } = splitClass(token);
|
|
218
223
|
return !variants.some((variant) => REACHING_VARIANT.test(variant)) && /^p[xytrblse]?-/.test(utility);
|
|
@@ -628,6 +633,7 @@ var noRestyledPart = {
|
|
|
628
633
|
restyled: "{{classes}} on {{where}} changes how it looks. A part of @estiva-app/ui is placed from outside, never restyled: only space, size, flex and grid, and position pass in.{{use}} A look for what is around it goes on your own element around it.",
|
|
629
634
|
restyledStyle: "{{keys}} in the `style` of {{where}} changes how it looks. A part of @estiva-app/ui is placed from outside, never restyled, by class or by style: only space, size, flex and grid, and position pass in.{{use}} A look for what is around it goes on your own element around it.",
|
|
630
635
|
emptyStatePadding: "{{classes}} pads {{where}}. EmptyState takes no padding (Katerina, 14 September): its room comes from the box its rows live in, so put the padding on that box.",
|
|
636
|
+
formLayout: '{{classes}} lays out the fields of {{where}}. A Form places its own fields, 24px apart (Katerina, 28 September), so every form reads the same: remove it. A form that is not a list of fields (a field and its button, a composer) says `layout="free"` and lays itself out.',
|
|
631
637
|
...ESCAPE_MESSAGES
|
|
632
638
|
}
|
|
633
639
|
},
|
|
@@ -642,6 +648,12 @@ var noRestyledPart = {
|
|
|
642
648
|
if (!escapes.has(anchor)) escapes.set(anchor, isEscaped(context, anchor));
|
|
643
649
|
return escapes.get(anchor) === true;
|
|
644
650
|
};
|
|
651
|
+
const placesItsFields = (element) => !children(element, "attributes").some((attribute3) => {
|
|
652
|
+
if (attribute3?.type !== "JSXAttribute" || nameOf(child(attribute3, "name")) !== "layout") return false;
|
|
653
|
+
const value = child(attribute3, "value");
|
|
654
|
+
const literal2 = value?.type === "JSXExpressionContainer" ? child(value, "expression") : value;
|
|
655
|
+
return !(literal2?.type === "Literal" && literal2.value === "fields");
|
|
656
|
+
});
|
|
645
657
|
const check = (element, binding, prop, value, at) => {
|
|
646
658
|
const partProp = binding.props === "all" ? prop : binding.props[prop];
|
|
647
659
|
if (!partProp || !value) return;
|
|
@@ -651,7 +663,8 @@ var noRestyledPart = {
|
|
|
651
663
|
const where = `${via}${partProp === "className" ? "" : `'s \`${partProp}\``}`;
|
|
652
664
|
const restyled = [...new Set(classes.filter((token) => !isPlacement(token)))];
|
|
653
665
|
const padding = binding.part === "EmptyState" && binding.props === "all" ? [...new Set(classes.filter(isPadding))] : [];
|
|
654
|
-
|
|
666
|
+
const layout = binding.part === "Form" && partProp === "className" && placesItsFields(element) ? [...new Set(classes.filter(isFieldsLayout))] : [];
|
|
667
|
+
if (!restyled.length && !padding.length && !layout.length) return;
|
|
655
668
|
if (escaped(element)) return;
|
|
656
669
|
if (restyled.length) {
|
|
657
670
|
const props = PART_LOOK_PROPS[binding.part];
|
|
@@ -659,6 +672,7 @@ var noRestyledPart = {
|
|
|
659
672
|
context.report({ loc: at.loc, messageId: "restyled", data: { classes: code(restyled), where, use } });
|
|
660
673
|
}
|
|
661
674
|
if (padding.length) context.report({ loc: at.loc, messageId: "emptyStatePadding", data: { classes: code(padding), where } });
|
|
675
|
+
if (layout.length) context.report({ loc: at.loc, messageId: "formLayout", data: { classes: code(layout), where } });
|
|
662
676
|
};
|
|
663
677
|
const checkStyle = (element, binding, value, at) => {
|
|
664
678
|
if (binding.props !== "all" || value?.type !== "JSXExpressionContainer") return;
|