@fewbox/den-web 0.2.0-preview.2 → 0.2.0-preview.21

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/package.json CHANGED
@@ -1,12 +1,21 @@
1
1
  {
2
2
  "name": "@fewbox/den-web",
3
- "version": "0.2.0-preview.2",
3
+ "version": "0.2.0-preview.21",
4
4
  "main": "index.js",
5
5
  "types": "index-web.d.ts",
6
6
  "repository": "https://github.com/FewBox/fewbox-den.git",
7
7
  "author": "FewBox Support <support@fewbox.com>",
8
8
  "license": "Apache-2.0",
9
9
  "type": "module",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./index-web.d.ts",
13
+ "react-server": "./server.js",
14
+ "default": "./index.js"
15
+ },
16
+ "./index.css": "./index.css",
17
+ "./*": "./*"
18
+ },
10
19
  "scripts": {
11
20
  "postinstall": "node scripts/copy-templates.js"
12
21
  },
@@ -21,6 +21,18 @@ for (const registry of registries) {
21
21
  type: common.type,
22
22
  };
23
23
 
24
+ if (variantConfig.hasServerEntry) {
25
+ pkg.exports = {
26
+ '.': {
27
+ types: `./${variantConfig.types}`,
28
+ 'react-server': './server.js',
29
+ default: './index.js',
30
+ },
31
+ './index.css': './index.css',
32
+ './*': './*',
33
+ };
34
+ }
35
+
24
36
  if (variantConfig.hasPostinstall) {
25
37
  pkg.scripts = { postinstall: 'node scripts/copy-templates.js' };
26
38
  }
package/server.js ADDED
@@ -0,0 +1,71 @@
1
+ // Engine constants
2
+ export {
3
+ ColorType,
4
+ FontSizeType,
5
+ FontWeightType,
6
+ FontFamilyType,
7
+ LineHeightType,
8
+ PaddingType,
9
+ MarginType,
10
+ GapType,
11
+ LetterSpacingType,
12
+ BorderRadiusType,
13
+ BorderStyleType,
14
+ BorderWidthType,
15
+ VisibilityType,
16
+ DisplayType,
17
+ CursorType,
18
+ OverflowType,
19
+ OverflowXType,
20
+ OverflowYType,
21
+ OpacityType,
22
+ ViewSizeType,
23
+ PseudoType,
24
+ DirectionType,
25
+ getGeneratedClassName,
26
+ getWeightValue,
27
+ // Layout constants
28
+ ZoneCategory,
29
+ ScreenSizeType,
30
+ BreakpointCategory,
31
+ BreakpointType,
32
+ DockCategory,
33
+ DockAlignment,
34
+ PositionCategory,
35
+ PositionType,
36
+ PositionAreaCategory,
37
+ FlexDirectionType,
38
+ FlexWrapType,
39
+ FlexJustifyContentType,
40
+ FlexAlignItemsType,
41
+ FlexAlignContentType,
42
+ FlexItemAlignSelfType,
43
+ XCrossType,
44
+ YCrossType,
45
+ // View constants
46
+ BackgroundPositionType,
47
+ HandleSubmitCategory,
48
+ FileCategory,
49
+ SvgCategory,
50
+ HyperlinkCategory,
51
+ ImageCategory,
52
+ LabelCategory,
53
+ LabelType,
54
+ LabelAlignType,
55
+ TextCategory,
56
+ TextAlignType,
57
+ EllipseCategory,
58
+ LineCategory,
59
+ ShadowCategory,
60
+ AnimationCategory,
61
+ AnimationDelay,
62
+ AnimationRepeat,
63
+ AnimationSpeed,
64
+ RootCategory,
65
+ ThemeCategory,
66
+ TooltipCategory,
67
+ // Util
68
+ convertFormDataToJson
69
+ } from './engine.js';
70
+
71
+ export * from './index.js';
@@ -1,4 +1,4 @@
1
- import { DirectionType, FullColorType, PseudoType, FullFontSizeType, FontWeightType, FullBorderRadiusType, FullBorderStyleType, FullBorderWidthType, FullPaddingType, FullMarginType, OpacityType, FullDisplayType, FullVisibilityType, FullCursorType, FullOverflowType, FullOverflowXType, FullOverflowYType } from '..';
1
+ import { DirectionType, FullColorType, PseudoType, FullFontSizeType, FontWeightType, FullBorderRadiusType, FullBorderStyleType, FullBorderWidthType, FullPaddingType, FullMarginType, FullOpacityType, FullLetterSpacingType, FullDisplayType, FullVisibilityType, FullCursorType, FullOverflowType, FullOverflowXType, FullOverflowYType } from '..';
2
2
  import { Property } from 'csstype';
3
3
  export interface IViewProps {
4
4
  className?: string;
@@ -20,7 +20,7 @@ export interface IViewProps {
20
20
  borderWidth?: FullBorderWidthType;
21
21
  padding?: FullPaddingType;
22
22
  margin?: FullMarginType;
23
- opacity?: OpacityType;
23
+ opacity?: FullOpacityType;
24
24
  display?: FullDisplayType;
25
25
  visibility?: FullVisibilityType;
26
26
  cursor?: FullCursorType;
@@ -33,7 +33,7 @@ export interface IViewProps {
33
33
  minWidth?: Property.Width;
34
34
  maxHeight?: Property.Width;
35
35
  maxWidth?: Property.Width;
36
- letterSpacing?: Property.LetterSpacing;
36
+ letterSpacing?: FullLetterSpacingType;
37
37
  lineHeight?: Property.LineHeight;
38
38
  overflowX?: FullOverflowXType;
39
39
  overflowY?: FullOverflowYType;
@@ -80,7 +80,7 @@ export declare const PaddingType: {
80
80
  readonly ExtraLarge: "padding-extra-large";
81
81
  };
82
82
  export type PaddingType = typeof PaddingType[keyof typeof PaddingType];
83
- export type FullPaddingType = PaddingType | string;
83
+ export type FullPaddingType = PaddingType | Property.Padding;
84
84
  export declare const MarginType: {
85
85
  readonly Default: "margin";
86
86
  readonly Normal: "margin-normal";
@@ -90,7 +90,7 @@ export declare const MarginType: {
90
90
  readonly ExtraLarge: "margin-extra-large";
91
91
  };
92
92
  export type MarginType = typeof MarginType[keyof typeof MarginType];
93
- export type FullMarginType = MarginType | string;
93
+ export type FullMarginType = MarginType | Property.Margin;
94
94
  export declare const GapType: {
95
95
  readonly Default: "gap";
96
96
  readonly Normal: "gap-normal";
@@ -103,8 +103,14 @@ export type GapType = typeof GapType[keyof typeof GapType];
103
103
  export type FullGapType = GapType | Property.Gap;
104
104
  export declare const LetterSpacingType: {
105
105
  readonly Default: "letter-spacing";
106
+ readonly Normal: "letter-spacing-normal";
107
+ readonly ExtraSmall: "letter-spacing-extra-small";
108
+ readonly Small: "letter-spacing-small";
109
+ readonly Large: "letter-spacing-large";
110
+ readonly ExtraLarge: "letter-spacing-extra-large";
106
111
  };
107
112
  export type LetterSpacingType = typeof LetterSpacingType[keyof typeof LetterSpacingType];
113
+ export type FullLetterSpacingType = LetterSpacingType | Property.LetterSpacing;
108
114
  export declare const BorderRadiusType: {
109
115
  readonly Default: "border-radius";
110
116
  readonly Normal: "border-radius-normal";
@@ -115,7 +121,7 @@ export declare const BorderRadiusType: {
115
121
  readonly Max: "border-radius-max";
116
122
  };
117
123
  export type BorderRadiusType = typeof BorderRadiusType[keyof typeof BorderRadiusType];
118
- export type FullBorderRadiusType = BorderRadiusType | string;
124
+ export type FullBorderRadiusType = BorderRadiusType | Property.BorderRadius;
119
125
  export declare const BorderStyleType: {
120
126
  readonly None: "border-style-none";
121
127
  readonly Solid: "border-style-solid";
@@ -129,7 +135,7 @@ export declare const BorderStyleType: {
129
135
  readonly Hidden: "border-style-hidden";
130
136
  };
131
137
  export type BorderStyleType = typeof BorderStyleType[keyof typeof BorderStyleType];
132
- export type FullBorderStyleType = BorderStyleType | string;
138
+ export type FullBorderStyleType = BorderStyleType | Property.BorderStyle;
133
139
  export declare const BorderWidthType: {
134
140
  readonly Default: "border-width";
135
141
  readonly Normal: "border-width-normal";
@@ -139,14 +145,14 @@ export declare const BorderWidthType: {
139
145
  readonly ExtraLarge: "border-width-extra-large";
140
146
  };
141
147
  export type BorderWidthType = typeof BorderWidthType[keyof typeof BorderWidthType];
142
- export type FullBorderWidthType = BorderWidthType | string;
148
+ export type FullBorderWidthType = BorderWidthType | Property.BorderWidth;
143
149
  export declare const VisibilityType: {
144
150
  readonly Visible: "visibility-visible";
145
151
  readonly Hidden: "visibility-hidden";
146
152
  readonly Collapse: "visibility-collapse";
147
153
  };
148
154
  export type VisibilityType = typeof VisibilityType[keyof typeof VisibilityType];
149
- export type FullVisibilityType = VisibilityType | string;
155
+ export type FullVisibilityType = VisibilityType | Property.Visibility;
150
156
  export declare const DisplayType: {
151
157
  readonly None: "display-none";
152
158
  readonly Block: "display-block";
@@ -163,7 +169,7 @@ export declare const DisplayType: {
163
169
  readonly FlowRoot: "display-flow-root";
164
170
  };
165
171
  export type DisplayType = typeof DisplayType[keyof typeof DisplayType];
166
- export type FullDisplayType = DisplayType | string;
172
+ export type FullDisplayType = DisplayType | Property.Display;
167
173
  export declare const CursorType: {
168
174
  readonly Auto: "cursor-auto";
169
175
  readonly Default: "cursor-default";
@@ -203,7 +209,7 @@ export declare const CursorType: {
203
209
  readonly ZoomOut: "cursor-zoom-out";
204
210
  };
205
211
  export type CursorType = typeof CursorType[keyof typeof CursorType];
206
- export type FullCursorType = CursorType | string;
212
+ export type FullCursorType = CursorType | Property.Cursor;
207
213
  export declare const OverflowType: {
208
214
  readonly Visible: "overflow-visible";
209
215
  readonly Hidden: "overflow-hidden";
@@ -212,7 +218,7 @@ export declare const OverflowType: {
212
218
  readonly Clip: "overflow-clip";
213
219
  };
214
220
  export type OverflowType = typeof OverflowType[keyof typeof OverflowType];
215
- export type FullOverflowType = OverflowType | string;
221
+ export type FullOverflowType = OverflowType | Property.Overflow;
216
222
  export declare const OverflowXType: {
217
223
  readonly Visible: "overflow-x-visible";
218
224
  readonly Hidden: "overflow-x-hidden";
@@ -221,7 +227,7 @@ export declare const OverflowXType: {
221
227
  readonly Clip: "overflow-x-clip";
222
228
  };
223
229
  export type OverflowXType = typeof OverflowXType[keyof typeof OverflowXType];
224
- export type FullOverflowXType = OverflowXType | string;
230
+ export type FullOverflowXType = OverflowXType | Property.OverflowX;
225
231
  export declare const OverflowYType: {
226
232
  readonly Visible: "overflow-y-visible";
227
233
  readonly Hidden: "overflow-y-hidden";
@@ -230,7 +236,7 @@ export declare const OverflowYType: {
230
236
  readonly Clip: "overflow-y-clip";
231
237
  };
232
238
  export type OverflowYType = typeof OverflowYType[keyof typeof OverflowYType];
233
- export type FullOverflowYType = OverflowYType | string;
239
+ export type FullOverflowYType = OverflowYType | Property.OverflowY;
234
240
  export declare const OpacityType: {
235
241
  readonly _0: "opacity-0";
236
242
  readonly _10: "opacity-10";
@@ -247,6 +253,7 @@ export declare const OpacityType: {
247
253
  readonly _100: "opacity-100";
248
254
  };
249
255
  export type OpacityType = typeof OpacityType[keyof typeof OpacityType];
256
+ export type FullOpacityType = OpacityType | Property.Opacity;
250
257
  export declare const ViewSizeType: {
251
258
  readonly Ellipse: "v-ellipse-size";
252
259
  readonly Rectangle: "v-rectangle-size";
@@ -256,7 +263,7 @@ export declare const ViewSizeType: {
256
263
  };
257
264
  export type ViewSizeType = typeof ViewSizeType[keyof typeof ViewSizeType];
258
265
  export declare const getWeightValue: (weightType: FontWeightType) => number;
259
- export type FullFontSizeType = FontSizeType | string;
266
+ export type FullFontSizeType = FontSizeType | Property.FontSize;
260
267
  export declare const FontSizeType: {
261
268
  readonly Default: "font-size";
262
269
  readonly Normal: "font-size-normal";
@@ -271,7 +278,7 @@ export declare const FontSizeType: {
271
278
  readonly AutoExtraLarge: "auto-font-size-extra-large";
272
279
  };
273
280
  export type FontSizeType = typeof FontSizeType[keyof typeof FontSizeType];
274
- export type FullColorType = ColorType | string;
281
+ export type FullColorType = ColorType | Property.Color;
275
282
  export declare const PseudoType: {
276
283
  readonly All: "all";
277
284
  readonly Before: "before";
@@ -296,4 +303,4 @@ export declare const DirectionType: {
296
303
  readonly LeftRight: "left-right";
297
304
  };
298
305
  export type DirectionType = typeof DirectionType[keyof typeof DirectionType];
299
- export declare const getGeneratedClassName: (className: string, isDefaultValue: boolean | undefined, sizeType?: FullFontSizeType, isAutoSize?: boolean, weightType?: FontWeightType, frontColorType?: FullColorType, backgroundColorType?: FullColorType, borderColorType?: FullColorType, borderDirection?: DirectionType, pseudoType?: PseudoType, pseudoFrontColor?: FullColorType, pseudoBackgroundColor?: FullColorType, pseudoBorderColor?: FullColorType, pseudoBorderDirection?: DirectionType, borderRadius?: FullBorderRadiusType, borderStyle?: FullBorderStyleType, borderWidth?: FullBorderWidthType, padding?: FullPaddingType, margin?: FullMarginType, opacityType?: OpacityType, display?: FullDisplayType, visibility?: FullVisibilityType, cursor?: FullCursorType, overflow?: FullOverflowType, overflowX?: FullOverflowXType, overflowY?: FullOverflowYType) => string;
306
+ export declare const getGeneratedClassName: (className: string, isDefaultValue: boolean | undefined, sizeType?: FullFontSizeType, isAutoSize?: boolean, weightType?: FontWeightType, frontColorType?: FullColorType, backgroundColorType?: FullColorType, borderColorType?: FullColorType, borderDirection?: DirectionType, pseudoType?: PseudoType, pseudoFrontColor?: FullColorType, pseudoBackgroundColor?: FullColorType, pseudoBorderColor?: FullColorType, pseudoBorderDirection?: DirectionType, borderRadius?: FullBorderRadiusType, borderStyle?: FullBorderStyleType, borderWidth?: FullBorderWidthType, padding?: FullPaddingType, margin?: FullMarginType, opacityType?: FullOpacityType, display?: FullDisplayType, visibility?: FullVisibilityType, cursor?: FullCursorType, overflow?: FullOverflowType, overflowX?: FullOverflowXType, overflowY?: FullOverflowYType, letterSpacing?: FullLetterSpacingType) => string;
@@ -0,0 +1,5 @@
1
+ import { IBaseProps } from '../../Engine/Base';
2
+ export interface IVAsideProps extends IBaseProps<'aside'> {
3
+ }
4
+ declare const VAside: (props: IVAsideProps) => React.JSX.Element;
5
+ export default VAside;
@@ -22,6 +22,8 @@ export interface IVDropdownProps extends IBaseProps<'input'> {
22
22
  dockAlignment?: DockAlignment;
23
23
  menuBackgroundColor?: ColorType;
24
24
  menuZIndex?: Property.ZIndex;
25
+ menuGap?: Property.Gap;
26
+ isSelectOnly?: boolean;
25
27
  overWriteDropdownMenu?: (items: IDropdownItemData[]) => React.JSX.Element;
26
28
  overWriteDropdownItem?: (item: IDropdownItemData) => React.JSX.Element;
27
29
  handleChange?: (value: string) => void;
@@ -0,0 +1,5 @@
1
+ import { IBaseProps } from '../../Engine/Base';
2
+ export interface IVNavProps extends IBaseProps<'nav'> {
3
+ }
4
+ declare const VNav: (props: IVNavProps) => React.JSX.Element;
5
+ export default VNav;
@@ -110,6 +110,8 @@ export { default as VVideo } from './View/VVideo';
110
110
  export { default as VHeader } from './View/VHeader';
111
111
  export { default as VMain } from './View/VMain';
112
112
  export { default as VFooter } from './View/VFooter';
113
+ export { default as VAside } from './View/VAside';
114
+ export { default as VNav } from './View/VNav';
113
115
  export { default as VHR } from './View/VHR';
114
116
  export { default as VSection } from './View/VSection';
115
117
  export { default as VMask } from './View/VMask';
@@ -25,7 +25,7 @@ Den.Components.ColorType // enums are also under Components
25
25
 
26
26
  ### Variant Exports
27
27
 
28
- - **core** (`Den.Components`): Layout (X/Y/S/Flex/FlexItem/Position/PositionArea/Dock/BreakpointDisplay/Responsive), View (VBoundary, VLabel, VText, VForm, VActionForm, VInput/*, VSelect, VDropdown, VSwitch, VImage, VSvg, VBackground, VAnimation, VTooltip, VLoading, VErrorBoundary, VShape/*, VHyperlink, VMask, VFrame, VTheme, VHeader/VMain/VFooter, VHR, VSection, VZone, VAudio, VVideo, VShadow), Enums, Types, utilities
28
+ - **core** (`Den.Components`): Layout (X/Y/S/Flex/FlexItem/Position/PositionArea/Dock/BreakpointDisplay/Responsive), View (VBoundary, VLabel, VText, VForm, VActionForm, VInput/*, VSelect, VDropdown, VSwitch, VImage, VSvg, VBackground, VAnimation, VTooltip, VLoading, VErrorBoundary, VShape/*, VHyperlink, VMask, VFrame, VTheme, VHeader/VNav/VMain/VAside/VFooter, VHR, VSection, VZone, VAudio, VVideo, VShadow), Enums, Types, utilities
29
29
  - **web** (`Den.Components`): core + Debug, VGoogleFont, VChromeExtensionValidator, GoogleGrant, GoogleSignin, FigmaSignin, WeComSignin, parseJWT
30
30
  - **app** (`Den.Components`): web + VDynamic, VAvatar, VBlock, VCard, VCardMedia, VCardSocial, VCardWindow, VPhoto, VStack, VTree
31
31
  - **app** also exports: `Den.FewBox`, `Den.Language`, `Den.Network`, `Den.Store`
@@ -41,35 +41,35 @@ All components extend `IBaseProps` (which extends `IViewProps`) providing these
41
41
  |------|------|-------------|
42
42
  | `className` | `string` | Additional CSS classes |
43
43
  | `style` | `CSSProperties` | Inline styles |
44
- | `fontSize` | `FontSizeType \| string` | Font size preset or custom value |
44
+ | `fontSize` | `FontSizeType \| Property.FontSize` | Font size preset or custom CSS value |
45
45
  | `isAutoSize` | `boolean` | Use auto-responsive font size variant |
46
46
  | `fontWeight` | `FontWeightType` | Font weight (Thin through Black) |
47
- | `frontColor` | `ColorType \| string` | Text/foreground color |
48
- | `backgroundColor` | `ColorType \| string` | Background color |
49
- | `borderColor` | `ColorType \| string` | Border color |
47
+ | `frontColor` | `ColorType \| Property.Color` | Text/foreground color |
48
+ | `backgroundColor` | `ColorType \| Property.Color` | Background color |
49
+ | `borderColor` | `ColorType \| Property.Color` | Border color |
50
50
  | `borderDirection` | `DirectionType` | Which sides get the border |
51
- | `borderRadius` | `BorderRadiusType \| string` | Border radius preset or custom |
52
- | `borderStyle` | `BorderStyleType \| string` | Border style preset or custom |
53
- | `borderWidth` | `BorderWidthType \| string` | Border width preset or custom |
54
- | `padding` | `PaddingType \| string` | CSS padding (preset or custom) |
55
- | `margin` | `MarginType \| string` | CSS margin (preset or custom) |
56
- | `opacity` | `OpacityType` | Opacity preset |
57
- | `display` | `DisplayType \| string` | CSS display preset or custom |
58
- | `visibility` | `VisibilityType \| string` | CSS visibility preset or custom |
59
- | `cursor` | `CursorType \| string` | CSS cursor preset or custom |
60
- | `overflow` | `OverflowType \| string` | CSS overflow preset or custom |
61
- | `overflowX` | `OverflowXType \| string` | CSS overflow-x preset or custom |
62
- | `overflowY` | `OverflowYType \| string` | CSS overflow-y preset or custom |
63
- | `width` | `string` | CSS width |
64
- | `height` | `string` | CSS height |
65
- | `minWidth` | `string` | CSS min-width |
66
- | `minHeight` | `string` | CSS min-height |
67
- | `maxWidth` | `string` | CSS max-width |
68
- | `maxHeight` | `string` | CSS max-height |
69
- | `zIndex` | `number` | CSS z-index |
70
- | `fontFamily` | `string` | CSS font-family |
71
- | `letterSpacing` | `string` | CSS letter-spacing |
72
- | `lineHeight` | `string` | CSS line-height |
51
+ | `borderRadius` | `BorderRadiusType \| Property.BorderRadius` | Border radius preset or custom |
52
+ | `borderStyle` | `BorderStyleType \| Property.BorderStyle` | Border style preset or custom |
53
+ | `borderWidth` | `BorderWidthType \| Property.BorderWidth` | Border width preset or custom |
54
+ | `padding` | `PaddingType \| Property.Padding` | CSS padding (preset or custom) |
55
+ | `margin` | `MarginType \| Property.Margin` | CSS margin (preset or custom) |
56
+ | `opacity` | `OpacityType \| Property.Opacity` | Opacity preset or custom CSS value |
57
+ | `display` | `DisplayType \| Property.Display` | CSS display preset or custom |
58
+ | `visibility` | `VisibilityType \| Property.Visibility` | CSS visibility preset or custom |
59
+ | `cursor` | `CursorType \| Property.Cursor` | CSS cursor preset or custom |
60
+ | `overflow` | `OverflowType \| Property.Overflow` | CSS overflow preset or custom |
61
+ | `overflowX` | `OverflowXType \| Property.OverflowX` | CSS overflow-x preset or custom |
62
+ | `overflowY` | `OverflowYType \| Property.OverflowY` | CSS overflow-y preset or custom |
63
+ | `width` | `Property.Width` | CSS width |
64
+ | `height` | `Property.Height` | CSS height |
65
+ | `minWidth` | `Property.Width` | CSS min-width |
66
+ | `minHeight` | `Property.Width` | CSS min-height |
67
+ | `maxWidth` | `Property.Width` | CSS max-width |
68
+ | `maxHeight` | `Property.Width` | CSS max-height |
69
+ | `zIndex` | `Property.ZIndex` | CSS z-index |
70
+ | `fontFamily` | `Property.FontFamily` | CSS font-family |
71
+ | `letterSpacing` | `LetterSpacingType \| Property.LetterSpacing` | Letter spacing preset or custom CSS value |
72
+ | `lineHeight` | `Property.LineHeight` | CSS line-height |
73
73
  | `selfShrink` | `number` | flex-shrink for the component itself |
74
74
  | `selfGrow` | `number` | flex-grow for the component itself |
75
75
  | `selfBasis` | `string` | flex-basis for the component itself |
@@ -146,7 +146,7 @@ FontWeightType.Black // 900
146
146
 
147
147
  ### Preset Enums (class-based styling)
148
148
 
149
- These enums generate CSS classes. Pass enum value or a custom string (generates `{prefix}-{value}` class):
149
+ These enums generate CSS classes. All `Full*Type` props accept either a preset enum value (applied as className) or a custom CSS value from `csstype` `Property.*` (applied as inline style):
150
150
 
151
151
  ```tsx
152
152
  // Border Radius
@@ -167,6 +167,9 @@ MarginType.Default | .Normal | .ExtraSmall | .Small | .Large | .ExtraLarge
167
167
  // Gap (for layout components)
168
168
  GapType.Default | .Normal | .ExtraSmall | .Small | .Large | .ExtraLarge
169
169
 
170
+ // Letter Spacing
171
+ LetterSpacingType.Default | .Normal | .ExtraSmall | .Small | .Large | .ExtraLarge
172
+
170
173
  // Opacity
171
174
  OpacityType._0 | ._10 | ._20 | ._25 | ._30 | ._40 | ._50 | ._60 | ._70 | ._75 | ._80 | ._90 | ._100
172
175
 
@@ -549,6 +552,18 @@ For inline text. Renders as `<span>` by default, configurable to any inline/head
549
552
  // Available categories:
550
553
  // LabelCategory.Div, Span, H1-H6, Abbr, Strong, Em, Code, Pre,
551
554
  // Blockquote, Mark, Del, Ins, Small, Sub, Sup, etc.
555
+
556
+ // fontWeight/fontSize with heading categories (H1-H6):
557
+ // When fontWeight or fontSize is set, VLabel adds CSS classes
558
+ // (.v-label-inherit-font-weight / .v-label-inherit-font-size)
559
+ // that apply `inherit` to the inner heading element, overriding
560
+ // browser defaults. Without these props, headings keep their
561
+ // browser default styles (e.g., H1 is bold and 2em).
562
+ <Den.Components.VLabel
563
+ category={Den.Components.LabelCategory.H1}
564
+ fontWeight={Den.Components.FontWeightType.Thin}
565
+ caption="Thin H1"
566
+ />
552
567
  ```
553
568
 
554
569
  ### VText (Block Text)
@@ -739,7 +754,14 @@ const [value, setValue] = useState('');
739
754
  downIcon={<DownArrowIcon />} // required
740
755
  upIcon={<UpArrowIcon />} // required
741
756
  enableClear
757
+ readOnly // renders as VLabel (non-interactive)
758
+ isSelectOnly // prevents manual typing, only allows selection from items
759
+ menuGap="4px" // gap between dropdown menu and trigger
760
+ menuBackgroundColor={Den.Components.ColorType.White}
761
+ menuZIndex={9999}
742
762
  handleChange={(value) => console.log(value)}
763
+ overWriteDropdownMenu={(items) => <CustomMenu items={items} />} // custom menu renderer
764
+ overWriteDropdownItem={(item) => <CustomItem item={item} />} // custom item renderer
743
765
  />
744
766
  // IDropdownItemData: { caption: string; value: string; icon?: JSX.Element }
745
767
 
@@ -990,7 +1012,9 @@ Den.Components.parseJWT(token) // returns IUserProfile
990
1012
  ```tsx
991
1013
  // Semantic HTML wrappers
992
1014
  <Den.Components.VHeader>...</Den.Components.VHeader>
1015
+ <Den.Components.VNav>...</Den.Components.VNav>
993
1016
  <Den.Components.VMain>...</Den.Components.VMain>
1017
+ <Den.Components.VAside>...</Den.Components.VAside>
994
1018
  <Den.Components.VFooter>...</Den.Components.VFooter>
995
1019
  <Den.Components.VSection>...</Den.Components.VSection>
996
1020
  <Den.Components.VHR />
@@ -296,6 +296,18 @@ $border-positions: "all", "top", "right", "bottom", "left", "except-top", "excep
296
296
  font-weight: var(#{v.$var-prefix}font-weight-#{$font-weight});
297
297
  }
298
298
  }
299
+ /* gap */
300
+ @each $gap, $value in v.$gaps {
301
+ .gap-#{$gap} {
302
+ gap: var(#{v.$var-prefix}gap-#{$gap});
303
+ }
304
+ }
305
+ /* letter-spacing */
306
+ @each $letter-spacing, $value in v.$letter-spacings {
307
+ .letter-spacing-#{$letter-spacing} {
308
+ letter-spacing: var(#{v.$var-prefix}letter-spacing-#{$letter-spacing});
309
+ }
310
+ }
299
311
  /* padding */
300
312
  @each $padding, $value in v.$paddings {
301
313
  .padding-#{$padding} {
@@ -75,6 +75,9 @@
75
75
  #{v.$var-prefix}font-size: #{v.$font-size};
76
76
  #{v.$var-prefix}line-height: #{v.$line-height};
77
77
  #{v.$var-prefix}letter-spacing: #{v.$letter-spacing};
78
+ @each $letter-spacing, $value in v.$letter-spacings {
79
+ #{v.$var-prefix}letter-spacing-#{$letter-spacing}: #{$value};
80
+ }
78
81
  #{v.$var-prefix}padding: #{v.$padding};
79
82
  #{v.$var-prefix}margin: #{v.$margin};
80
83
  #{v.$var-prefix}box-sizing: #{v.$box-sizing};
@@ -252,6 +252,18 @@ $scrollbar-radius: 8px;
252
252
  /*------------------*/
253
253
  $line-height: 1.4;
254
254
  $letter-spacing: 0.01em;
255
+ $letter-spacing-normal: 0.05em;
256
+ $letter-spacing-extra-small: $letter-spacing-normal * 0.5;
257
+ $letter-spacing-small: $letter-spacing-normal * 0.8;
258
+ $letter-spacing-large: $letter-spacing-normal * 1.4;
259
+ $letter-spacing-extra-large: $letter-spacing-normal * 2.4;
260
+ $letter-spacings: (
261
+ "normal": $letter-spacing-normal,
262
+ "extra-small": $letter-spacing-extra-small,
263
+ "small": $letter-spacing-small,
264
+ "large": $letter-spacing-large,
265
+ "extra-large": $letter-spacing-extra-large,
266
+ );
255
267
  $font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji",
256
268
  "Segoe UI Emoji", "Segoe UI Symbol";
257
269
  $font-size: 1em; // 16px * 0.875 = 14px;