@dropi/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/dropi-badge.cjs.entry.js +37 -0
  3. package/dist/cjs/dropi-button.cjs.entry.js +81 -0
  4. package/dist/cjs/dropi-checkbox.cjs.entry.js +36 -0
  5. package/dist/cjs/dropi-icon.cjs.entry.js +50 -0
  6. package/dist/cjs/dropi-input.cjs.entry.js +210 -0
  7. package/dist/cjs/dropi-radio-button.cjs.entry.js +47 -0
  8. package/dist/cjs/dropi-select.cjs.entry.js +335 -0
  9. package/dist/cjs/dropi-switch.cjs.entry.js +30 -0
  10. package/dist/cjs/dropi-tag.cjs.entry.js +68 -0
  11. package/dist/cjs/dropi-text-area.cjs.entry.js +103 -0
  12. package/dist/cjs/dropi-ui.cjs.js +24 -0
  13. package/dist/cjs/index-CuGLZVqo.js +1743 -0
  14. package/dist/cjs/index.cjs.js +2 -0
  15. package/dist/cjs/loader.cjs.js +12 -0
  16. package/dist/collection/assets/icons/symbol/svg/sprite.css.svg +1 -0
  17. package/dist/collection/collection-manifest.json +22 -0
  18. package/dist/collection/components/dropi-badge/dropi-badge.css +41 -0
  19. package/dist/collection/components/dropi-badge/dropi-badge.js +72 -0
  20. package/dist/collection/components/dropi-button/dropi-button.css +169 -0
  21. package/dist/collection/components/dropi-button/dropi-button.js +277 -0
  22. package/dist/collection/components/dropi-checkbox/dropi-checkbox.css +47 -0
  23. package/dist/collection/components/dropi-checkbox/dropi-checkbox.js +103 -0
  24. package/dist/collection/components/dropi-icon/dropi-icon.css +19 -0
  25. package/dist/collection/components/dropi-icon/dropi-icon.js +142 -0
  26. package/dist/collection/components/dropi-input/dropi-input.css +168 -0
  27. package/dist/collection/components/dropi-input/dropi-input.js +735 -0
  28. package/dist/collection/components/dropi-radio-button/dropi-radio-button.css +59 -0
  29. package/dist/collection/components/dropi-radio-button/dropi-radio-button.js +181 -0
  30. package/dist/collection/components/dropi-select/dropi-select.css +364 -0
  31. package/dist/collection/components/dropi-select/dropi-select.js +932 -0
  32. package/dist/collection/components/dropi-select/select.types.js +1 -0
  33. package/dist/collection/components/dropi-switch/dropi-switch.css +57 -0
  34. package/dist/collection/components/dropi-switch/dropi-switch.js +96 -0
  35. package/dist/collection/components/dropi-tag/dropi-tag.css +40 -0
  36. package/dist/collection/components/dropi-tag/dropi-tag.js +190 -0
  37. package/dist/collection/components/dropi-text-area/dropi-text-area.css +97 -0
  38. package/dist/collection/components/dropi-text-area/dropi-text-area.js +457 -0
  39. package/dist/collection/index.js +1 -0
  40. package/dist/collection/utils/utils.js +3 -0
  41. package/dist/collection/utils/utils.unit.test.js +16 -0
  42. package/dist/components/dropi-badge.d.ts +11 -0
  43. package/dist/components/dropi-badge.js +1 -0
  44. package/dist/components/dropi-button.d.ts +11 -0
  45. package/dist/components/dropi-button.js +1 -0
  46. package/dist/components/dropi-checkbox.d.ts +11 -0
  47. package/dist/components/dropi-checkbox.js +1 -0
  48. package/dist/components/dropi-icon.d.ts +11 -0
  49. package/dist/components/dropi-icon.js +1 -0
  50. package/dist/components/dropi-input.d.ts +11 -0
  51. package/dist/components/dropi-input.js +1 -0
  52. package/dist/components/dropi-radio-button.d.ts +11 -0
  53. package/dist/components/dropi-radio-button.js +1 -0
  54. package/dist/components/dropi-select.d.ts +11 -0
  55. package/dist/components/dropi-select.js +1 -0
  56. package/dist/components/dropi-switch.d.ts +11 -0
  57. package/dist/components/dropi-switch.js +1 -0
  58. package/dist/components/dropi-tag.d.ts +11 -0
  59. package/dist/components/dropi-tag.js +1 -0
  60. package/dist/components/dropi-text-area.d.ts +11 -0
  61. package/dist/components/dropi-text-area.js +1 -0
  62. package/dist/components/index.d.ts +35 -0
  63. package/dist/components/index.js +1 -0
  64. package/dist/components/p-MNma8N1x.js +1 -0
  65. package/dist/dropi-ui/dropi-ui.css +1 -0
  66. package/dist/dropi-ui/dropi-ui.esm.js +1 -0
  67. package/dist/dropi-ui/index.esm.js +0 -0
  68. package/dist/dropi-ui/p-1a28b8f5.entry.js +1 -0
  69. package/dist/dropi-ui/p-21abf91a.entry.js +1 -0
  70. package/dist/dropi-ui/p-52291024.entry.js +1 -0
  71. package/dist/dropi-ui/p-54502c46.entry.js +1 -0
  72. package/dist/dropi-ui/p-6f0aa619.entry.js +1 -0
  73. package/dist/dropi-ui/p-9c7076d3.entry.js +1 -0
  74. package/dist/dropi-ui/p-DFz-gwFP.js +2 -0
  75. package/dist/dropi-ui/p-a1944f3d.entry.js +1 -0
  76. package/dist/dropi-ui/p-c7b9cbda.entry.js +1 -0
  77. package/dist/dropi-ui/p-dd089a60.entry.js +1 -0
  78. package/dist/dropi-ui/p-f785011f.entry.js +1 -0
  79. package/dist/esm/dropi-badge.entry.js +35 -0
  80. package/dist/esm/dropi-button.entry.js +79 -0
  81. package/dist/esm/dropi-checkbox.entry.js +34 -0
  82. package/dist/esm/dropi-icon.entry.js +48 -0
  83. package/dist/esm/dropi-input.entry.js +208 -0
  84. package/dist/esm/dropi-radio-button.entry.js +45 -0
  85. package/dist/esm/dropi-select.entry.js +333 -0
  86. package/dist/esm/dropi-switch.entry.js +28 -0
  87. package/dist/esm/dropi-tag.entry.js +66 -0
  88. package/dist/esm/dropi-text-area.entry.js +101 -0
  89. package/dist/esm/dropi-ui.js +20 -0
  90. package/dist/esm/index-DFz-gwFP.js +1734 -0
  91. package/dist/esm/index.js +1 -0
  92. package/dist/esm/loader.js +10 -0
  93. package/dist/index.cjs.js +1 -0
  94. package/dist/index.js +1 -0
  95. package/dist/types/components/dropi-badge/dropi-badge.d.ts +12 -0
  96. package/dist/types/components/dropi-button/dropi-button.d.ts +35 -0
  97. package/dist/types/components/dropi-checkbox/dropi-checkbox.d.ts +16 -0
  98. package/dist/types/components/dropi-icon/dropi-icon.d.ts +25 -0
  99. package/dist/types/components/dropi-input/dropi-input.d.ts +92 -0
  100. package/dist/types/components/dropi-radio-button/dropi-radio-button.d.ts +25 -0
  101. package/dist/types/components/dropi-select/dropi-select.d.ts +103 -0
  102. package/dist/types/components/dropi-select/select.types.d.ts +23 -0
  103. package/dist/types/components/dropi-switch/dropi-switch.d.ts +15 -0
  104. package/dist/types/components/dropi-tag/dropi-tag.d.ts +25 -0
  105. package/dist/types/components/dropi-text-area/dropi-text-area.d.ts +53 -0
  106. package/dist/types/components.d.ts +1549 -0
  107. package/dist/types/index.d.ts +7 -0
  108. package/dist/types/stencil-public-runtime.d.ts +1860 -0
  109. package/dist/types/utils/utils.d.ts +1 -0
  110. package/dist/types/utils/utils.unit.test.d.ts +1 -0
  111. package/loader/cdn.js +1 -0
  112. package/loader/index.cjs.js +1 -0
  113. package/loader/index.d.ts +24 -0
  114. package/loader/index.es2017.js +1 -0
  115. package/loader/index.js +2 -0
  116. package/package.json +50 -0
  117. package/readme.md +89 -0
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,10 @@
1
+ import { g as globalScripts, b as bootstrapLazy } from './index-DFz-gwFP.js';
2
+ export { s as setNonce } from './index-DFz-gwFP.js';
3
+
4
+ const defineCustomElements = async (win, options) => {
5
+ if (typeof window === 'undefined') return undefined;
6
+ await globalScripts();
7
+ return bootstrapLazy([["dropi-icon",[[513,"dropi-icon",{"name":[1],"width":[1],"height":[1],"color":[1]},null,{"color":[{"colorChanged":0}]}]]],["dropi-button",[[769,"dropi-button",{"type":[1],"severity":[1],"size":[1],"state":[1],"preIcon":[1,"pre-icon"],"postIcon":[1,"post-icon"],"text":[1]}]]],["dropi-input",[[577,"dropi-input",{"inputId":[1,"input-id"],"name":[1],"label":[1],"placeholder":[1],"value":[1025],"maxlength":[2],"disabled":[516],"required":[516],"showAsterisk":[4,"show-asterisk"],"fixedLabel":[4,"fixed-label"],"inputMode":[1,"input-mode"],"passwordInput":[4,"password-input"],"moneyFormat":[4,"money-format"],"thousandSeparator":[4,"thousand-separator"],"onlyNumbers":[4,"only-numbers"],"allowDecimals":[4,"allow-decimals"],"onlyLetters":[4,"only-letters"],"icon":[1],"iconColor":[1,"icon-color"],"invalid":[4],"helperText":[1,"helper-text"],"showHelperOnlyOnError":[4,"show-helper-only-on-error"],"showPassword":[32],"touched":[32]},null,{"value":[{"valueChanged":0}],"disabled":[{"disabledChanged":0}]}]]],["dropi-select",[[577,"dropi-select",{"label":[1],"placeholder":[1],"options":[1040],"name":[1],"disabled":[516],"invalid":[4],"errorText":[1,"error-text"],"helperText":[1,"helper-text"],"showObligatory":[4,"show-obligatory"],"searchEnabled":[4,"search-enabled"],"multiSelect":[4,"multi-select"],"dropdownType":[4,"dropdown-type"],"showCountryFlags":[4,"show-country-flags"],"radioOptions":[4,"radio-options"],"placeHolderSearch":[1,"place-holder-search"],"preIcon":[1,"pre-icon"],"defaultSelectedId":[1032,"default-selected-id"],"value":[1040],"isOpen":[32],"selectedOption":[32],"multiSelected":[32],"filteredOptions":[32],"searchTerm":[32],"dropdownStyle":[32],"setById":[64],"setByLabel":[64],"clearSelection":[64],"resetMultiSelect":[64]},[[4,"click","handleOutsideClick"]],{"options":[{"optionsChanged":0}],"defaultSelectedId":[{"defaultChanged":0}],"value":[{"valueChanged":0}]}]]],["dropi-tag",[[513,"dropi-tag",{"type":[1],"state":[1],"showIcon":[4,"show-icon"],"icon":[1],"text":[1]},null,{"type":[{"propsChanged":0}],"state":[{"propsChanged":0}]}]]],["dropi-text-area",[[577,"dropi-text-area",{"inputId":[1,"input-id"],"name":[1],"label":[1],"placeholder":[1],"value":[1025],"maxlength":[2],"minlength":[2],"rows":[2],"resize":[1],"disabled":[516],"required":[516],"showAsterisk":[4,"show-asterisk"],"helperText":[1,"helper-text"],"invalid":[4],"touched":[32]},null,{"value":[{"valueChanged":0}]}]]],["dropi-badge",[[513,"dropi-badge",{"state":[1]}]]],["dropi-checkbox",[[577,"dropi-checkbox",{"checked":[1540],"disabled":[516]}]]],["dropi-radio-button",[[577,"dropi-radio-button",{"label":[1],"name":[1],"inputId":[1,"input-id"],"checked":[1540],"resetTrigger":[4,"reset-trigger"]},null,{"resetTrigger":[{"onResetTrigger":0}]}]]],["dropi-switch",[[577,"dropi-switch",{"isChecked":[1540,"is-checked"],"disabled":[516]}]]]], options);
8
+ };
9
+
10
+ export { defineCustomElements };
@@ -0,0 +1 @@
1
+ module.exports = require('./cjs/index.cjs.js');
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export * from './esm/index.js';
@@ -0,0 +1,12 @@
1
+ export type BadgeState = 'pending' | 'active' | 'canceled' | 'frozen';
2
+ /**
3
+ * @component dropi-badge
4
+ * Status badge for user/account states.
5
+ */
6
+ export declare class DropiBadge {
7
+ /** Badge state: pending | active | canceled | frozen */
8
+ state: BadgeState;
9
+ private stateText;
10
+ private renderIcon;
11
+ render(): any;
12
+ }
@@ -0,0 +1,35 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ export type ButtonType = 'legacy' | 'default' | 'success' | 'info' | 'error' | 'warning' | 'dropdown';
3
+ export type ButtonSeverity = 'primary' | 'secondary' | 'tertiary';
4
+ export type ButtonSize = 'large' | 'normal' | 'small';
5
+ export type ButtonState = 'default' | 'disabled' | 'loading';
6
+ /**
7
+ * @component dropi-button
8
+ * Primary action button with multiple types, severities, sizes and states.
9
+ * Supports pre/post icons and a loading spinner.
10
+ */
11
+ export declare class DropiButton {
12
+ /** Visual color palette */
13
+ type: ButtonType;
14
+ /** Primary (filled) | Secondary (outlined) | Tertiary (ghost) */
15
+ severity: ButtonSeverity;
16
+ /** Button size */
17
+ size: ButtonSize;
18
+ /** Button state */
19
+ state: ButtonState;
20
+ /** Icon name to show before the text */
21
+ preIcon: string;
22
+ /** Icon name to show after the text */
23
+ postIcon: string;
24
+ /** Button label */
25
+ text: string;
26
+ /** Emitted on click (not emitted when disabled or loading) */
27
+ dropiClick: EventEmitter<MouseEvent>;
28
+ private readonly colorMap;
29
+ private get iconSize();
30
+ private get color();
31
+ private get fontColor();
32
+ private handleClick;
33
+ private renderLoadingSpinner;
34
+ render(): any;
35
+ }
@@ -0,0 +1,16 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ /**
3
+ * @component dropi-checkbox
4
+ * A styled checkbox that emits change events.
5
+ * Supports form association via native `<input type="checkbox">` internals.
6
+ */
7
+ export declare class DropiCheckbox {
8
+ /** Whether the checkbox is checked */
9
+ checked: boolean;
10
+ /** Whether the checkbox is disabled */
11
+ disabled: boolean;
12
+ /** Emitted when the checked state changes */
13
+ dropiChange: EventEmitter<boolean>;
14
+ private changeState;
15
+ render(): any;
16
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @component dropi-icon
3
+ * Renders an SVG icon from the Dropi sprite sheet.
4
+ * The sprite must be available at `assets/icons/sprite.svg`.
5
+ */
6
+ export declare class DropiIcon {
7
+ el: HTMLElement;
8
+ /** Icon name matching the id in the SVG sprite */
9
+ name: string;
10
+ /** Width of the icon (CSS value) */
11
+ width: string;
12
+ /** Height of the icon (CSS value) */
13
+ height: string;
14
+ /**
15
+ * Color of the icon. Accepts:
16
+ * - Hex color: `#ff0000`
17
+ * - CSS variable name without `--`: `Primary-Primary-500`
18
+ * - `currentColor` to inherit
19
+ */
20
+ color: string;
21
+ colorChanged(): void;
22
+ componentDidLoad(): void;
23
+ private applyColor;
24
+ render(): any;
25
+ }
@@ -0,0 +1,92 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ export type InputMode = 'text' | 'numeric' | 'decimal' | 'tel' | 'email' | 'url' | 'search';
3
+ /**
4
+ * @component dropi-input
5
+ * Text input with floating label, validation states, password toggle,
6
+ * number/letter restrictions, thousand separator, and native form association.
7
+ *
8
+ * ## Form usage (native HTML form)
9
+ * ```html
10
+ * <form>
11
+ * <dropi-input name="email" label="Email" required></dropi-input>
12
+ * </form>
13
+ * ```
14
+ *
15
+ * ## Controlled usage (React / Vue / Angular)
16
+ * Pass `value` and listen to `dropiInput` to update.
17
+ */
18
+ export declare class DropiInput {
19
+ internals: ElementInternals;
20
+ /** Input id. Defaults to label value. */
21
+ inputId: string;
22
+ /** Name attribute for native form submission */
23
+ name: string;
24
+ /** Floating or fixed label text */
25
+ label: string;
26
+ /** Placeholder text (visible in fixedLabel mode or on focus) */
27
+ placeholder: string;
28
+ /** Current value (controlled) */
29
+ value: string;
30
+ /** Max character length */
31
+ maxlength: number;
32
+ /** Disable the input */
33
+ disabled: boolean;
34
+ /** Mark as required (shows asterisk when showAsterisk is true) */
35
+ required: boolean;
36
+ /** Show the required asterisk on the label */
37
+ showAsterisk: boolean;
38
+ /** Show label above the input (fixed), instead of floating inside */
39
+ fixedLabel: boolean;
40
+ /** Keyboard input mode hint */
41
+ inputMode: InputMode;
42
+ /** Show password visibility toggle (renders as password field) */
43
+ passwordInput: boolean;
44
+ /** Apply thousand separator formatting (e.g. 1,000,000) */
45
+ moneyFormat: boolean;
46
+ /** Apply thousand separator without currency symbol */
47
+ thousandSeparator: boolean;
48
+ /** Only allow numeric characters */
49
+ onlyNumbers: boolean;
50
+ /** Allow decimal point when onlyNumbers is true */
51
+ allowDecimals: boolean;
52
+ /** Only allow letter characters */
53
+ onlyLetters: boolean;
54
+ /** Icon name shown inside the input (only visible when value is not empty) */
55
+ icon: string;
56
+ /** Color token for the icon */
57
+ iconColor: string;
58
+ /** Mark the field as invalid (consumer-controlled) */
59
+ invalid: boolean;
60
+ /** Helper / error text shown below the field */
61
+ helperText: string;
62
+ /** Only show helperText when the field is invalid */
63
+ showHelperOnlyOnError: boolean;
64
+ private showPassword;
65
+ private touched;
66
+ /** Emitted on every keystroke with the current value */
67
+ dropiInput: EventEmitter<string>;
68
+ /** Emitted on blur with the final value */
69
+ dropiChange: EventEmitter<string>;
70
+ /** Emitted on focus */
71
+ dropiFocus: EventEmitter<void>;
72
+ /** Emitted on blur */
73
+ dropiBlur: EventEmitter<void>;
74
+ valueChanged(val: string): void;
75
+ disabledChanged(val: boolean): void;
76
+ componentWillLoad(): void;
77
+ private handleInput;
78
+ private handleKeyDown;
79
+ private handleFocus;
80
+ private handleBlur;
81
+ private togglePassword;
82
+ private filterNumbers;
83
+ private filterLetters;
84
+ private isAllowedNumberKey;
85
+ private isAllowedLetterKey;
86
+ private formatThousands;
87
+ private get resolvedId();
88
+ private get inputType();
89
+ private get showHelper();
90
+ private get isInvalid();
91
+ render(): any;
92
+ }
@@ -0,0 +1,25 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ /**
3
+ * @component dropi-radio-button
4
+ * Styled radio button with label.
5
+ */
6
+ export declare class DropiRadioButton {
7
+ /** Label text displayed next to the radio */
8
+ label: string;
9
+ /** Input name (for grouping radio buttons) */
10
+ name: string;
11
+ /** Input id */
12
+ inputId: string;
13
+ /** Whether this radio is selected */
14
+ checked: boolean;
15
+ /**
16
+ * Set to true to programmatically reset this radio to unchecked.
17
+ * Useful when the parent needs to clear a group.
18
+ */
19
+ resetTrigger: boolean;
20
+ /** Emitted when the radio is selected */
21
+ dropiChange: EventEmitter<Event>;
22
+ onResetTrigger(val: boolean): void;
23
+ private handleChange;
24
+ render(): any;
25
+ }
@@ -0,0 +1,103 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ import { SelectOption, SelectOptionGroup } from './select.types';
3
+ /**
4
+ * @component dropi-select
5
+ * Feature-rich select with support for:
6
+ * - Single / multi select
7
+ * - Grouped options
8
+ * - Search / filter
9
+ * - Country flags
10
+ * - Radio-style options with images
11
+ * - Inline (dropdownType) or bordered trigger
12
+ * - Native form association
13
+ *
14
+ * ## Usage
15
+ * Options must be set via JS property (not HTML attribute) for object arrays:
16
+ * ```js
17
+ * document.querySelector('dropi-select').options = [
18
+ * { id: 1, label: 'Option A' },
19
+ * { id: 2, label: 'Option B' },
20
+ * ];
21
+ * ```
22
+ */
23
+ export declare class DropiSelect {
24
+ el: HTMLElement;
25
+ internals: ElementInternals;
26
+ private buttonRef;
27
+ private scrollDebounce;
28
+ private hasEmittedScrollEnd;
29
+ private lastScrollTop;
30
+ label: string;
31
+ placeholder: string;
32
+ /** Array of SelectOption or SelectOptionGroup */
33
+ options: SelectOption[] | SelectOptionGroup[];
34
+ name: string;
35
+ disabled: boolean;
36
+ invalid: boolean;
37
+ errorText: string;
38
+ helperText: string;
39
+ showObligatory: boolean;
40
+ /** Enables text search inside the dropdown */
41
+ searchEnabled: boolean;
42
+ /** Allows selecting multiple options */
43
+ multiSelect: boolean;
44
+ /** Renders trigger without border (inline/dropdown style) */
45
+ dropdownType: boolean;
46
+ /** Show country flags next to option labels */
47
+ showCountryFlags: boolean;
48
+ /** Renders options as radio buttons with optional image */
49
+ radioOptions: boolean;
50
+ /** Placeholder inside the search field */
51
+ placeHolderSearch: string;
52
+ /** Icon name shown before the trigger label */
53
+ preIcon: string;
54
+ /** Pre-select an option by id */
55
+ defaultSelectedId: string | number;
56
+ /** Controlled selected option (single select) */
57
+ value: SelectOption | null;
58
+ private isOpen;
59
+ private selectedOption;
60
+ private multiSelected;
61
+ private filteredOptions;
62
+ private searchTerm;
63
+ private dropdownStyle;
64
+ /** Emitted when an option is selected (single) or selection changes (multi) */
65
+ dropiChange: EventEmitter<SelectOption | SelectOption[]>;
66
+ /** Emitted when the selection is cleared */
67
+ dropiClear: EventEmitter<void>;
68
+ /** Emitted on search input */
69
+ dropiSearch: EventEmitter<string>;
70
+ /** Emitted when the list is scrolled to the end */
71
+ dropiScrollEnd: EventEmitter<void>;
72
+ /** Emitted on Enter key inside search */
73
+ dropiKeyEnter: EventEmitter<KeyboardEvent>;
74
+ componentWillLoad(): void;
75
+ optionsChanged(): void;
76
+ private normalizeOptions;
77
+ defaultChanged(newId: string | number): void;
78
+ valueChanged(v: SelectOption | null): void;
79
+ /** Select an option by its id */
80
+ setById(id: string | number): Promise<void>;
81
+ /** Select an option by its label */
82
+ setByLabel(label: string): Promise<void>;
83
+ /** Clear the current selection */
84
+ clearSelection(): Promise<void>;
85
+ /** Reset multi-select state and show a placeholder label */
86
+ resetMultiSelect(_placeholder?: string): Promise<void>;
87
+ handleOutsideClick(e: MouseEvent): void;
88
+ private applyDefaultSelection;
89
+ private flatOptions;
90
+ private get isGrouped();
91
+ private get triggerLabel();
92
+ private openDropdown;
93
+ private closeDropdown;
94
+ private toggleDropdown;
95
+ private selectOption;
96
+ private isOptionChecked;
97
+ private handleSearch;
98
+ private handleScroll;
99
+ private renderTrigger;
100
+ private renderOption;
101
+ private renderDropdown;
102
+ render(): any;
103
+ }
@@ -0,0 +1,23 @@
1
+ export interface SelectOption {
2
+ id: string | number;
3
+ label: string;
4
+ disabled?: boolean;
5
+ /** ISO-2 country code for flag display */
6
+ countryCode?: string;
7
+ /** Short label shown when flags are active */
8
+ shortLabel?: string;
9
+ /** Icon name shown before label */
10
+ preIcon?: string;
11
+ /** Image URL for radio-style options */
12
+ imageUrl?: string;
13
+ /** Secondary label shown alongside main label */
14
+ secondLabel?: string;
15
+ /** Internal: whether checked in multiSelect mode */
16
+ checked?: boolean;
17
+ /** Internal: whether image failed to load */
18
+ isFallback?: boolean;
19
+ }
20
+ export interface SelectOptionGroup {
21
+ category: string;
22
+ options: SelectOption[];
23
+ }
@@ -0,0 +1,15 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ /**
3
+ * @component dropi-switch
4
+ * Toggle switch component. Emits dropiChange on toggle.
5
+ */
6
+ export declare class DropiSwitch {
7
+ /** Whether the switch is on */
8
+ isChecked: boolean;
9
+ /** Whether the switch is disabled */
10
+ disabled: boolean;
11
+ /** Emitted when the toggle state changes */
12
+ dropiChange: EventEmitter<boolean>;
13
+ private onToggleChange;
14
+ render(): any;
15
+ }
@@ -0,0 +1,25 @@
1
+ export type TagState = 'default' | 'success' | 'info' | 'warning' | 'error' | 'legacy';
2
+ export type TagType = 'primary' | 'secondary';
3
+ /**
4
+ * @component dropi-tag
5
+ * Colored tag/chip for statuses, categories, and labels.
6
+ */
7
+ export declare class DropiTag {
8
+ /** primary (filled) | secondary (soft) */
9
+ type: TagType;
10
+ /** Color state of the tag */
11
+ state: TagState;
12
+ /** Whether to show the icon */
13
+ showIcon: boolean;
14
+ /** Icon name from the sprite */
15
+ icon: string;
16
+ /** Label text */
17
+ text: string;
18
+ private readonly colorMap;
19
+ propsChanged(): void;
20
+ private get bgColor();
21
+ private get textColor();
22
+ private get iconColor();
23
+ private get hasContent();
24
+ render(): any;
25
+ }
@@ -0,0 +1,53 @@
1
+ import { EventEmitter } from '../../stencil-public-runtime';
2
+ export type ResizeMode = 'none' | 'both' | 'horizontal' | 'vertical';
3
+ /**
4
+ * @component dropi-text-area
5
+ * Multi-line text area with label, char counter, validation states,
6
+ * helper text, and native form association.
7
+ */
8
+ export declare class DropiTextArea {
9
+ internals: ElementInternals;
10
+ /** Input id. Defaults to label. */
11
+ inputId: string;
12
+ /** Name for native form submission */
13
+ name: string;
14
+ /** Label shown above the textarea */
15
+ label: string;
16
+ /** Placeholder text */
17
+ placeholder: string;
18
+ /** Current value (controlled) */
19
+ value: string;
20
+ /** Max character length */
21
+ maxlength: number;
22
+ /** Min character length */
23
+ minlength: number;
24
+ /** Number of visible rows */
25
+ rows: number;
26
+ /** Resize behavior */
27
+ resize: ResizeMode;
28
+ /** Disable the textarea */
29
+ disabled: boolean;
30
+ /** Mark as required */
31
+ required: boolean;
32
+ /** Show the required asterisk */
33
+ showAsterisk: boolean;
34
+ /** Helper / error text below the field */
35
+ helperText: string;
36
+ /** Mark the field as invalid (consumer-controlled) */
37
+ invalid: boolean;
38
+ private touched;
39
+ /** Emitted on every keystroke */
40
+ dropiInput: EventEmitter<string>;
41
+ /** Emitted on blur */
42
+ dropiChange: EventEmitter<string>;
43
+ dropiFocus: EventEmitter<void>;
44
+ dropiBlur: EventEmitter<void>;
45
+ valueChanged(val: string): void;
46
+ componentWillLoad(): void;
47
+ private handleInput;
48
+ private handleBlur;
49
+ private get resolvedId();
50
+ private get isInvalid();
51
+ private get charCount();
52
+ render(): any;
53
+ }