@ostack.tech/ui-kform 0.10.5 → 0.11.1

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 (41) hide show
  1. package/dist/chunks/{en-B9UXLueo.js → en-3JcwFYXc.js} +3 -3
  2. package/dist/chunks/{en-B9UXLueo.js.map → en-3JcwFYXc.js.map} +1 -1
  3. package/dist/locales/en-GB.js +1 -1
  4. package/dist/locales/en-US.js +1 -1
  5. package/dist/locales/fr-FR.js +2 -2
  6. package/dist/locales/fr-FR.js.map +1 -1
  7. package/dist/locales/pt-PT.js +2 -2
  8. package/dist/locales/pt-PT.js.map +1 -1
  9. package/dist/ostack-ui-kform.css +15 -36
  10. package/dist/ostack-ui-kform.js +97 -54
  11. package/dist/ostack-ui-kform.js.map +1 -1
  12. package/dist/types/components/Annexes/Annex.d.ts +3 -3
  13. package/dist/types/components/FormApp/FormApp.d.ts +8 -8
  14. package/dist/types/components/FormPages/FormPage.d.ts +3 -3
  15. package/dist/types/components/FormStepper/FormStep.d.ts +43 -6
  16. package/dist/types/components/FormStepper/FormStepButton.d.ts +8 -0
  17. package/dist/types/components/FormStepper/FormStepList.d.ts +1 -1
  18. package/dist/types/components/FormStepper/FormStepper.d.ts +1 -1
  19. package/dist/types/components/FormStepper/FormStepperFinishTrigger.d.ts +2 -0
  20. package/dist/types/components/FormStepper/FormStepperNextTrigger.d.ts +2 -0
  21. package/dist/types/components/FormStepper/FormStepperPreviousTrigger.d.ts +2 -0
  22. package/dist/types/components/FormStepper/FormStepperState.d.ts +3 -0
  23. package/dist/types/components/FormStepper/index.d.ts +4 -1
  24. package/dist/types/components/TableControl/TableControlAddRowTrigger.d.ts +24 -10
  25. package/dist/types/components/TableControl/TableControlRemoveRowTrigger.d.ts +21 -11
  26. package/dist/types/providers/LocalizationProvider/LocalizationObject.d.ts +3 -3
  27. package/package.json +2 -2
  28. package/scss/_utils.scss +1 -0
  29. package/scss/components/Annexes/_Annexes-variables.scss +2 -3
  30. package/scss/components/Annexes/_Annexes.scss +55 -56
  31. package/scss/components/FileControl/_FileControl.scss +7 -10
  32. package/scss/components/FormApp/_FormApp-variables.scss +9 -0
  33. package/scss/components/FormApp/_FormApp.scss +19 -38
  34. package/scss/components/FormPages/_FormPages-variables.scss +18 -22
  35. package/scss/components/FormPages/_FormPages.scss +73 -62
  36. package/scss/components/IssueMessages/_IssueMessages.scss +1 -1
  37. package/scss/components/IssuesPanel/_IssuesPanel-variables.scss +32 -34
  38. package/scss/components/IssuesPanel/_IssuesPanel.scss +9 -10
  39. package/scss/components/TopBar/_TopBar.scss +15 -14
  40. package/scss/scss/_base-variables.scss +2 -2
  41. package/dist/types/components/FormStepper/FormStepContent.d.ts +0 -20
@@ -17,9 +17,9 @@ export interface AnnexProps extends AnnexObject, Omit<ComponentPropsWithoutRef<t
17
17
  *
18
18
  * These messages are used by the `IssueMessages` component.
19
19
  *
20
- * **Note:** Changes to `issueMessages` are handled correctly, but are not
21
- * efficient. Please make sure that the identity of the provided value doesn't
22
- * change at every render.
20
+ * > **Note:** Changes to `issueMessages` are handled correctly, but are not
21
+ * > efficient. Please make sure that the identity of the provided value doesn't
22
+ * > change at every render.
23
23
  *
24
24
  * Example value:
25
25
  *
@@ -49,9 +49,9 @@ export type FormAppProps<T = any> = Pick<ComponentPropsWithoutRef<typeof Root>,
49
49
  *
50
50
  * These messages are used by the `IssueMessages` component.
51
51
  *
52
- * **Note:** Changes to `issueMessages` are handled correctly, but are not
53
- * efficient. Please make sure that the identity of the provided value
54
- * doesn't change at every render.
52
+ * > **Note:** Changes to `issueMessages` are handled correctly, but are not
53
+ * > efficient. Please make sure that the identity of the provided value
54
+ * > doesn't change at every render.
55
55
  *
56
56
  * Example value:
57
57
  *
@@ -76,7 +76,7 @@ export type FormAppProps<T = any> = Pick<ComponentPropsWithoutRef<typeof Root>,
76
76
  * for navigating issues.
77
77
  * - `panel` mode displays issue messages within the bottom issues panel.
78
78
  *
79
- * @default inline
79
+ * @default "inline"
80
80
  */
81
81
  issuesDisplayMode?: IssuesDisplayMode;
82
82
  /**
@@ -186,9 +186,9 @@ export declare const FormApp: import('react').ForwardRefExoticComponent<Pick<Omi
186
186
  *
187
187
  * These messages are used by the `IssueMessages` component.
188
188
  *
189
- * **Note:** Changes to `issueMessages` are handled correctly, but are not
190
- * efficient. Please make sure that the identity of the provided value
191
- * doesn't change at every render.
189
+ * > **Note:** Changes to `issueMessages` are handled correctly, but are not
190
+ * > efficient. Please make sure that the identity of the provided value
191
+ * > doesn't change at every render.
192
192
  *
193
193
  * Example value:
194
194
  *
@@ -213,7 +213,7 @@ export declare const FormApp: import('react').ForwardRefExoticComponent<Pick<Omi
213
213
  * for navigating issues.
214
214
  * - `panel` mode displays issue messages within the bottom issues panel.
215
215
  *
216
- * @default inline
216
+ * @default "inline"
217
217
  */
218
218
  issuesDisplayMode?: IssuesDisplayMode;
219
219
  /**
@@ -20,9 +20,9 @@ export interface FormPageProps extends FormPageObject, Omit<ComponentPropsWithou
20
20
  *
21
21
  * These messages are used by the `IssueMessages` component.
22
22
  *
23
- * **Note:** Changes to `issueMessages` are handled correctly, but are not
24
- * efficient. Please make sure that the identity of the provided value doesn't
25
- * change at every render.
23
+ * > **Note:** Changes to `issueMessages` are handled correctly, but are not
24
+ * > efficient. Please make sure that the identity of the provided value doesn't
25
+ * > change at every render.
26
26
  *
27
27
  * Example value:
28
28
  *
@@ -1,8 +1,45 @@
1
- import { AbsolutePath } from '@ostack.tech/kform';
1
+ import { ErrorBoundary, StepContent } from '@ostack.tech/ui';
2
+ import { ComponentPropsWithoutRef, ComponentPropsWithRef } from 'react';
3
+ import { IssueMessagesByCode } from '../IssueMessages';
4
+ import { FormStepObject } from './FormStepper.tsx';
2
5
  /** Properties of the form step component. */
3
- export interface FormStepProps {
4
- path: AbsolutePath;
5
- index: number;
6
+ export interface FormStepProps extends FormStepObject, Omit<ComponentPropsWithoutRef<typeof StepContent>, "index" | "title"> {
7
+ /** Sets the step as disabled. */
8
+ disabled?: boolean;
9
+ /** Sets the step as read-only. */
10
+ readOnly?: boolean;
11
+ /**
12
+ * Mapping of issue messages from the path of the field with issues to the
13
+ * issue messages of said field (which are themselves grouped by their code).
14
+ *
15
+ * Provided paths are relative to the form step's path and may contain
16
+ * wildcards, which will have a lower priority when matched against.
17
+ *
18
+ * These messages are used by the `IssueMessages` component.
19
+ *
20
+ * > **Note:** Changes to `issueMessages` are handled correctly, but are not
21
+ * > efficient. Please make sure that the identity of the provided value doesn't
22
+ * > change at every render.
23
+ *
24
+ * Example value:
25
+ *
26
+ * ```tsx
27
+ * {
28
+ * "**": {
29
+ * "valueMissing": "Field is required."
30
+ * },
31
+ * "field": {
32
+ * "valueMissing": "My field cannot be left empty!",
33
+ * "someOtherError": "Text of the other error."
34
+ * }
35
+ * }
36
+ * ```
37
+ */
38
+ issueMessages?: Record<string, IssueMessagesByCode>;
39
+ /** Properties to pass to the `ErrorBoundary` component. */
40
+ errorBoundaryProps?: ComponentPropsWithRef<typeof ErrorBoundary>;
6
41
  }
7
- /** Form step. */
8
- export declare function FormStep({ path, index }: FormStepProps): import("react/jsx-runtime").JSX.Element;
42
+ /** Single form step. */
43
+ export declare const FormStep: import('react').ForwardRefExoticComponent<FormStepProps & import('react').RefAttributes<HTMLDivElement>>;
44
+ /** @deprecated Use `FormStep` instead. */
45
+ export declare const FormStepContent: import('react').ForwardRefExoticComponent<FormStepProps & import('react').RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,8 @@
1
+ import { AbsolutePath } from '@ostack.tech/kform';
2
+ /** Properties of the form step button component. */
3
+ export interface FormStepButtonProps {
4
+ path: AbsolutePath;
5
+ index: number;
6
+ }
7
+ /** Form step button. */
8
+ export declare function FormStepButton({ path, index }: FormStepButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -4,4 +4,4 @@ import { ComponentPropsWithoutRef } from 'react';
4
4
  export interface FormStepListProps extends ComponentPropsWithoutRef<typeof StepList> {
5
5
  }
6
6
  /** Component displaying all form steps in a list. */
7
- export declare const FormStepList: import('react').ForwardRefExoticComponent<FormStepListProps & import('react').RefAttributes<HTMLDivElement>>;
7
+ export declare const FormStepList: import('react').ForwardRefExoticComponent<FormStepListProps & import('react').RefAttributes<HTMLOListElement>>;
@@ -6,7 +6,7 @@ export interface FormStepperProps extends Omit<ComponentPropsWithoutRef<typeof S
6
6
  /** Base path for all declared form steps. */
7
7
  path?: string | Path;
8
8
  /** List of all form steps. */
9
- steps: FormStepObject[];
9
+ steps?: FormStepObject[];
10
10
  /** Default active form step. */
11
11
  defaultActiveStep?: string | Path;
12
12
  /** Controlled active form step. */
@@ -0,0 +1,2 @@
1
+ /** Trigger used to conclude the form stepper. */
2
+ export declare const FormStepperFinishTrigger: import('react').ForwardRefExoticComponent<import('@ostack.tech/ui').StepperFinishTriggerProps & import('react').RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,2 @@
1
+ /** Trigger used to go to the next step of the form stepper. */
2
+ export declare const FormStepperNextTrigger: import('react').ForwardRefExoticComponent<import('@ostack.tech/ui').StepperNextTriggerProps & import('react').RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,2 @@
1
+ /** Trigger used to go to the previous step of the form stepper. */
2
+ export declare const FormStepperPreviousTrigger: import('react').ForwardRefExoticComponent<import('@ostack.tech/ui').StepperPreviousTriggerProps & import('react').RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,3 @@
1
+ import { StepperState } from '@ostack.tech/ui';
2
+ /** Component used to access the state of the form stepper and act on its API. */
3
+ export declare const FormStepperState: typeof StepperState;
@@ -1,4 +1,7 @@
1
- export * from './FormStepContent.tsx';
1
+ export * from './FormStep.tsx';
2
2
  export * from './FormStepList.tsx';
3
3
  export * from './FormStepper.tsx';
4
+ export * from './FormStepperFinishTrigger.tsx';
5
+ export * from './FormStepperNextTrigger.tsx';
6
+ export * from './FormStepperPreviousTrigger.tsx';
4
7
  export { FormStepRegistrar } from './FormStepRegistrar.tsx';
@@ -1,12 +1,9 @@
1
1
  import { Button } from '@ostack.tech/ui';
2
2
  import { ComponentPropsWithoutRef, ReactNode } from 'react';
3
3
  /** Properties of the table control add row trigger component. */
4
- export interface TableControlAddRowTriggerProps extends ComponentPropsWithoutRef<typeof Button<"button">> {
5
- /**
6
- * Text displayed on the button rendered by default when no `children` are
7
- * provided. If `children` are provided, this property has no effect.
8
- */
9
- defaultButtonText?: ReactNode;
4
+ export type TableControlAddRowTriggerProps = TableControlAddRowTriggerChildlessProps | TableControlAddRowTriggerChildrenProps;
5
+ /** Base properties of the table control add row trigger component. */
6
+ export interface TableControlAddRowTriggerPropsBase {
10
7
  /** Function called after the row has been added. */
11
8
  onRowAdded?: () => void;
12
9
  /**
@@ -30,9 +27,26 @@ export interface TableControlAddRowTriggerProps extends ComponentPropsWithoutRef
30
27
  showWhilePrinting?: boolean;
31
28
  }
32
29
  /**
33
- * Trigger used to add a new row to a table control.
34
- *
35
- * By default, it renders a button with text `defaultButtonText`, however, this
36
- * can be overriden by providing `children`.
30
+ * Properties of the table control add row trigger component when rendered
31
+ * without children.
37
32
  */
33
+ export interface TableControlAddRowTriggerChildlessProps extends TableControlAddRowTriggerPropsBase, Omit<ComponentPropsWithoutRef<typeof Button<"button">>, "asChild" | "children"> {
34
+ /** Label displayed on the button. */
35
+ label?: ReactNode;
36
+ /**
37
+ * Label displayed on the button.
38
+ *
39
+ * @deprecated Use `label` instead.
40
+ */
41
+ defaultButtonText?: ReactNode;
42
+ children?: never;
43
+ }
44
+ /**
45
+ * Properties of the table control add row trigger component when rendered with
46
+ * children.
47
+ */
48
+ export interface TableControlAddRowTriggerChildrenProps extends TableControlAddRowTriggerPropsBase, ComponentPropsWithoutRef<"button"> {
49
+ children: ReactNode;
50
+ }
51
+ /** Trigger used to add a new row to a table control. */
38
52
  export declare const TableControlAddRowTrigger: import('react').ForwardRefExoticComponent<TableControlAddRowTriggerProps & import('react').RefAttributes<HTMLButtonElement>>;
@@ -1,7 +1,9 @@
1
1
  import { IconButton } from '@ostack.tech/ui';
2
2
  import { ComponentPropsWithoutRef, ReactNode } from 'react';
3
3
  /** Properties of the table control remove row trigger component. */
4
- export interface TableControlRemoveRowTriggerProps extends Omit<Partial<ComponentPropsWithoutRef<typeof IconButton<"button">>>, "children"> {
4
+ export type TableControlRemoveRowTriggerProps = TableControlRemoveRowTriggerChildlessProps | TableControlRemoveRowTriggerChildrenProps;
5
+ /** Base properties of the table control remove row trigger component. */
6
+ export interface TableControlRemoveRowTriggerChildlessPropsBase {
5
7
  /**
6
8
  * Whether to show a confirmation message when removing a row.
7
9
  *
@@ -15,11 +17,6 @@ export interface TableControlRemoveRowTriggerProps extends Omit<Partial<Componen
15
17
  onConfirmRowRemoval?: () => void;
16
18
  /** Function called after the row has been removed. */
17
19
  onRowRemoved?: () => void;
18
- /**
19
- * Label displayed on the icon button rendered by default when no `children`
20
- * are provided. If `children` are provided, this property has no effect.
21
- */
22
- defaultButtonLabel?: ReactNode;
23
20
  /** Title of the confirmation dialog when `showConfirmation` is `true`. */
24
21
  confirmDialogTitle?: ReactNode;
25
22
  /**
@@ -44,13 +41,26 @@ export interface TableControlRemoveRowTriggerProps extends Omit<Partial<Componen
44
41
  * @default false
45
42
  */
46
43
  showWhenReadOnly?: boolean;
44
+ }
45
+ /**
46
+ * Base properties of the table control remove row trigger component when
47
+ * rendered without children.
48
+ */
49
+ export interface TableControlRemoveRowTriggerChildlessProps extends TableControlRemoveRowTriggerChildlessPropsBase, Omit<Partial<ComponentPropsWithoutRef<typeof IconButton<"button">>>, "asChild" | "children"> {
47
50
  /**
48
- * Children of the remove row trigger component. By default, it is an
49
- * `IconButton` with label `defaultButtonLabel`. A function can be optionally
50
- * passed as children which will receive an argument with whether the row is
51
- * currently being removed.
51
+ * Label of the icon button.
52
+ *
53
+ * @deprecated Use `label` instead.
52
54
  */
53
- children?: ReactNode;
55
+ defaultButtonLabel?: ReactNode;
56
+ children?: never;
57
+ }
58
+ /**
59
+ * Base properties of the table control remove row trigger component when
60
+ * rendered with children.
61
+ */
62
+ export interface TableControlRemoveRowTriggerChildrenProps extends TableControlRemoveRowTriggerChildlessPropsBase, Partial<ComponentPropsWithoutRef<"button">> {
63
+ children: ReactNode;
54
64
  }
55
65
  /**
56
66
  * Trigger used to remove a row of a table controlled by a table control.
@@ -11,7 +11,7 @@ import { LoadActionProps } from '../../components/LoadAction';
11
11
  import { PrintActionProps } from '../../components/PrintAction';
12
12
  import { SaveActionProps } from '../../components/SaveAction';
13
13
  import { SubmitActionProps } from '../../components/SubmitAction';
14
- import { TableControlAddRowTriggerProps, TableControlRemoveRowTriggerProps } from '../../components/TableControl';
14
+ import { TableControlAddRowTriggerChildlessProps, TableControlRemoveRowTriggerChildlessProps } from '../../components/TableControl';
15
15
  import { ValidateActionProps } from '../../components/ValidateAction';
16
16
  /** Localization object representation. */
17
17
  export interface LocalizationObject {
@@ -29,7 +29,7 @@ export interface LocalizationObject {
29
29
  SaveAction: Pick<SaveActionProps, "label" | "keybinds" | "saveOptionsLabel" | "saveAsLabel" | "saveAsKeybinds" | "successMessage" | "errorMessage">;
30
30
  PrintAction: Pick<PrintActionProps, "label" | "keybinds">;
31
31
  SubmitAction: Pick<SubmitActionProps, "label" | "keybinds" | "dialogTitle" | "dialogDescription" | "dialogBody" | "dialogOkText" | "dialogCancelText" | "confirmWarningsCheckboxLabel" | "successMessage" | "errorMessage">;
32
- TableControlAddRowTrigger: Pick<TableControlAddRowTriggerProps, "defaultButtonText">;
33
- TableControlRemoveRowTrigger: Pick<TableControlRemoveRowTriggerProps, "defaultButtonLabel" | "confirmDialogTitle" | "confirmDialogMessage" | "confirmDialogOkText" | "confirmDialogCancelText">;
32
+ TableControlAddRowTrigger: Pick<TableControlAddRowTriggerChildlessProps, "label">;
33
+ TableControlRemoveRowTrigger: Pick<TableControlRemoveRowTriggerChildlessProps, "label" | "confirmDialogTitle" | "confirmDialogMessage" | "confirmDialogOkText" | "confirmDialogCancelText">;
34
34
  ValidateAction: Pick<ValidateActionProps, "label" | "keybinds">;
35
35
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ostack.tech/ui-kform",
3
3
  "description": "Integration of ostack/UI with ostack/KForm.",
4
- "version": "0.10.5",
4
+ "version": "0.11.1",
5
5
  "homepage": "https://ui.ostack.tech/",
6
6
  "author": {
7
7
  "name": "Opensoft",
@@ -50,7 +50,7 @@
50
50
  "@fortawesome/free-solid-svg-icons": "^6.2.0 || ^7.0.0",
51
51
  "@ostack.tech/kform": "~0.32.0",
52
52
  "@ostack.tech/kform-react": "~0.32.0",
53
- "@ostack.tech/ui": "~0.10.5",
53
+ "@ostack.tech/ui": "~0.11.1",
54
54
  "@types/react": "^18.0.0 || ^19.0.0",
55
55
  "@types/react-dom": "^18.0.0 || ^19.0.0",
56
56
  "date-fns": "^4.1.0",
package/scss/_utils.scss CHANGED
@@ -2,5 +2,6 @@
2
2
 
3
3
  // Component variables
4
4
  @forward "components/Annexes/Annexes-variables";
5
+ @forward "components/FormApp/FormApp-variables";
5
6
  @forward "components/FormPages/FormPages-variables";
6
7
  @forward "components/IssuesPanel/IssuesPanel-variables";
@@ -1,4 +1,4 @@
1
- @use "@ostack.tech/ui/scss/utils" as ostack-ui;
1
+ @use "@ostack.tech/ui/scss/utils" as o-ui;
2
2
 
3
3
  // Manager
4
4
  $annexes-manager-min-width: 200px !default;
@@ -8,8 +8,7 @@ $annexes-tab-issues-popover-button-icon-border-width: 1px !default;
8
8
  $annexes-tab-issues-popover-button-padding: calc(
9
9
  (
10
10
  (
11
- ostack-ui.$icon-button-md-min-size -
12
- ostack-ui.$icon-button-md-font-size -
11
+ o-ui.$icon-button-md-min-size - o-ui.$icon-button-md-font-size -
13
12
  $annexes-tab-issues-popover-button-icon-border-width * 2
14
13
  ) /
15
14
  2
@@ -1,5 +1,5 @@
1
1
  @use "sass:color";
2
- @use "@ostack.tech/ui/scss/utils" as ostack-ui;
2
+ @use "@ostack.tech/ui/scss/utils" as o-ui;
3
3
  @use "Annexes-variables" as *;
4
4
  @use "../../scss/base-variables" as *;
5
5
 
@@ -16,28 +16,28 @@
16
16
  flex: 1 1 auto;
17
17
 
18
18
  &:not(:last-child) {
19
- margin-right: ostack-ui.spacing(2);
19
+ margin-right: o-ui.spacing(2);
20
20
 
21
- @include ostack-ui.media-breakpoint-up(sm) {
22
- margin-right: ostack-ui.spacing(4);
21
+ @include o-ui.media-breakpoint-up(sm) {
22
+ margin-right: o-ui.spacing(4);
23
23
  }
24
24
  }
25
25
  }
26
26
 
27
27
  &__menu-container {
28
- margin-bottom: ostack-ui.$tabs-tab-list-annexes-margin-bottom;
29
- padding-right: ostack-ui.spacing(2);
30
- box-shadow: ostack-ui.$tabs-tab-list-annexes-box-shadow;
28
+ margin-bottom: o-ui.$tabs-tab-list-annexes-margin-bottom;
29
+ padding-right: o-ui.spacing(2);
30
+ box-shadow: o-ui.$tabs-tab-list-annexes-box-shadow;
31
31
 
32
- @include ostack-ui.media-breakpoint-up(sm) {
33
- padding-right: ostack-ui.spacing(4);
32
+ @include o-ui.media-breakpoint-up(sm) {
33
+ padding-right: o-ui.spacing(4);
34
34
  }
35
35
  }
36
36
 
37
37
  &__issues-popover-container {
38
- margin-left: ostack-ui.spacing(-4);
39
- margin-right: ostack-ui.spacing(7);
40
- padding-top: ostack-ui.spacing(0.5);
38
+ margin-left: o-ui.spacing(-4);
39
+ margin-right: o-ui.spacing(7);
40
+ padding-top: o-ui.spacing(0.5);
41
41
  height: $tab-height;
42
42
  }
43
43
 
@@ -50,14 +50,14 @@
50
50
  height: $tab-height;
51
51
  border-bottom-left-radius: 0;
52
52
  border-bottom-right-radius: 0;
53
- color: var(--#{ostack-ui.$prefix}primary-9) !important;
53
+ color: var(--#{o-ui.$prefix}primary-9) !important;
54
54
 
55
55
  &[data-state="open"] {
56
- border-color: ostack-ui.$neutral-7;
56
+ border-color: o-ui.$neutral-7;
57
57
  border-bottom-color: transparent;
58
- background-color: var(--#{ostack-ui.$prefix}background-color) !important;
58
+ background-color: var(--#{o-ui.$prefix}background-color) !important;
59
59
  position: relative;
60
- z-index: ostack-ui.$z-index-dropdown + 1;
60
+ z-index: o-ui.$z-index-dropdown + 1;
61
61
  }
62
62
  }
63
63
 
@@ -72,7 +72,7 @@
72
72
  border-bottom-left-radius: 0;
73
73
  }
74
74
 
75
- @include ostack-ui.media-breakpoint-down(sm) {
75
+ @include o-ui.media-breakpoint-down(sm) {
76
76
  min-width: 100vw;
77
77
  margin-left: -5px; // XXX: Override Radix's hard-coded collision margin
78
78
  border-radius: 0;
@@ -87,14 +87,12 @@
87
87
  content: "";
88
88
  position: absolute;
89
89
  top: 0;
90
- left: calc(
91
- (ostack-ui.$menu-padding-x + ostack-ui.$menu-item-margin-x) * -1
92
- );
90
+ left: calc((o-ui.$menu-padding-x + o-ui.$menu-item-margin-x) * -1);
93
91
  height: 100%;
94
92
  width: 3px;
95
- border-radius: 0 var(--#{ostack-ui.$prefix}border-radius-sm)
96
- var(--#{ostack-ui.$prefix}border-radius-sm) 0;
97
- background-color: var(--#{ostack-ui.$prefix}accent-9);
93
+ border-radius: 0 var(--#{o-ui.$prefix}border-radius-sm)
94
+ var(--#{o-ui.$prefix}border-radius-sm) 0;
95
+ background-color: var(--#{o-ui.$prefix}accent-9);
98
96
  }
99
97
  }
100
98
 
@@ -115,27 +113,27 @@
115
113
  }
116
114
 
117
115
  &__menu-annex-title {
118
- font-weight: ostack-ui.$font-weight-bold;
116
+ font-weight: o-ui.$font-weight-bold;
119
117
  overflow: hidden;
120
118
  text-overflow: ellipsis;
121
119
  white-space: nowrap;
122
120
  }
123
121
 
124
122
  &__menu-annex-subtitle {
125
- margin-left: ostack-ui.spacing(2);
126
- font-weight: ostack-ui.$font-weight-normal;
127
- font-size: ostack-ui.$font-size-xs;
128
- line-height: ostack-ui.$font-size-xs;
123
+ margin-left: o-ui.spacing(2);
124
+ font-weight: o-ui.$font-weight-normal;
125
+ font-size: o-ui.$font-size-xs;
126
+ line-height: o-ui.$font-size-xs;
129
127
  text-transform: none;
130
128
  }
131
129
 
132
130
  &__menu-annex-description {
133
- font-weight: ostack-ui.$font-weight-normal;
131
+ font-weight: o-ui.$font-weight-normal;
134
132
  text-transform: none;
135
133
  }
136
134
 
137
135
  &__menu-annex-remove {
138
- margin-left: ostack-ui.spacing(2);
136
+ margin-left: o-ui.spacing(2);
139
137
  $min-size: 28px;
140
138
  min-height: $min-size;
141
139
  min-width: $min-size;
@@ -148,21 +146,25 @@
148
146
 
149
147
  &__menu-new-annex-title {
150
148
  flex: 1;
151
- font-weight: ostack-ui.$font-weight-bold;
152
- color: ostack-ui.$primary-9;
149
+ font-weight: o-ui.$font-weight-bold;
150
+ color: o-ui.$primary-9;
153
151
  }
154
152
 
155
153
  &__menu-new-annex-description {
156
154
  flex: 2;
157
- margin-left: ostack-ui.spacing(2);
158
- font-weight: ostack-ui.$font-weight-normal;
155
+ margin-left: o-ui.spacing(2);
156
+ font-weight: o-ui.$font-weight-normal;
159
157
  text-transform: none;
160
158
  }
161
159
 
162
160
  &__tab-inner {
161
+ min-height: $tab-height;
162
+ }
163
+
164
+ &__tab-text {
165
+ display: flex;
163
166
  flex-direction: column;
164
167
  height: 100%;
165
- min-height: $tab-height;
166
168
  }
167
169
 
168
170
  &__tab-title,
@@ -176,61 +178,58 @@
176
178
 
177
179
  &__tab-title {
178
180
  font-weight: var(
179
- --#{ostack-ui.$prefix}tabs-tab-open-font-weight,
180
- var(
181
- --#{ostack-ui.$prefix}tabs-tab-font-weight,
182
- ostack-ui.$font-weight-bold
183
- )
181
+ --#{o-ui.$prefix}tabs-tab-open-font-weight,
182
+ var(--#{o-ui.$prefix}tabs-tab-font-weight, o-ui.$font-weight-bold)
184
183
  );
185
184
  }
186
185
 
187
186
  &__tab-subtitle {
188
- font-weight: ostack-ui.$font-weight-normal;
189
- font-size: ostack-ui.$font-size-xs;
190
- line-height: ostack-ui.$line-height-xs;
187
+ font-weight: o-ui.$font-weight-normal;
188
+ font-size: o-ui.$font-size-xs;
189
+ line-height: o-ui.$line-height-xs;
191
190
  }
192
191
 
193
192
  // Tab issues
194
193
  &__tab[data-has-issues] &__tab-inner {
195
194
  padding-right: calc(
196
- ostack-ui.$tabs-tab-inner-annexes-padding-x * 2 +
197
- ostack-ui.$icon-button-md-font-size +
195
+ o-ui.$tabs-tab-inner-annexes-padding-x * 2 +
196
+ o-ui.$icon-button-md-font-size +
198
197
  $annexes-tab-issues-popover-button-padding
199
198
  );
200
199
  }
201
200
 
202
201
  &__tab-issues-popover-button-container {
203
- z-index: calc(ostack-ui.$tabs-tab-focus-z-index + 1);
202
+ z-index: calc(o-ui.$tabs-tab-focus-z-index + 1);
204
203
  margin-left: calc(
205
- ostack-ui.$icon-button-md-min-size *
206
- -1 - var(--#{ostack-ui.$prefix}tabs-tab-list-gap-x) -
204
+ o-ui.$icon-button-md-min-size *
205
+ -1 - var(--#{o-ui.$prefix}tabs-tab-list-gap-x) -
207
206
  $annexes-tab-issues-popover-button-padding / 2
208
207
  );
209
208
  padding-right: calc(
210
- var(--#{ostack-ui.$prefix}tabs-tab-list-gap-x) +
209
+ var(--#{o-ui.$prefix}tabs-tab-list-gap-x) +
211
210
  $annexes-tab-issues-popover-button-padding / 2
212
211
  );
213
212
  }
214
213
 
215
- &__tab-issues-popover-button .#{ostack-ui.$prefix}icon {
214
+ &__tab-issues-popover-button .#{o-ui.$prefix}icon {
216
215
  // Border around the icon
217
216
  filter: drop-shadow(
218
217
  /* Top */ 0
219
218
  calc($annexes-tab-issues-popover-button-icon-border-width * -1) 0
220
- var(--#{ostack-ui.$prefix}background-color)
219
+ var(--#{o-ui.$prefix}background-color)
221
220
  )
222
221
  drop-shadow(
223
222
  /* Right */ $annexes-tab-issues-popover-button-icon-border-width 0 0
224
- var(--#{ostack-ui.$prefix}background-color)
223
+ var(--#{o-ui.$prefix}background-color)
225
224
  )
226
225
  drop-shadow(
227
226
  /* Bottom */ 0 $annexes-tab-issues-popover-button-icon-border-width 0
228
- var(--#{ostack-ui.$prefix}background-color)
227
+ var(--#{o-ui.$prefix}background-color)
229
228
  )
230
229
  drop-shadow(
231
230
  /* Left */
232
231
  calc($annexes-tab-issues-popover-button-icon-border-width * -1) 0 0
233
- var(--#{ostack-ui.$prefix}background-color)
232
+ var(--#{o-ui.$prefix}background-color)
234
233
  );
235
234
  }
236
235
 
@@ -251,14 +250,14 @@
251
250
  align-items: baseline;
252
251
 
253
252
  .#{$prefix}annexes__tab-title {
254
- font-size: var(--#{ostack-ui.$prefix}font-size-md);
253
+ font-size: var(--#{o-ui.$prefix}font-size-md);
255
254
  }
256
255
  .#{$prefix}annexes__tab-subtitle {
257
256
  &:not(:first-child)::before {
258
257
  content: "\00a0—\00a0";
259
258
  }
260
259
 
261
- font-size: var(--#{ostack-ui.$prefix}font-size-sm);
260
+ font-size: var(--#{o-ui.$prefix}font-size-sm);
262
261
  }
263
262
  }
264
263
  }
@@ -1,19 +1,16 @@
1
1
  @use "sass:map";
2
- @use "@ostack.tech/ui/scss/utils" as ostack-ui;
2
+ @use "@ostack.tech/ui/scss/utils" as o-ui;
3
3
  @use "../../scss/base-variables" as *;
4
4
 
5
5
  .#{$prefix}file-control {
6
6
  &__viewer-dialog {
7
7
  width: fit-content;
8
8
  min-width: 0;
9
- max-width: min(
10
- calc(100dvw - ostack-ui.spacing(14)),
11
- ostack-ui.$dialog-xl-width
12
- );
9
+ max-width: min(calc(100dvw - o-ui.spacing(14)), o-ui.$dialog-xl-width);
13
10
  }
14
11
 
15
12
  &__viewer-download {
16
- margin-left: ostack-ui.spacing(4);
13
+ margin-left: o-ui.spacing(4);
17
14
  }
18
15
 
19
16
  &__viewer-dialog-title {
@@ -36,9 +33,9 @@
36
33
  max-height: $max-height;
37
34
  margin: 0 auto;
38
35
 
39
- border-bottom-left-radius: var(--#{ostack-ui.$prefix}border-radius-xs);
40
- border-bottom-right-radius: var(--#{ostack-ui.$prefix}border-radius-xs);
41
- background-color: var(--#{ostack-ui.$prefix}background-color);
36
+ border-bottom-left-radius: var(--#{o-ui.$prefix}border-radius-xs);
37
+ border-bottom-right-radius: var(--#{o-ui.$prefix}border-radius-xs);
38
+ background-color: var(--#{o-ui.$prefix}background-color);
42
39
 
43
40
  &:not([type^="image/"]):not([type^="video/"]):not([type^="audio/"]) {
44
41
  width: 100vw;
@@ -47,6 +44,6 @@
47
44
  }
48
45
 
49
46
  &__viewer-fallback {
50
- margin: ostack-ui.spacing(3) ostack-ui.spacing(4);
47
+ margin: o-ui.spacing(3) o-ui.spacing(4);
51
48
  }
52
49
  }
@@ -0,0 +1,9 @@
1
+ @use "@ostack.tech/ui/scss/utils" as o-ui;
2
+
3
+ $form-app-default-min-height: 100dvh !default;
4
+ $form-app-background-color: var(--#{o-ui.$prefix}background-color) !default;
5
+ $form-app-base-sticky-top: null !default;
6
+
7
+ // Focus
8
+ $form-app-focus-outline: 2px solid o-ui.$primary-8 !default;
9
+ $form-app-focus-outline-offset: -3px !default;