@okshaun/components 0.3.4 → 0.4.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.
@@ -40,6 +40,14 @@
40
40
  "color]___[value:text.bold",
41
41
  "textStyle]___[value:mono.sm",
42
42
  "marginLeft]___[value:8",
43
+ "paddingInlineStart]___[value:3",
44
+ "paddingInlineEnd]___[value:3",
45
+ "paddingInlineStart]___[value:2",
46
+ "paddingInlineEnd]___[value:2",
47
+ "paddingInlineStart]___[value:5",
48
+ "paddingInlineEnd]___[value:5",
49
+ "paddingInlineStart]___[value:7",
50
+ "paddingInlineEnd]___[value:7",
43
51
  "flexDirection]___[value:column",
44
52
  "padding]___[value:16",
45
53
  "gap]___[value:4",
@@ -57,17 +65,8 @@
57
65
  "paddingInline]___[value:20]___[cond:md",
58
66
  "paddingInline]___[value:16]___[cond:sm",
59
67
  "color]___[value:gold.40",
60
- "paddingInlineStart]___[value:3",
61
- "paddingInlineEnd]___[value:3",
62
- "paddingInlineStart]___[value:2",
63
- "paddingInlineEnd]___[value:2",
64
- "paddingInlineStart]___[value:5",
65
- "paddingInlineEnd]___[value:5",
66
- "paddingInlineStart]___[value:7",
67
- "paddingInlineEnd]___[value:7",
68
68
  "gridColumn]___[value:1 / -1",
69
69
  "marginTop]___[value:32",
70
- "maxWidth]___[value:280",
71
70
  "color]___[value:text.subtle",
72
71
  "background]___[value:bg.neutral",
73
72
  "color]___[value:text.inverse",
@@ -166,6 +165,17 @@
166
165
  "marginRight]___[value:12",
167
166
  "marginRight]___[value:8",
168
167
  "marginLeft]___[value:12",
168
+ "width]___[value:280",
169
+ "width]___[value:320",
170
+ "padding]___[value:12",
171
+ "background]___[value:surface.sunken",
172
+ "borderRadius]___[value:8",
173
+ "color]___[value:text.subtlest",
174
+ "color]___[value:text.brand",
175
+ "cursor]___[value:pointer",
176
+ "fontWeight]___[value:medium",
177
+ "width]___[value:24",
178
+ "height]___[value:24",
169
179
  "opacity]___[value:0",
170
180
  "opacity]___[value:1",
171
181
  "position]___[value:absolute",
@@ -176,28 +186,23 @@
176
186
  "gap]___[value:12",
177
187
  "marginLeft]___[value:24",
178
188
  "background]___[value:transparent",
179
- "width]___[value:24",
180
- "height]___[value:24",
181
- "fill]___[value:current",
182
- "gap]___[value:2",
189
+ "flexWrap]___[value:wrap",
190
+ "padding]___[value:80",
191
+ "transition]___[value:transform 0.2s ease",
192
+ "transform]___[value:rotate(180deg)]___[cond:&[data-open=\"true\"]",
193
+ "offset]___[value:4",
183
194
  "width]___[value:20",
184
195
  "height]___[value:20",
185
- "color]___[value:gray.100",
186
- "color]___[value:gray.90]___[cond:_dark",
187
- "color]___[value:gray.90",
188
- "color]___[value:gray.10]___[cond:_dark",
189
- "textStyle]___[value:body-lg",
190
- "textStyle]___[value:body-md]___[cond:md",
191
- "textStyle]___[value:body-xs",
192
- "color]___[value:gray.60]___[cond:_dark",
196
+ "fill]___[value:current",
197
+ "gap]___[value:2",
193
198
  "font]___[value:mono",
199
+ "color]___[value:gray.90",
194
200
  "color]___[value:gold.50",
195
201
  "color]___[value:blue.50",
196
202
  "borderWidth]___[value:2",
197
203
  "color]___[value:transparent",
198
204
  "margin]___[value:8",
199
205
  "borderRadius]___[value:100",
200
- "cursor]___[value:pointer",
201
206
  "lineHeight]___[value:none",
202
207
  "width]___[value:14",
203
208
  "height]___[value:14",
@@ -220,7 +225,9 @@
220
225
  "background]___[value:darkNeutral.0]___[cond:_hover<___>&:before",
221
226
  "background]___[value:neutral.0]___[cond:_hover<___>&:before<___>_dark",
222
227
  "opacity]___[value:0.25]___[cond:_hover<___>&:before",
228
+ "color]___[value:gray.10]___[cond:_dark",
223
229
  "textStyle]___[value:body-md",
230
+ "color]___[value:gray.90]___[cond:_dark",
224
231
  "textStyle]___[value:body-sm"
225
232
  ],
226
233
  "recipes": {
@@ -231,23 +238,31 @@
231
238
  "bold]___[value:true]___[recipe:text",
232
239
  "underline]___[value:true]___[recipe:text"
233
240
  ],
234
- "heading": [
235
- "level]___[value:h2]___[recipe:heading",
236
- "level]___[value:h3]___[recipe:heading",
237
- "level]___[value:h1]___[recipe:heading",
238
- "level]___[value:h4]___[recipe:heading"
241
+ "menu": [
242
+ "size]___[value:default]___[recipe:menu",
243
+ "indicatorPosition]___[value:left]___[recipe:menu",
244
+ "size]___[value:compact]___[recipe:menu",
245
+ "size]___[value:comfortable]___[recipe:menu",
246
+ "indicatorPosition]___[value:right]___[recipe:menu"
239
247
  ],
240
248
  "button": [
241
- "appearance]___[value:primary]___[recipe:button",
242
- "size]___[value:default]___[recipe:button",
243
249
  "appearance]___[value:default]___[recipe:button",
250
+ "size]___[value:default]___[recipe:button",
251
+ "appearance]___[value:primary]___[recipe:button",
244
252
  "appearance]___[value:subtle]___[recipe:button",
245
253
  "appearance]___[value:hollow]___[recipe:button",
246
254
  "iconBefore]___[value:user]___[recipe:button",
247
255
  "iconAfter]___[value:caret-down]___[recipe:button",
248
256
  "iconAfter]___[value:plus]___[recipe:button",
249
257
  "iconBefore]___[value:aa-placeholder]___[recipe:button",
250
- "size]___[value:small]___[recipe:button"
258
+ "size]___[value:small]___[recipe:button",
259
+ "size]___[value:large]___[recipe:button"
260
+ ],
261
+ "heading": [
262
+ "level]___[value:h2]___[recipe:heading",
263
+ "level]___[value:h3]___[recipe:heading",
264
+ "level]___[value:h1]___[recipe:heading",
265
+ "level]___[value:h4]___[recipe:heading"
251
266
  ],
252
267
  "iconButton": [
253
268
  "appearance]___[value:subtle]___[recipe:iconButton",
@@ -326,10 +341,6 @@
326
341
  "position]___[value:right]___[recipe:tooltip",
327
342
  "caret]___[value:true]___[recipe:tooltip"
328
343
  ],
329
- "menu": [
330
- "iconPlacement]___[value:left]___[recipe:menu",
331
- "multiSelectType]___[value:checkbox]___[recipe:menu"
332
- ],
333
344
  "code": [],
334
345
  "radioInput": [],
335
346
  "toggle": [],
package/dist/preset.js CHANGED
@@ -187,6 +187,9 @@ const shadows = {
187
187
  },
188
188
  inset: {
189
189
  value: "inset 0px 2px 1px {colors.utility.shadowColor}, inset 0px 3px 2px {colors.utility.shadowColor}"
190
+ },
191
+ none: {
192
+ value: "0 0 0 {colors.transparent}"
190
193
  }
191
194
  };
192
195
  const aspectRatios = {
@@ -4386,12 +4389,12 @@ const textStyles = defineTextStyles({
4386
4389
  }
4387
4390
  });
4388
4391
  const conditions = {
4389
- hover: "&:is(:hover, [data-hover])",
4390
- focus: "&:is(:focus, [data-focus])",
4392
+ hover: "&:is(:hover, [data-hover=true])",
4393
+ focus: "&:is(:focus, [data-focus=true])",
4391
4394
  focusWithin: "&:focus-within",
4392
- focusVisible: "&:is(:focus-visible, [data-focus-visible])",
4395
+ focusVisible: "&:is(:focus-visible, [data-focus-visible]=true)",
4393
4396
  disabled: "&:is(:disabled, [disabled], [data-disabled], [aria-disabled=true])",
4394
- active: "&:is(:active, [data-active])",
4397
+ active: "&:is(:active, [data-active=true])",
4395
4398
  visited: "&:visited",
4396
4399
  target: "&:target",
4397
4400
  readOnly: "&:is(:read-only, [data-read-only], [aria-readonly=true])",
@@ -4450,7 +4453,7 @@ const conditions = {
4450
4453
  placeholder: "&::placeholder, &[data-placeholder]",
4451
4454
  placeholderShown: "&:is(:placeholder-shown, [data-placeholder-shown])",
4452
4455
  pressed: "&:is([aria-pressed=true], [data-pressed])",
4453
- selected: "&:is([aria-selected=true], [data-selected])",
4456
+ selected: "&:is([aria-selected=true], [data-selected=true])",
4454
4457
  grabbed: "&:is([aria-grabbed=true], [data-grabbed])",
4455
4458
  underValue: "&[data-state=under-value]",
4456
4459
  overValue: "&[data-state=over-value]",
@@ -6400,135 +6403,193 @@ const tooltipRecipe$1 = defineSlotRecipe({
6400
6403
  ]
6401
6404
  });
6402
6405
  const menuBase = {
6403
- wrapper: {
6404
- position: { base: "fixed", md: "relative" },
6405
- left: "0",
6406
- bottom: "0",
6407
- width: { base: "full", md: "260" },
6408
- bg: { base: "gray.10", _dark: "gray.80" },
6409
- py: { base: "12", md: "4" },
6410
- boxShadow: "medium",
6411
- borderRadius: {
6412
- base: "8",
6413
- md: "4"
6414
- },
6415
- borderBottomLeftRadius: { base: "0", md: "4" },
6416
- borderBottomRightRadius: { base: "0", md: "4" },
6417
- "& ~ svg": {
6418
- fill: { base: "gray.90", _dark: "gray.10" },
6419
- mr: "auto"
6420
- },
6421
- overflow: "hidden",
6422
- zIndex: 1
6423
- },
6424
- wrapperInner: {
6406
+ // Floating container
6407
+ menu: {
6425
6408
  display: "flex",
6426
6409
  flexDirection: "column",
6427
- "&[data-anim=slide-left]": { animation: "slideLeft" },
6428
- "&[data-anim=slide-right]": { animation: "slideRight" }
6410
+ minWidth: "200",
6411
+ maxWidth: "320",
6412
+ maxHeight: "400",
6413
+ overflowY: "auto",
6414
+ bg: "surface.overlay",
6415
+ borderRadius: "8",
6416
+ boxShadow: "medium",
6417
+ outline: "none",
6418
+ zIndex: 1e3
6429
6419
  },
6420
+ // Individual menu item row
6430
6421
  menuItem: {
6431
6422
  display: "flex",
6432
- gap: "4",
6433
- px: { base: "20", md: "12" },
6434
- outline: "2px solid transparent",
6435
- outlineOffset: "0",
6436
- "& a": {
6437
- display: "flex",
6438
- justifyContent: "space-between",
6439
- w: "full"
6440
- },
6423
+ alignItems: "flex-start",
6424
+ gap: "8",
6425
+ px: "12",
6426
+ py: "8",
6427
+ cursor: "pointer",
6428
+ outline: "none",
6429
+ transitionProperty: "background-color, color",
6430
+ transitionDuration: "fast",
6431
+ bg: "surface.overlay",
6441
6432
  _hover: {
6442
- bg: { base: "gray.2", _dark: "gray.100" },
6443
- cursor: "pointer"
6444
- },
6445
- _active: {
6446
- bg: { base: "gray.10", _dark: "gray.100" }
6433
+ bg: "surface.overlay.hovered"
6447
6434
  },
6448
6435
  _focusVisible: {
6449
- outlineColor: { base: "gray.90", _dark: "gray.10" },
6450
- outlineOffset: "-2"
6436
+ bg: "surface.overlay.hovered"
6437
+ },
6438
+ _active: {
6439
+ bg: "surface.overlay.hovered"
6451
6440
  },
6452
6441
  _disabled: {
6453
- opacity: 0.4,
6454
- _hover: {
6455
- bg: "transparent",
6456
- pointerEvents: "none",
6457
- cursor: "not-allowed"
6458
- },
6459
- _active: { bg: "transparent" },
6460
- _focusVisible: { outlineColor: "transparent" }
6442
+ opacity: 0.5,
6443
+ cursor: "not-allowed",
6444
+ pointerEvents: "none"
6461
6445
  },
6462
- "&[data-selected='true']": {
6463
- bg: { base: "gray.10", _dark: "gray.100" }
6446
+ _selected: {
6447
+ bg: "bg.selected"
6464
6448
  }
6465
6449
  },
6466
- sectionTitle: {
6467
- px: { base: "20", md: "12" },
6468
- pt: { base: "20", md: "12" },
6469
- pb: { base: "12", md: "4" }
6450
+ // Selection indicator area (checkmark or checkbox)
6451
+ menuItemIndicator: {
6452
+ display: "flex",
6453
+ alignItems: "center",
6454
+ justifyContent: "center",
6455
+ flexShrink: 0,
6456
+ w: "24",
6457
+ h: "24",
6458
+ color: "icon.selected"
6470
6459
  },
6471
- menuLabel: { fontWeight: "normal" },
6472
- parentLabel: {
6460
+ // Left icon area
6461
+ menuItemIconLeft: {
6473
6462
  display: "flex",
6474
- py: "4",
6475
- pr: "12",
6476
- pl: "4",
6477
- bg: { base: "gray.10", _dark: "gray.60" },
6478
- cursor: "pointer"
6479
- },
6480
- multiLevelIcon: { ml: "auto" },
6481
- dividerSection: {
6482
- py: { base: "8", md: "12" },
6483
- px: { base: "20", md: "12" }
6484
- },
6485
- spacerSection: { h: { base: "24", md: "16" } },
6486
- iconSection: { w: "24" },
6487
- toggleMenu: { py: "6" }
6463
+ alignItems: "center",
6464
+ justifyContent: "center",
6465
+ flexShrink: 0,
6466
+ w: "24",
6467
+ h: "24",
6468
+ color: "icon.decorative"
6469
+ },
6470
+ // Right icon area
6471
+ menuItemIconRight: {
6472
+ display: "flex",
6473
+ alignItems: "center",
6474
+ justifyContent: "center",
6475
+ flexShrink: 0,
6476
+ w: "24",
6477
+ h: "24",
6478
+ ml: "auto",
6479
+ color: "icon.subtlest"
6480
+ },
6481
+ // Content wrapper (label + description)
6482
+ menuItemContent: {
6483
+ display: "flex",
6484
+ flexDirection: "column",
6485
+ flex: 1,
6486
+ minWidth: 0
6487
+ // Enable text truncation
6488
+ },
6489
+ // Primary label
6490
+ menuItemLabel: {
6491
+ fontSize: "md",
6492
+ color: "text",
6493
+ fontFamily: "sans",
6494
+ fontWeight: "normal",
6495
+ // Highlight match styling for autocomplete
6496
+ "& mark": {
6497
+ bg: "bg.warning.hovered",
6498
+ color: "text.bold",
6499
+ borderRadius: "2"
6500
+ // px: '2',
6501
+ }
6502
+ },
6503
+ // Secondary description
6504
+ menuItemDescription: {
6505
+ fontSize: "xs",
6506
+ fontFamily: "sans",
6507
+ color: "text.subtlest"
6508
+ },
6509
+ // Divider between items/groups
6510
+ menuDivider: {
6511
+ h: "1",
6512
+ mx: "12",
6513
+ my: "4",
6514
+ bg: "border"
6515
+ },
6516
+ // Group container
6517
+ menuGroup: {
6518
+ display: "flex",
6519
+ flexDirection: "column"
6520
+ },
6521
+ // Group label
6522
+ menuGroupLabel: {
6523
+ fontSize: "xs",
6524
+ color: "text.subtlest",
6525
+ fontFamily: "sans",
6526
+ fontWeight: "medium",
6527
+ textTransform: "uppercase",
6528
+ letterSpacing: "wide",
6529
+ px: "12",
6530
+ pt: "16",
6531
+ pb: "4"
6532
+ }
6488
6533
  };
6489
6534
  const menuVariants = {
6490
- iconPlacement: {
6535
+ // Size variants
6536
+ size: {
6537
+ default: {
6538
+ menu: { minWidth: "200" },
6539
+ menuItem: { py: "8" }
6540
+ },
6541
+ compact: {
6542
+ menu: { minWidth: "160" },
6543
+ menuItem: { py: "4", px: "8" },
6544
+ menuItemIconLeft: { w: "20", h: "20" },
6545
+ menuItemIconRight: { w: "20", h: "20" },
6546
+ menuItemIndicator: { w: "20", h: "20" }
6547
+ },
6548
+ comfortable: {
6549
+ menu: { minWidth: "240" },
6550
+ menuItem: { py: "12", px: "16" }
6551
+ }
6552
+ },
6553
+ // Selection indicator position
6554
+ indicatorPosition: {
6491
6555
  left: {
6492
- menuItem: { flexDirection: "row" }
6556
+ menuItem: {
6557
+ flexDirection: "row"
6558
+ }
6493
6559
  },
6494
6560
  right: {
6495
6561
  menuItem: {
6496
- flexDirection: "row-reverse",
6497
- justifyContent: "space-between"
6562
+ flexDirection: "row"
6563
+ },
6564
+ menuItemIndicator: {
6565
+ order: 999,
6566
+ // Move to end
6567
+ ml: "auto"
6498
6568
  }
6499
6569
  }
6500
- },
6501
- multiSelectType: {
6502
- toggle: {
6503
- menuItem: { py: { base: "16", md: "6" }, gap: "12" }
6504
- },
6505
- checkbox: {
6506
- menuItem: { py: { base: "12", md: "4" } }
6507
- }
6508
6570
  }
6509
6571
  };
6510
6572
  const menuRecipe$1 = defineSlotRecipe({
6511
6573
  className: "menu",
6512
- jsx: ["Menu"],
6574
+ jsx: ["Menu", "MenuItem", "MenuTrigger", "MenuDivider", "MenuGroup"],
6513
6575
  slots: [
6514
- "wrapper",
6515
- "sectionTitle",
6576
+ "menu",
6516
6577
  "menuItem",
6517
- "menuLabel",
6518
- "menuDescription",
6519
- "parentLabel",
6520
- "multiLevelIcon",
6521
- "dividerSection",
6522
- "spacerSection",
6523
- "wrapperInner",
6524
- "iconSection",
6525
- "toggleMenu"
6578
+ "menuItemIndicator",
6579
+ "menuItemIconLeft",
6580
+ "menuItemIconRight",
6581
+ "menuItemContent",
6582
+ "menuItemLabel",
6583
+ "menuItemDescription",
6584
+ "menuDivider",
6585
+ "menuGroup",
6586
+ "menuGroupLabel"
6526
6587
  ],
6527
6588
  base: menuBase,
6528
6589
  variants: menuVariants,
6529
6590
  defaultVariants: {
6530
- iconPlacement: "left",
6531
- multiSelectType: "checkbox"
6591
+ size: "default",
6592
+ indicatorPosition: "left"
6532
6593
  }
6533
6594
  });
6534
6595
  const componentRecipes = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({