@okshaun/components 0.3.4 → 0.4.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.
@@ -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,25 @@
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
+ "transitionProperty]___[value:transform",
192
+ "transitionDuration]___[value:normal",
193
+ "transitionTimingFunction]___[value:default",
194
+ "transform]___[value:rotate(180deg)]___[cond:&[data-open=\"true\"]",
195
+ "offset]___[value:4",
183
196
  "width]___[value:20",
184
197
  "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",
198
+ "fill]___[value:current",
199
+ "gap]___[value:2",
193
200
  "font]___[value:mono",
201
+ "color]___[value:gray.90",
194
202
  "color]___[value:gold.50",
195
203
  "color]___[value:blue.50",
196
204
  "borderWidth]___[value:2",
197
205
  "color]___[value:transparent",
198
206
  "margin]___[value:8",
199
207
  "borderRadius]___[value:100",
200
- "cursor]___[value:pointer",
201
208
  "lineHeight]___[value:none",
202
209
  "width]___[value:14",
203
210
  "height]___[value:14",
@@ -220,7 +227,9 @@
220
227
  "background]___[value:darkNeutral.0]___[cond:_hover<___>&:before",
221
228
  "background]___[value:neutral.0]___[cond:_hover<___>&:before<___>_dark",
222
229
  "opacity]___[value:0.25]___[cond:_hover<___>&:before",
230
+ "color]___[value:gray.10]___[cond:_dark",
223
231
  "textStyle]___[value:body-md",
232
+ "color]___[value:gray.90]___[cond:_dark",
224
233
  "textStyle]___[value:body-sm"
225
234
  ],
226
235
  "recipes": {
@@ -231,23 +240,31 @@
231
240
  "bold]___[value:true]___[recipe:text",
232
241
  "underline]___[value:true]___[recipe:text"
233
242
  ],
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"
243
+ "menu": [
244
+ "size]___[value:default]___[recipe:menu",
245
+ "indicatorPosition]___[value:left]___[recipe:menu",
246
+ "size]___[value:compact]___[recipe:menu",
247
+ "size]___[value:comfortable]___[recipe:menu",
248
+ "indicatorPosition]___[value:right]___[recipe:menu"
239
249
  ],
240
250
  "button": [
241
- "appearance]___[value:primary]___[recipe:button",
242
- "size]___[value:default]___[recipe:button",
243
251
  "appearance]___[value:default]___[recipe:button",
252
+ "size]___[value:default]___[recipe:button",
253
+ "appearance]___[value:primary]___[recipe:button",
244
254
  "appearance]___[value:subtle]___[recipe:button",
245
255
  "appearance]___[value:hollow]___[recipe:button",
246
256
  "iconBefore]___[value:user]___[recipe:button",
247
257
  "iconAfter]___[value:caret-down]___[recipe:button",
248
258
  "iconAfter]___[value:plus]___[recipe:button",
249
259
  "iconBefore]___[value:aa-placeholder]___[recipe:button",
250
- "size]___[value:small]___[recipe:button"
260
+ "size]___[value:small]___[recipe:button",
261
+ "size]___[value:large]___[recipe:button"
262
+ ],
263
+ "heading": [
264
+ "level]___[value:h2]___[recipe:heading",
265
+ "level]___[value:h3]___[recipe:heading",
266
+ "level]___[value:h1]___[recipe:heading",
267
+ "level]___[value:h4]___[recipe:heading"
251
268
  ],
252
269
  "iconButton": [
253
270
  "appearance]___[value:subtle]___[recipe:iconButton",
@@ -326,10 +343,6 @@
326
343
  "position]___[value:right]___[recipe:tooltip",
327
344
  "caret]___[value:true]___[recipe:tooltip"
328
345
  ],
329
- "menu": [
330
- "iconPlacement]___[value:left]___[recipe:menu",
331
- "multiSelectType]___[value:checkbox]___[recipe:menu"
332
- ],
333
346
  "code": [],
334
347
  "radioInput": [],
335
348
  "toggle": [],
package/dist/preset.js CHANGED
@@ -158,6 +158,44 @@ const durations = {
158
158
  value: "500ms"
159
159
  }
160
160
  };
161
+ const transitions$1 = {
162
+ none: {
163
+ value: "none"
164
+ },
165
+ all: {
166
+ value: "all"
167
+ },
168
+ common: {
169
+ value: "background-color, border-color, color, fill, stroke, opacity, box-shadow, transform"
170
+ },
171
+ colors: {
172
+ value: "background-color, border-color, color, fill, stroke"
173
+ },
174
+ opacity: {
175
+ value: "opacity"
176
+ },
177
+ shadow: {
178
+ value: "box-shadow"
179
+ },
180
+ transform: {
181
+ value: "transform"
182
+ },
183
+ position: {
184
+ value: "top, right, bottom, left"
185
+ },
186
+ size: {
187
+ value: "width, height"
188
+ },
189
+ spacing: {
190
+ value: "margin, padding"
191
+ },
192
+ outline: {
193
+ value: "outline, outline-color, outline-offset"
194
+ },
195
+ border: {
196
+ value: "border, border-color"
197
+ }
198
+ };
161
199
  const radii = {
162
200
  "0": { value: "{sizes.0}" },
163
201
  "1": { value: "{sizes.1}" },
@@ -187,6 +225,9 @@ const shadows = {
187
225
  },
188
226
  inset: {
189
227
  value: "inset 0px 2px 1px {colors.utility.shadowColor}, inset 0px 3px 2px {colors.utility.shadowColor}"
228
+ },
229
+ none: {
230
+ value: "0 0 0 {colors.transparent}"
190
231
  }
191
232
  };
192
233
  const aspectRatios = {
@@ -232,12 +273,48 @@ const blurs = {
232
273
  value: "64px"
233
274
  }
234
275
  };
276
+ const borders = {
277
+ none: {
278
+ value: "none"
279
+ },
280
+ subtle: {
281
+ value: "1px solid {colors.border}"
282
+ },
283
+ default: {
284
+ value: "1px solid {colors.border}"
285
+ },
286
+ strong: {
287
+ value: "2px solid {colors.border.bold}"
288
+ },
289
+ input: {
290
+ value: "1px solid {colors.border.input}"
291
+ },
292
+ focused: {
293
+ value: "2px solid {colors.border.focused}"
294
+ },
295
+ selected: {
296
+ value: "2px solid {colors.border.selected}"
297
+ },
298
+ success: {
299
+ value: "1px solid {colors.border.success}"
300
+ },
301
+ warning: {
302
+ value: "1px solid {colors.border.warning}"
303
+ },
304
+ danger: {
305
+ value: "1px solid {colors.border.danger}"
306
+ },
307
+ info: {
308
+ value: "1px solid {colors.border.info}"
309
+ }
310
+ };
235
311
  const tokens = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
236
312
  __proto__: null,
237
313
  animations,
238
314
  aspectRatios,
239
315
  blurs,
240
316
  borderWidths,
317
+ borders,
241
318
  breakpoints: breakpoints$1,
242
319
  colors: colors$1,
243
320
  containerSizes,
@@ -253,6 +330,7 @@ const tokens = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
253
330
  radii,
254
331
  shadows,
255
332
  sizes,
333
+ transitions: transitions$1,
256
334
  utilitySizes
257
335
  }, Symbol.toStringTag, { value: "Module" }));
258
336
  var conditions$1 = {
@@ -4386,12 +4464,12 @@ const textStyles = defineTextStyles({
4386
4464
  }
4387
4465
  });
4388
4466
  const conditions = {
4389
- hover: "&:is(:hover, [data-hover])",
4390
- focus: "&:is(:focus, [data-focus])",
4467
+ hover: "&:is(:hover, [data-hover=true])",
4468
+ focus: "&:is(:focus, [data-focus=true])",
4391
4469
  focusWithin: "&:focus-within",
4392
- focusVisible: "&:is(:focus-visible, [data-focus-visible])",
4470
+ focusVisible: "&:is(:focus-visible, [data-focus-visible]=true)",
4393
4471
  disabled: "&:is(:disabled, [disabled], [data-disabled], [aria-disabled=true])",
4394
- active: "&:is(:active, [data-active])",
4472
+ active: "&:is(:active, [data-active=true])",
4395
4473
  visited: "&:visited",
4396
4474
  target: "&:target",
4397
4475
  readOnly: "&:is(:read-only, [data-read-only], [aria-readonly=true])",
@@ -4450,7 +4528,7 @@ const conditions = {
4450
4528
  placeholder: "&::placeholder, &[data-placeholder]",
4451
4529
  placeholderShown: "&:is(:placeholder-shown, [data-placeholder-shown])",
4452
4530
  pressed: "&:is([aria-pressed=true], [data-pressed])",
4453
- selected: "&:is([aria-selected=true], [data-selected])",
4531
+ selected: "&:is([aria-selected=true], [data-selected=true])",
4454
4532
  grabbed: "&:is([aria-grabbed=true], [data-grabbed])",
4455
4533
  underValue: "&[data-state=under-value]",
4456
4534
  overValue: "&[data-state=over-value]",
@@ -6400,135 +6478,193 @@ const tooltipRecipe$1 = defineSlotRecipe({
6400
6478
  ]
6401
6479
  });
6402
6480
  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: {
6481
+ // Floating container
6482
+ menu: {
6425
6483
  display: "flex",
6426
6484
  flexDirection: "column",
6427
- "&[data-anim=slide-left]": { animation: "slideLeft" },
6428
- "&[data-anim=slide-right]": { animation: "slideRight" }
6485
+ minWidth: "200",
6486
+ maxWidth: "320",
6487
+ maxHeight: "400",
6488
+ overflowY: "auto",
6489
+ bg: "surface.overlay",
6490
+ borderRadius: "8",
6491
+ boxShadow: "medium",
6492
+ outline: "none",
6493
+ zIndex: 1e3
6429
6494
  },
6495
+ // Individual menu item row
6430
6496
  menuItem: {
6431
6497
  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
- },
6498
+ alignItems: "flex-start",
6499
+ gap: "8",
6500
+ px: "12",
6501
+ py: "8",
6502
+ cursor: "pointer",
6503
+ outline: "none",
6504
+ transitionProperty: "background-color, color",
6505
+ transitionDuration: "fast",
6506
+ bg: "surface.overlay",
6441
6507
  _hover: {
6442
- bg: { base: "gray.2", _dark: "gray.100" },
6443
- cursor: "pointer"
6444
- },
6445
- _active: {
6446
- bg: { base: "gray.10", _dark: "gray.100" }
6508
+ bg: "surface.overlay.hovered"
6447
6509
  },
6448
6510
  _focusVisible: {
6449
- outlineColor: { base: "gray.90", _dark: "gray.10" },
6450
- outlineOffset: "-2"
6511
+ bg: "surface.overlay.hovered"
6512
+ },
6513
+ _active: {
6514
+ bg: "surface.overlay.hovered"
6451
6515
  },
6452
6516
  _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" }
6517
+ opacity: 0.5,
6518
+ cursor: "not-allowed",
6519
+ pointerEvents: "none"
6461
6520
  },
6462
- "&[data-selected='true']": {
6463
- bg: { base: "gray.10", _dark: "gray.100" }
6521
+ _selected: {
6522
+ bg: "bg.selected"
6464
6523
  }
6465
6524
  },
6466
- sectionTitle: {
6467
- px: { base: "20", md: "12" },
6468
- pt: { base: "20", md: "12" },
6469
- pb: { base: "12", md: "4" }
6525
+ // Selection indicator area (checkmark or checkbox)
6526
+ menuItemIndicator: {
6527
+ display: "flex",
6528
+ alignItems: "center",
6529
+ justifyContent: "center",
6530
+ flexShrink: 0,
6531
+ w: "24",
6532
+ h: "24",
6533
+ color: "icon.selected"
6534
+ },
6535
+ // Left icon area
6536
+ menuItemIconLeft: {
6537
+ display: "flex",
6538
+ alignItems: "center",
6539
+ justifyContent: "center",
6540
+ flexShrink: 0,
6541
+ w: "24",
6542
+ h: "24",
6543
+ color: "icon.decorative"
6544
+ },
6545
+ // Right icon area
6546
+ menuItemIconRight: {
6547
+ display: "flex",
6548
+ alignItems: "center",
6549
+ justifyContent: "center",
6550
+ flexShrink: 0,
6551
+ w: "24",
6552
+ h: "24",
6553
+ ml: "auto",
6554
+ color: "icon.subtlest"
6470
6555
  },
6471
- menuLabel: { fontWeight: "normal" },
6472
- parentLabel: {
6556
+ // Content wrapper (label + description)
6557
+ menuItemContent: {
6473
6558
  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" }
6559
+ flexDirection: "column",
6560
+ flex: 1,
6561
+ minWidth: 0
6562
+ // Enable text truncation
6563
+ },
6564
+ // Primary label
6565
+ menuItemLabel: {
6566
+ fontSize: "md",
6567
+ color: "text",
6568
+ fontFamily: "sans",
6569
+ fontWeight: "normal",
6570
+ // Highlight match styling for autocomplete
6571
+ "& mark": {
6572
+ bg: "bg.warning.hovered",
6573
+ color: "text.bold",
6574
+ borderRadius: "2"
6575
+ // px: '2',
6576
+ }
6577
+ },
6578
+ // Secondary description
6579
+ menuItemDescription: {
6580
+ fontSize: "xs",
6581
+ fontFamily: "sans",
6582
+ color: "text.subtlest"
6583
+ },
6584
+ // Divider between items/groups
6585
+ menuDivider: {
6586
+ h: "1",
6587
+ mx: "12",
6588
+ my: "4",
6589
+ bg: "border"
6590
+ },
6591
+ // Group container
6592
+ menuGroup: {
6593
+ display: "flex",
6594
+ flexDirection: "column"
6595
+ },
6596
+ // Group label
6597
+ menuGroupLabel: {
6598
+ fontSize: "xs",
6599
+ color: "text.subtlest",
6600
+ fontFamily: "sans",
6601
+ fontWeight: "medium",
6602
+ textTransform: "uppercase",
6603
+ letterSpacing: "wide",
6604
+ px: "12",
6605
+ pt: "16",
6606
+ pb: "4"
6607
+ }
6488
6608
  };
6489
6609
  const menuVariants = {
6490
- iconPlacement: {
6610
+ // Size variants
6611
+ size: {
6612
+ default: {
6613
+ menu: { minWidth: "200" },
6614
+ menuItem: { py: "8" }
6615
+ },
6616
+ compact: {
6617
+ menu: { minWidth: "160" },
6618
+ menuItem: { py: "4", px: "8" },
6619
+ menuItemIconLeft: { w: "20", h: "20" },
6620
+ menuItemIconRight: { w: "20", h: "20" },
6621
+ menuItemIndicator: { w: "20", h: "20" }
6622
+ },
6623
+ comfortable: {
6624
+ menu: { minWidth: "240" },
6625
+ menuItem: { py: "12", px: "16" }
6626
+ }
6627
+ },
6628
+ // Selection indicator position
6629
+ indicatorPosition: {
6491
6630
  left: {
6492
- menuItem: { flexDirection: "row" }
6631
+ menuItem: {
6632
+ flexDirection: "row"
6633
+ }
6493
6634
  },
6494
6635
  right: {
6495
6636
  menuItem: {
6496
- flexDirection: "row-reverse",
6497
- justifyContent: "space-between"
6637
+ flexDirection: "row"
6638
+ },
6639
+ menuItemIndicator: {
6640
+ order: 999,
6641
+ // Move to end
6642
+ ml: "auto"
6498
6643
  }
6499
6644
  }
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
6645
  }
6509
6646
  };
6510
6647
  const menuRecipe$1 = defineSlotRecipe({
6511
6648
  className: "menu",
6512
- jsx: ["Menu"],
6649
+ jsx: ["Menu", "MenuItem", "MenuTrigger", "MenuDivider", "MenuGroup"],
6513
6650
  slots: [
6514
- "wrapper",
6515
- "sectionTitle",
6651
+ "menu",
6516
6652
  "menuItem",
6517
- "menuLabel",
6518
- "menuDescription",
6519
- "parentLabel",
6520
- "multiLevelIcon",
6521
- "dividerSection",
6522
- "spacerSection",
6523
- "wrapperInner",
6524
- "iconSection",
6525
- "toggleMenu"
6653
+ "menuItemIndicator",
6654
+ "menuItemIconLeft",
6655
+ "menuItemIconRight",
6656
+ "menuItemContent",
6657
+ "menuItemLabel",
6658
+ "menuItemDescription",
6659
+ "menuDivider",
6660
+ "menuGroup",
6661
+ "menuGroupLabel"
6526
6662
  ],
6527
6663
  base: menuBase,
6528
6664
  variants: menuVariants,
6529
6665
  defaultVariants: {
6530
- iconPlacement: "left",
6531
- multiSelectType: "checkbox"
6666
+ size: "default",
6667
+ indicatorPosition: "left"
6532
6668
  }
6533
6669
  });
6534
6670
  const componentRecipes = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
@@ -6658,7 +6794,12 @@ const okshaunPreset = definePreset$1({
6658
6794
  }
6659
6795
  },
6660
6796
  utilities: {
6661
- ...pandaBasePresetUtilities
6797
+ ...pandaBasePresetUtilities,
6798
+ // Custom utility for transitionProperty that uses our transition tokens
6799
+ transitionProperty: {
6800
+ className: "transition-property",
6801
+ values: "transitions"
6802
+ }
6662
6803
  },
6663
6804
  // Global styles
6664
6805
  globalCss: {